@stackone/malachite 2.21.0 → 2.23.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/dist/ShadowRootWrapper.js +83 -0
- package/dist/ShadowRootWrapper.js.map +1 -0
- package/dist/assets/icons/account.svg.js +6 -0
- package/dist/assets/icons/account.svg.js.map +1 -0
- package/dist/assets/icons/accounts.svg.js +6 -0
- package/dist/assets/icons/accounts.svg.js.map +1 -0
- package/dist/assets/icons/add.svg.js +6 -0
- package/dist/assets/icons/add.svg.js.map +1 -0
- package/dist/assets/icons/advanced_logs.svg.js +6 -0
- package/dist/assets/icons/advanced_logs.svg.js.map +1 -0
- package/dist/assets/icons/api_keys.svg.js +6 -0
- package/dist/assets/icons/api_keys.svg.js.map +1 -0
- package/dist/assets/icons/archive.svg.js +6 -0
- package/dist/assets/icons/archive.svg.js.map +1 -0
- package/dist/assets/icons/arrow_left.svg.js +6 -0
- package/dist/assets/icons/arrow_left.svg.js.map +1 -0
- package/dist/assets/icons/arrow_up.svg.js +6 -0
- package/dist/assets/icons/arrow_up.svg.js.map +1 -0
- package/dist/assets/icons/arrow_up_right.svg.js +6 -0
- package/dist/assets/icons/arrow_up_right.svg.js.map +1 -0
- package/dist/assets/icons/authentication.svg.js +6 -0
- package/dist/assets/icons/authentication.svg.js.map +1 -0
- package/dist/assets/icons/bell.svg.js +6 -0
- package/dist/assets/icons/bell.svg.js.map +1 -0
- package/dist/assets/icons/bell_slash.svg.js +6 -0
- package/dist/assets/icons/bell_slash.svg.js.map +1 -0
- package/dist/assets/icons/bi_directional_arrows.svg.js +6 -0
- package/dist/assets/icons/bi_directional_arrows.svg.js.map +1 -0
- package/dist/assets/icons/card.svg.js +6 -0
- package/dist/assets/icons/card.svg.js.map +1 -0
- package/dist/assets/icons/caret_down.svg.js +6 -0
- package/dist/assets/icons/caret_down.svg.js.map +1 -0
- package/dist/assets/icons/caret_left.svg.js +6 -0
- package/dist/assets/icons/caret_left.svg.js.map +1 -0
- package/dist/assets/icons/caret_right.svg.js +6 -0
- package/dist/assets/icons/caret_right.svg.js.map +1 -0
- package/dist/assets/icons/caret_up.svg.js +6 -0
- package/dist/assets/icons/caret_up.svg.js.map +1 -0
- package/dist/assets/icons/change_password.svg.js +6 -0
- package/dist/assets/icons/change_password.svg.js.map +1 -0
- package/dist/assets/icons/check.svg.js +6 -0
- package/dist/assets/icons/check.svg.js.map +1 -0
- package/dist/assets/icons/check_circle_filled.svg.js +6 -0
- package/dist/assets/icons/check_circle_filled.svg.js.map +1 -0
- package/dist/assets/icons/checkmark.svg.js +6 -0
- package/dist/assets/icons/checkmark.svg.js.map +1 -0
- package/dist/assets/icons/clear.svg.js +6 -0
- package/dist/assets/icons/clear.svg.js.map +1 -0
- package/dist/assets/icons/close.svg.js +6 -0
- package/dist/assets/icons/close.svg.js.map +1 -0
- package/dist/assets/icons/code.svg.js +6 -0
- package/dist/assets/icons/code.svg.js.map +1 -0
- package/dist/assets/icons/command_key.svg.js +6 -0
- package/dist/assets/icons/command_key.svg.js.map +1 -0
- package/dist/assets/icons/copy.svg.js +6 -0
- package/dist/assets/icons/copy.svg.js.map +1 -0
- package/dist/assets/icons/csv.svg.js +6 -0
- package/dist/assets/icons/csv.svg.js.map +1 -0
- package/dist/assets/icons/custom_field.svg.js +6 -0
- package/dist/assets/icons/custom_field.svg.js.map +1 -0
- package/dist/assets/icons/dashboard.svg.js +6 -0
- package/dist/assets/icons/dashboard.svg.js.map +1 -0
- package/dist/assets/icons/date.svg.js +6 -0
- package/dist/assets/icons/date.svg.js.map +1 -0
- package/dist/assets/icons/disable.svg.js +6 -0
- package/dist/assets/icons/disable.svg.js.map +1 -0
- package/dist/assets/icons/disabled.svg.js +6 -0
- package/dist/assets/icons/disabled.svg.js.map +1 -0
- package/dist/assets/icons/dismiss.svg.js +6 -0
- package/dist/assets/icons/dismiss.svg.js.map +1 -0
- package/dist/assets/icons/doc.svg.js +6 -0
- package/dist/assets/icons/doc.svg.js.map +1 -0
- package/dist/assets/icons/double_check.svg.js +6 -0
- package/dist/assets/icons/double_check.svg.js.map +1 -0
- package/dist/assets/icons/download.svg.js +6 -0
- package/dist/assets/icons/download.svg.js.map +1 -0
- package/dist/assets/icons/edit.svg.js +6 -0
- package/dist/assets/icons/edit.svg.js.map +1 -0
- package/dist/assets/icons/enable.svg.js +6 -0
- package/dist/assets/icons/enable.svg.js.map +1 -0
- package/dist/assets/icons/enum.svg.js +6 -0
- package/dist/assets/icons/enum.svg.js.map +1 -0
- package/dist/assets/icons/error_circle_filled.svg.js +6 -0
- package/dist/assets/icons/error_circle_filled.svg.js.map +1 -0
- package/dist/assets/icons/expand.svg.js +6 -0
- package/dist/assets/icons/expand.svg.js.map +1 -0
- package/dist/assets/icons/eye-closed.svg.js +6 -0
- package/dist/assets/icons/eye-closed.svg.js.map +1 -0
- package/dist/assets/icons/eye.svg.js +6 -0
- package/dist/assets/icons/eye.svg.js.map +1 -0
- package/dist/assets/icons/field_mapping.svg.js +6 -0
- package/dist/assets/icons/field_mapping.svg.js.map +1 -0
- package/dist/assets/icons/filled_caret_down.svg.js +6 -0
- package/dist/assets/icons/filled_caret_down.svg.js.map +1 -0
- package/dist/assets/icons/filled_caret_right.svg.js +6 -0
- package/dist/assets/icons/filled_caret_right.svg.js.map +1 -0
- package/dist/assets/icons/filter.svg.js +6 -0
- package/dist/assets/icons/filter.svg.js.map +1 -0
- package/dist/assets/icons/forbidden.svg.js +6 -0
- package/dist/assets/icons/forbidden.svg.js.map +1 -0
- package/dist/assets/icons/forward_arrow.svg.js +6 -0
- package/dist/assets/icons/forward_arrow.svg.js.map +1 -0
- package/dist/assets/icons/globe.svg.js +6 -0
- package/dist/assets/icons/globe.svg.js.map +1 -0
- package/dist/assets/icons/inbox.svg.js +6 -0
- package/dist/assets/icons/inbox.svg.js.map +1 -0
- package/dist/assets/icons/info.svg.js +6 -0
- package/dist/assets/icons/info.svg.js.map +1 -0
- package/dist/assets/icons/info_circle_filled.svg.js +6 -0
- package/dist/assets/icons/info_circle_filled.svg.js.map +1 -0
- package/dist/assets/icons/info_filled.svg.js +6 -0
- package/dist/assets/icons/info_filled.svg.js.map +1 -0
- package/dist/assets/icons/integrations.svg.js +6 -0
- package/dist/assets/icons/integrations.svg.js.map +1 -0
- package/dist/assets/icons/key.svg.js +6 -0
- package/dist/assets/icons/key.svg.js.map +1 -0
- package/dist/assets/icons/library.svg.js +6 -0
- package/dist/assets/icons/library.svg.js.map +1 -0
- package/dist/assets/icons/logs.svg.js +6 -0
- package/dist/assets/icons/logs.svg.js.map +1 -0
- package/dist/assets/icons/magic_wand.svg.js +6 -0
- package/dist/assets/icons/magic_wand.svg.js.map +1 -0
- package/dist/assets/icons/manage_team.svg.js +6 -0
- package/dist/assets/icons/manage_team.svg.js.map +1 -0
- package/dist/assets/icons/manual_native_webhook.svg.js +6 -0
- package/dist/assets/icons/manual_native_webhook.svg.js.map +1 -0
- package/dist/assets/icons/mark_read.svg.js +6 -0
- package/dist/assets/icons/mark_read.svg.js.map +1 -0
- package/dist/assets/icons/mark_unread.svg.js +6 -0
- package/dist/assets/icons/mark_unread.svg.js.map +1 -0
- package/dist/assets/icons/members.svg.js +6 -0
- package/dist/assets/icons/members.svg.js.map +1 -0
- package/dist/assets/icons/modal.svg.js +6 -0
- package/dist/assets/icons/modal.svg.js.map +1 -0
- package/dist/assets/icons/more_horizontal.svg.js +6 -0
- package/dist/assets/icons/more_horizontal.svg.js.map +1 -0
- package/dist/assets/icons/more_vertical.svg.js +6 -0
- package/dist/assets/icons/more_vertical.svg.js.map +1 -0
- package/dist/assets/icons/navbar_collapse.svg.js +6 -0
- package/dist/assets/icons/navbar_collapse.svg.js.map +1 -0
- package/dist/assets/icons/navbar_expand.svg.js +6 -0
- package/dist/assets/icons/navbar_expand.svg.js.map +1 -0
- package/dist/assets/icons/not_found.svg.js +6 -0
- package/dist/assets/icons/not_found.svg.js.map +1 -0
- package/dist/assets/icons/organization.svg.js +6 -0
- package/dist/assets/icons/organization.svg.js.map +1 -0
- package/dist/assets/icons/pin.svg.js +6 -0
- package/dist/assets/icons/pin.svg.js.map +1 -0
- package/dist/assets/icons/plus.svg.js +6 -0
- package/dist/assets/icons/plus.svg.js.map +1 -0
- package/dist/assets/icons/preview.svg.js +6 -0
- package/dist/assets/icons/preview.svg.js.map +1 -0
- package/dist/assets/icons/programmatic_native_webhook.svg.js +6 -0
- package/dist/assets/icons/programmatic_native_webhook.svg.js.map +1 -0
- package/dist/assets/icons/pulse.svg.js +6 -0
- package/dist/assets/icons/pulse.svg.js.map +1 -0
- package/dist/assets/icons/refresh.svg.js +6 -0
- package/dist/assets/icons/refresh.svg.js.map +1 -0
- package/dist/assets/icons/reject.svg.js +6 -0
- package/dist/assets/icons/reject.svg.js.map +1 -0
- package/dist/assets/icons/reload.svg.js +6 -0
- package/dist/assets/icons/reload.svg.js.map +1 -0
- package/dist/assets/icons/reply.svg.js +6 -0
- package/dist/assets/icons/reply.svg.js.map +1 -0
- package/dist/assets/icons/required_field_indicator.svg.js +6 -0
- package/dist/assets/icons/required_field_indicator.svg.js.map +1 -0
- package/dist/assets/icons/search.svg.js +6 -0
- package/dist/assets/icons/search.svg.js.map +1 -0
- package/dist/assets/icons/security.svg.js +6 -0
- package/dist/assets/icons/security.svg.js.map +1 -0
- package/dist/assets/icons/send.svg.js +6 -0
- package/dist/assets/icons/send.svg.js.map +1 -0
- package/dist/assets/icons/settings.svg.js +6 -0
- package/dist/assets/icons/settings.svg.js.map +1 -0
- package/dist/assets/icons/sign_out.svg.js +6 -0
- package/dist/assets/icons/sign_out.svg.js.map +1 -0
- package/dist/assets/icons/slider.svg.js +6 -0
- package/dist/assets/icons/slider.svg.js.map +1 -0
- package/dist/assets/icons/sort.svg.js +6 -0
- package/dist/assets/icons/sort.svg.js.map +1 -0
- package/dist/assets/icons/source.svg.js +6 -0
- package/dist/assets/icons/source.svg.js.map +1 -0
- package/dist/assets/icons/sparkle.svg.js +6 -0
- package/dist/assets/icons/sparkle.svg.js.map +1 -0
- package/dist/assets/icons/star.svg.js +6 -0
- package/dist/assets/icons/star.svg.js.map +1 -0
- package/dist/assets/icons/step_current.svg.js +6 -0
- package/dist/assets/icons/step_current.svg.js.map +1 -0
- package/dist/assets/icons/step_upcoming.svg.js +6 -0
- package/dist/assets/icons/step_upcoming.svg.js.map +1 -0
- package/dist/assets/icons/synthetic_webhook.svg.js +6 -0
- package/dist/assets/icons/synthetic_webhook.svg.js.map +1 -0
- package/dist/assets/icons/thumbs_down.svg.js +6 -0
- package/dist/assets/icons/thumbs_down.svg.js.map +1 -0
- package/dist/assets/icons/thumbs_up.svg.js +6 -0
- package/dist/assets/icons/thumbs_up.svg.js.map +1 -0
- package/dist/assets/icons/trash.svg.js +6 -0
- package/dist/assets/icons/trash.svg.js.map +1 -0
- package/dist/assets/icons/triangle_down.svg.js +6 -0
- package/dist/assets/icons/triangle_down.svg.js.map +1 -0
- package/dist/assets/icons/triangle_right.svg.js +6 -0
- package/dist/assets/icons/triangle_right.svg.js.map +1 -0
- package/dist/assets/icons/unarchive.svg.js +6 -0
- package/dist/assets/icons/unarchive.svg.js.map +1 -0
- package/dist/assets/icons/upload.svg.js +6 -0
- package/dist/assets/icons/upload.svg.js.map +1 -0
- package/dist/assets/icons/warning_circle_filled.svg.js +6 -0
- package/dist/assets/icons/warning_circle_filled.svg.js.map +1 -0
- package/dist/assets/icons/warning_triangle.svg.js +6 -0
- package/dist/assets/icons/warning_triangle.svg.js.map +1 -0
- package/dist/assets/icons/webhook-events.svg.js +6 -0
- package/dist/assets/icons/webhook-events.svg.js.map +1 -0
- package/dist/assets/icons/webhook.svg.js +6 -0
- package/dist/assets/icons/webhook.svg.js.map +1 -0
- package/dist/assets/icons/webhook_signing_secret.svg.js +6 -0
- package/dist/assets/icons/webhook_signing_secret.svg.js.map +1 -0
- package/dist/assets/logo-stackone-desaturated.png.js +5 -0
- package/dist/assets/logo-stackone-desaturated.png.js.map +1 -0
- package/dist/components/Accordion.js +105 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/ActionBar.js +66 -0
- package/dist/components/ActionBar.js.map +1 -0
- package/dist/components/ActionMenu.js +174 -0
- package/dist/components/ActionMenu.js.map +1 -0
- package/dist/components/Alert.js +136 -0
- package/dist/components/Alert.js.map +1 -0
- package/dist/components/AppLogo.js +43 -0
- package/dist/components/AppLogo.js.map +1 -0
- package/dist/components/Avatar.js +61 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/BaseFormComponent.js +116 -0
- package/dist/components/BaseFormComponent.js.map +1 -0
- package/dist/components/Breadcrumbs.js +106 -0
- package/dist/components/Breadcrumbs.js.map +1 -0
- package/dist/components/Button.js +227 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/ButtonList.js +40 -0
- package/dist/components/ButtonList.js.map +1 -0
- package/dist/components/Card.js +109 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/CardStrip.js +454 -0
- package/dist/components/CardStrip.js.map +1 -0
- package/dist/components/ChangeReview/ChangeReviewItem.js +129 -0
- package/dist/components/ChangeReview/ChangeReviewItem.js.map +1 -0
- package/dist/components/ChangeReview/ChangeReviewJump.js +27 -0
- package/dist/components/ChangeReview/ChangeReviewJump.js.map +1 -0
- package/dist/components/ChangeReview/ChangeReviewRemoved.js +37 -0
- package/dist/components/ChangeReview/ChangeReviewRemoved.js.map +1 -0
- package/dist/components/ChangeReview/ChangeReviewSummary.js +56 -0
- package/dist/components/ChangeReview/ChangeReviewSummary.js.map +1 -0
- package/dist/components/ChangeReview/index.js +15 -0
- package/dist/components/ChangeReview/index.js.map +1 -0
- package/dist/components/Chat/ChatComposer.js +100 -0
- package/dist/components/Chat/ChatComposer.js.map +1 -0
- package/dist/components/Chat/ChatComposerChip.js +28 -0
- package/dist/components/Chat/ChatComposerChip.js.map +1 -0
- package/dist/components/Chat/ChatContext.js +55 -0
- package/dist/components/Chat/ChatContext.js.map +1 -0
- package/dist/components/Chat/ChatContextMeter.js +30 -0
- package/dist/components/Chat/ChatContextMeter.js.map +1 -0
- package/dist/components/Chat/ChatHeader.js +44 -0
- package/dist/components/Chat/ChatHeader.js.map +1 -0
- package/dist/components/Chat/ChatMessage.js +127 -0
- package/dist/components/Chat/ChatMessage.js.map +1 -0
- package/dist/components/Chat/ChatModelPicker.js +207 -0
- package/dist/components/Chat/ChatModelPicker.js.map +1 -0
- package/dist/components/Chat/ChatRoot.js +6 -0
- package/dist/components/Chat/ChatRoot.js.map +1 -0
- package/dist/components/Chat/ChatSuggestion.js +22 -0
- package/dist/components/Chat/ChatSuggestion.js.map +1 -0
- package/dist/components/Chat/ChatThinking.js +20 -0
- package/dist/components/Chat/ChatThinking.js.map +1 -0
- package/dist/components/Chat/ChatThread.js +68 -0
- package/dist/components/Chat/ChatThread.js.map +1 -0
- package/dist/components/Chat/ChatToolCall.js +59 -0
- package/dist/components/Chat/ChatToolCall.js.map +1 -0
- package/dist/components/Chat/index.js +29 -0
- package/dist/components/Chat/index.js.map +1 -0
- package/dist/components/Chat/stickToBottom.js +29 -0
- package/dist/components/Chat/stickToBottom.js.map +1 -0
- package/dist/components/Chat/tokenText.js +6 -0
- package/dist/components/Chat/tokenText.js.map +1 -0
- package/dist/components/Checkbox.js +79 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/ClampText.js +30 -0
- package/dist/components/ClampText.js.map +1 -0
- package/dist/components/CodeBlock.js +223 -0
- package/dist/components/CodeBlock.js.map +1 -0
- package/dist/components/CodeBlockHighlighter.js +103 -0
- package/dist/components/CodeBlockHighlighter.js.map +1 -0
- package/dist/components/CollapsibleSection.js +40 -0
- package/dist/components/CollapsibleSection.js.map +1 -0
- package/dist/components/Confetti.js +56 -0
- package/dist/components/Confetti.js.map +1 -0
- package/dist/components/ConfirmationDialog.js +234 -0
- package/dist/components/ConfirmationDialog.js.map +1 -0
- package/dist/components/ConnectionHeader.js +47 -0
- package/dist/components/ConnectionHeader.js.map +1 -0
- package/dist/components/CustomIcons/AccountIcon.js +28 -0
- package/dist/components/CustomIcons/AccountIcon.js.map +1 -0
- package/dist/components/CustomIcons/AccountsIcon.js +28 -0
- package/dist/components/CustomIcons/AccountsIcon.js.map +1 -0
- package/dist/components/CustomIcons/AddIcon.js +28 -0
- package/dist/components/CustomIcons/AddIcon.js.map +1 -0
- package/dist/components/CustomIcons/AdvancedLogsIcon.js +21 -0
- package/dist/components/CustomIcons/AdvancedLogsIcon.js.map +1 -0
- package/dist/components/CustomIcons/ApiKeysIcon.js +16 -0
- package/dist/components/CustomIcons/ApiKeysIcon.js.map +1 -0
- package/dist/components/CustomIcons/ArchiveIcon.js +16 -0
- package/dist/components/CustomIcons/ArchiveIcon.js.map +1 -0
- package/dist/components/CustomIcons/ArrowLeftIcon.js +16 -0
- package/dist/components/CustomIcons/ArrowLeftIcon.js.map +1 -0
- package/dist/components/CustomIcons/ArrowUpIcon.js +28 -0
- package/dist/components/CustomIcons/ArrowUpIcon.js.map +1 -0
- package/dist/components/CustomIcons/ArrowUpRightIcon.js +20 -0
- package/dist/components/CustomIcons/ArrowUpRightIcon.js.map +1 -0
- package/dist/components/CustomIcons/AuthenticationIcon.js +28 -0
- package/dist/components/CustomIcons/AuthenticationIcon.js.map +1 -0
- package/dist/components/CustomIcons/BellIcon.js +16 -0
- package/dist/components/CustomIcons/BellIcon.js.map +1 -0
- package/dist/components/CustomIcons/BellSlashIcon.js +16 -0
- package/dist/components/CustomIcons/BellSlashIcon.js.map +1 -0
- package/dist/components/CustomIcons/BiDirectionalArrowsIcon.js +21 -0
- package/dist/components/CustomIcons/BiDirectionalArrowsIcon.js.map +1 -0
- package/dist/components/CustomIcons/CardIcon.js +16 -0
- package/dist/components/CustomIcons/CardIcon.js.map +1 -0
- package/dist/components/CustomIcons/CaretDownIcon.js +16 -0
- package/dist/components/CustomIcons/CaretDownIcon.js.map +1 -0
- package/dist/components/CustomIcons/CaretLeftIcon.js +16 -0
- package/dist/components/CustomIcons/CaretLeftIcon.js.map +1 -0
- package/dist/components/CustomIcons/CaretRightIcon.js +21 -0
- package/dist/components/CustomIcons/CaretRightIcon.js.map +1 -0
- package/dist/components/CustomIcons/CaretUpIcon.js +16 -0
- package/dist/components/CustomIcons/CaretUpIcon.js.map +1 -0
- package/dist/components/CustomIcons/ChangePasswordIcon.js +21 -0
- package/dist/components/CustomIcons/ChangePasswordIcon.js.map +1 -0
- package/dist/components/CustomIcons/CheckCircleFilled.js +21 -0
- package/dist/components/CustomIcons/CheckCircleFilled.js.map +1 -0
- package/dist/components/CustomIcons/CheckIcon.js +28 -0
- package/dist/components/CustomIcons/CheckIcon.js.map +1 -0
- package/dist/components/CustomIcons/CheckmarkIcon.js +16 -0
- package/dist/components/CustomIcons/CheckmarkIcon.js.map +1 -0
- package/dist/components/CustomIcons/ClearIcon.js +28 -0
- package/dist/components/CustomIcons/ClearIcon.js.map +1 -0
- package/dist/components/CustomIcons/CloseIcon.js +28 -0
- package/dist/components/CustomIcons/CloseIcon.js.map +1 -0
- package/dist/components/CustomIcons/CodeIcon.js +16 -0
- package/dist/components/CustomIcons/CodeIcon.js.map +1 -0
- package/dist/components/CustomIcons/CommandKeyIcon.js +21 -0
- package/dist/components/CustomIcons/CommandKeyIcon.js.map +1 -0
- package/dist/components/CustomIcons/CopyIcon.js +28 -0
- package/dist/components/CustomIcons/CopyIcon.js.map +1 -0
- package/dist/components/CustomIcons/CsvIcon.js +28 -0
- package/dist/components/CustomIcons/CsvIcon.js.map +1 -0
- package/dist/components/CustomIcons/CustomFieldIcon.js +21 -0
- package/dist/components/CustomIcons/CustomFieldIcon.js.map +1 -0
- package/dist/components/CustomIcons/DashboardIcon.js +28 -0
- package/dist/components/CustomIcons/DashboardIcon.js.map +1 -0
- package/dist/components/CustomIcons/DateIcon.js +28 -0
- package/dist/components/CustomIcons/DateIcon.js.map +1 -0
- package/dist/components/CustomIcons/DisableIcon.js +28 -0
- package/dist/components/CustomIcons/DisableIcon.js.map +1 -0
- package/dist/components/CustomIcons/DisabledIcon.js +28 -0
- package/dist/components/CustomIcons/DisabledIcon.js.map +1 -0
- package/dist/components/CustomIcons/DismissIcon.js +15 -0
- package/dist/components/CustomIcons/DismissIcon.js.map +1 -0
- package/dist/components/CustomIcons/DocIcon.js +28 -0
- package/dist/components/CustomIcons/DocIcon.js.map +1 -0
- package/dist/components/CustomIcons/DoubleCheckIcon.js +21 -0
- package/dist/components/CustomIcons/DoubleCheckIcon.js.map +1 -0
- package/dist/components/CustomIcons/DownloadIcon.js +28 -0
- package/dist/components/CustomIcons/DownloadIcon.js.map +1 -0
- package/dist/components/CustomIcons/EditIcon.js +28 -0
- package/dist/components/CustomIcons/EditIcon.js.map +1 -0
- package/dist/components/CustomIcons/EnableIcon.js +28 -0
- package/dist/components/CustomIcons/EnableIcon.js.map +1 -0
- package/dist/components/CustomIcons/EnumIcon.js +28 -0
- package/dist/components/CustomIcons/EnumIcon.js.map +1 -0
- package/dist/components/CustomIcons/ErrorCircleFilled.js +21 -0
- package/dist/components/CustomIcons/ErrorCircleFilled.js.map +1 -0
- package/dist/components/CustomIcons/ExpandIcon.js +28 -0
- package/dist/components/CustomIcons/ExpandIcon.js.map +1 -0
- package/dist/components/CustomIcons/EyeClosedIcon.js +16 -0
- package/dist/components/CustomIcons/EyeClosedIcon.js.map +1 -0
- package/dist/components/CustomIcons/EyeIcon.js +16 -0
- package/dist/components/CustomIcons/EyeIcon.js.map +1 -0
- package/dist/components/CustomIcons/FieldMappingIcon.js +21 -0
- package/dist/components/CustomIcons/FieldMappingIcon.js.map +1 -0
- package/dist/components/CustomIcons/FilledCaretDownIcon.js +21 -0
- package/dist/components/CustomIcons/FilledCaretDownIcon.js.map +1 -0
- package/dist/components/CustomIcons/FilledCaretRightIcon.js +21 -0
- package/dist/components/CustomIcons/FilledCaretRightIcon.js.map +1 -0
- package/dist/components/CustomIcons/FilterIcon.js +28 -0
- package/dist/components/CustomIcons/FilterIcon.js.map +1 -0
- package/dist/components/CustomIcons/ForbiddenIcon.js +28 -0
- package/dist/components/CustomIcons/ForbiddenIcon.js.map +1 -0
- package/dist/components/CustomIcons/ForwardArrowIcon.js +21 -0
- package/dist/components/CustomIcons/ForwardArrowIcon.js.map +1 -0
- package/dist/components/CustomIcons/GlobeIcon.js +16 -0
- package/dist/components/CustomIcons/GlobeIcon.js.map +1 -0
- package/dist/components/CustomIcons/InboxIcon.js +16 -0
- package/dist/components/CustomIcons/InboxIcon.js.map +1 -0
- package/dist/components/CustomIcons/InfoCircleFilled.js +21 -0
- package/dist/components/CustomIcons/InfoCircleFilled.js.map +1 -0
- package/dist/components/CustomIcons/InfoFilledIcon.js +21 -0
- package/dist/components/CustomIcons/InfoFilledIcon.js.map +1 -0
- package/dist/components/CustomIcons/InfoIcon.js +28 -0
- package/dist/components/CustomIcons/InfoIcon.js.map +1 -0
- package/dist/components/CustomIcons/IntegrationsIcon.js +28 -0
- package/dist/components/CustomIcons/IntegrationsIcon.js.map +1 -0
- package/dist/components/CustomIcons/KeyIcon.js +28 -0
- package/dist/components/CustomIcons/KeyIcon.js.map +1 -0
- package/dist/components/CustomIcons/LibraryIcon.js +16 -0
- package/dist/components/CustomIcons/LibraryIcon.js.map +1 -0
- package/dist/components/CustomIcons/LogsIcon.js +28 -0
- package/dist/components/CustomIcons/LogsIcon.js.map +1 -0
- package/dist/components/CustomIcons/MagicWandIcon.js +16 -0
- package/dist/components/CustomIcons/MagicWandIcon.js.map +1 -0
- package/dist/components/CustomIcons/ManageTeamIcon.js +21 -0
- package/dist/components/CustomIcons/ManageTeamIcon.js.map +1 -0
- package/dist/components/CustomIcons/ManualWebhookIcon.js +21 -0
- package/dist/components/CustomIcons/ManualWebhookIcon.js.map +1 -0
- package/dist/components/CustomIcons/MarkReadIcon.js +16 -0
- package/dist/components/CustomIcons/MarkReadIcon.js.map +1 -0
- package/dist/components/CustomIcons/MarkUnreadIcon.js +21 -0
- package/dist/components/CustomIcons/MarkUnreadIcon.js.map +1 -0
- package/dist/components/CustomIcons/MembersIcon.js +28 -0
- package/dist/components/CustomIcons/MembersIcon.js.map +1 -0
- package/dist/components/CustomIcons/ModalIcon.js +28 -0
- package/dist/components/CustomIcons/ModalIcon.js.map +1 -0
- package/dist/components/CustomIcons/MoreHorizontalIcon.js +21 -0
- package/dist/components/CustomIcons/MoreHorizontalIcon.js.map +1 -0
- package/dist/components/CustomIcons/MoreVerticalIcon.js +21 -0
- package/dist/components/CustomIcons/MoreVerticalIcon.js.map +1 -0
- package/dist/components/CustomIcons/NavbarCollapseIcon.js +21 -0
- package/dist/components/CustomIcons/NavbarCollapseIcon.js.map +1 -0
- package/dist/components/CustomIcons/NavbarExpandIcon.js +21 -0
- package/dist/components/CustomIcons/NavbarExpandIcon.js.map +1 -0
- package/dist/components/CustomIcons/NotFoundIcon.js +16 -0
- package/dist/components/CustomIcons/NotFoundIcon.js.map +1 -0
- package/dist/components/CustomIcons/OrganizationIcon.js +21 -0
- package/dist/components/CustomIcons/OrganizationIcon.js.map +1 -0
- package/dist/components/CustomIcons/PinIcon.js +16 -0
- package/dist/components/CustomIcons/PinIcon.js.map +1 -0
- package/dist/components/CustomIcons/PlusIcon.js +28 -0
- package/dist/components/CustomIcons/PlusIcon.js.map +1 -0
- package/dist/components/CustomIcons/PreviewIcon.js +28 -0
- package/dist/components/CustomIcons/PreviewIcon.js.map +1 -0
- package/dist/components/CustomIcons/ProgrammaticWebhookIcon.js +21 -0
- package/dist/components/CustomIcons/ProgrammaticWebhookIcon.js.map +1 -0
- package/dist/components/CustomIcons/PulseIcon.js +28 -0
- package/dist/components/CustomIcons/PulseIcon.js.map +1 -0
- package/dist/components/CustomIcons/RefreshIcon.js +28 -0
- package/dist/components/CustomIcons/RefreshIcon.js.map +1 -0
- package/dist/components/CustomIcons/RejectIcon.js +28 -0
- package/dist/components/CustomIcons/RejectIcon.js.map +1 -0
- package/dist/components/CustomIcons/ReloadIcon.js +28 -0
- package/dist/components/CustomIcons/ReloadIcon.js.map +1 -0
- package/dist/components/CustomIcons/ReplyIcon.js +16 -0
- package/dist/components/CustomIcons/ReplyIcon.js.map +1 -0
- package/dist/components/CustomIcons/RequiredFieldIndicatorIcon.js +21 -0
- package/dist/components/CustomIcons/RequiredFieldIndicatorIcon.js.map +1 -0
- package/dist/components/CustomIcons/SearchIcon.js +15 -0
- package/dist/components/CustomIcons/SearchIcon.js.map +1 -0
- package/dist/components/CustomIcons/SecurityIcon.js +28 -0
- package/dist/components/CustomIcons/SecurityIcon.js.map +1 -0
- package/dist/components/CustomIcons/SendIcon.js +16 -0
- package/dist/components/CustomIcons/SendIcon.js.map +1 -0
- package/dist/components/CustomIcons/SettingsIcon.js +28 -0
- package/dist/components/CustomIcons/SettingsIcon.js.map +1 -0
- package/dist/components/CustomIcons/SignOutIcon.js +16 -0
- package/dist/components/CustomIcons/SignOutIcon.js.map +1 -0
- package/dist/components/CustomIcons/SliderIcon.js +28 -0
- package/dist/components/CustomIcons/SliderIcon.js.map +1 -0
- package/dist/components/CustomIcons/SortIcon.js +28 -0
- package/dist/components/CustomIcons/SortIcon.js.map +1 -0
- package/dist/components/CustomIcons/SourceIcon.js +28 -0
- package/dist/components/CustomIcons/SourceIcon.js.map +1 -0
- package/dist/components/CustomIcons/SparkleIcon.js +16 -0
- package/dist/components/CustomIcons/SparkleIcon.js.map +1 -0
- package/dist/components/CustomIcons/StarIcon.js +16 -0
- package/dist/components/CustomIcons/StarIcon.js.map +1 -0
- package/dist/components/CustomIcons/StepCurrentIcon.js +21 -0
- package/dist/components/CustomIcons/StepCurrentIcon.js.map +1 -0
- package/dist/components/CustomIcons/StepUpcomingIcon.js +21 -0
- package/dist/components/CustomIcons/StepUpcomingIcon.js.map +1 -0
- package/dist/components/CustomIcons/SyntheticWebhookIcon.js +21 -0
- package/dist/components/CustomIcons/SyntheticWebhookIcon.js.map +1 -0
- package/dist/components/CustomIcons/ThumbsDownIcon.js +21 -0
- package/dist/components/CustomIcons/ThumbsDownIcon.js.map +1 -0
- package/dist/components/CustomIcons/ThumbsUpIcon.js +16 -0
- package/dist/components/CustomIcons/ThumbsUpIcon.js.map +1 -0
- package/dist/components/CustomIcons/TrashIcon.js +28 -0
- package/dist/components/CustomIcons/TrashIcon.js.map +1 -0
- package/dist/components/CustomIcons/TriangleDownIcon.js +21 -0
- package/dist/components/CustomIcons/TriangleDownIcon.js.map +1 -0
- package/dist/components/CustomIcons/TriangleRightIcon.js +21 -0
- package/dist/components/CustomIcons/TriangleRightIcon.js.map +1 -0
- package/dist/components/CustomIcons/UnarchiveIcon.js +16 -0
- package/dist/components/CustomIcons/UnarchiveIcon.js.map +1 -0
- package/dist/components/CustomIcons/UploadIcon.js +28 -0
- package/dist/components/CustomIcons/UploadIcon.js.map +1 -0
- package/dist/components/CustomIcons/WarningCircleFilled.js +21 -0
- package/dist/components/CustomIcons/WarningCircleFilled.js.map +1 -0
- package/dist/components/CustomIcons/WarningTriangleIcon.js +21 -0
- package/dist/components/CustomIcons/WarningTriangleIcon.js.map +1 -0
- package/dist/components/CustomIcons/WebhookEventsIcon.js +28 -0
- package/dist/components/CustomIcons/WebhookEventsIcon.js.map +1 -0
- package/dist/components/CustomIcons/WebhookIcon.js +28 -0
- package/dist/components/CustomIcons/WebhookIcon.js.map +1 -0
- package/dist/components/CustomIcons/WebhookSigningSecretIcon.js +21 -0
- package/dist/components/CustomIcons/WebhookSigningSecretIcon.js.map +1 -0
- package/dist/components/CustomIcons/index.js +328 -0
- package/dist/components/CustomIcons/index.js.map +1 -0
- package/dist/components/DefinitionRow.js +15 -0
- package/dist/components/DefinitionRow.js.map +1 -0
- package/dist/components/DisclosureArrow.js +20 -0
- package/dist/components/DisclosureArrow.js.map +1 -0
- package/dist/components/Divider.js +59 -0
- package/dist/components/Divider.js.map +1 -0
- package/dist/components/Dropdown.js +849 -0
- package/dist/components/Dropdown.js.map +1 -0
- package/dist/components/FieldBlock.js +25 -0
- package/dist/components/FieldBlock.js.map +1 -0
- package/dist/components/FieldGroup.js +23 -0
- package/dist/components/FieldGroup.js.map +1 -0
- package/dist/components/FieldMessage.js +15 -0
- package/dist/components/FieldMessage.js.map +1 -0
- package/dist/components/Flex.js +45 -0
- package/dist/components/Flex.js.map +1 -0
- package/dist/components/FooterLinks.js +88 -0
- package/dist/components/FooterLinks.js.map +1 -0
- package/dist/components/FooterNav.js +19 -0
- package/dist/components/FooterNav.js.map +1 -0
- package/dist/components/Form.js +26 -0
- package/dist/components/Form.js.map +1 -0
- package/dist/components/FormItem.js +32 -0
- package/dist/components/FormItem.js.map +1 -0
- package/dist/components/FormSectionHeading.js +20 -0
- package/dist/components/FormSectionHeading.js.map +1 -0
- package/dist/components/InlineConfirm.js +129 -0
- package/dist/components/InlineConfirm.js.map +1 -0
- package/dist/components/Input/Input.js +302 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/KeyValueList.js +26 -0
- package/dist/components/KeyValueList.js.map +1 -0
- package/dist/components/Link.js +47 -0
- package/dist/components/Link.js.map +1 -0
- package/dist/components/LoadingBar.js +85 -0
- package/dist/components/LoadingBar.js.map +1 -0
- package/dist/components/LoadingInput.js +29 -0
- package/dist/components/LoadingInput.js.map +1 -0
- package/dist/components/MalachiteContext.js +18 -0
- package/dist/components/MalachiteContext.js.map +1 -0
- package/dist/components/Modal.js +212 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/MultiSelect.js +645 -0
- package/dist/components/MultiSelect.js.map +1 -0
- package/dist/components/NumberTag.js +22 -0
- package/dist/components/NumberTag.js.map +1 -0
- package/dist/components/OverflowRow.js +153 -0
- package/dist/components/OverflowRow.js.map +1 -0
- package/dist/components/Padded.js +39 -0
- package/dist/components/Padded.js.map +1 -0
- package/dist/components/PageLayout/constants.js +12 -0
- package/dist/components/PageLayout/constants.js.map +1 -0
- package/dist/components/PageLayout/emptyLayout.js +61 -0
- package/dist/components/PageLayout/emptyLayout.js.map +1 -0
- package/dist/components/PageLayout/index.js +10 -0
- package/dist/components/PageLayout/index.js.map +1 -0
- package/dist/components/PageLayout/regularLayout.js +177 -0
- package/dist/components/PageLayout/regularLayout.js.map +1 -0
- package/dist/components/PillButton.js +70 -0
- package/dist/components/PillButton.js.map +1 -0
- package/dist/components/PreviewTree.js +49 -0
- package/dist/components/PreviewTree.js.map +1 -0
- package/dist/components/Progress.js +69 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/QueryInput.js +370 -0
- package/dist/components/QueryInput.js.map +1 -0
- package/dist/components/Radio.js +63 -0
- package/dist/components/Radio.js.map +1 -0
- package/dist/components/Search.js +54 -0
- package/dist/components/Search.js.map +1 -0
- package/dist/components/SegmentedControl.js +107 -0
- package/dist/components/SegmentedControl.js.map +1 -0
- package/dist/components/SelectableCard.js +364 -0
- package/dist/components/SelectableCard.js.map +1 -0
- package/dist/components/SelectionBar.js +103 -0
- package/dist/components/SelectionBar.js.map +1 -0
- package/dist/components/SettingRow.js +40 -0
- package/dist/components/SettingRow.js.map +1 -0
- package/dist/components/ShadowEscape.js +166 -0
- package/dist/components/ShadowEscape.js.map +1 -0
- package/dist/components/SidePanel.js +140 -0
- package/dist/components/SidePanel.js.map +1 -0
- package/dist/components/SidePanelNavFooter.js +46 -0
- package/dist/components/SidePanelNavFooter.js.map +1 -0
- package/dist/components/Skeleton.js +106 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/Spacer.js +63 -0
- package/dist/components/Spacer.js.map +1 -0
- package/dist/components/Spinner.js +86 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/SplitScreenLayout.js +51 -0
- package/dist/components/SplitScreenLayout.js.map +1 -0
- package/dist/components/StatBadge.js +10 -0
- package/dist/components/StatBadge.js.map +1 -0
- package/dist/components/Statistic.js +48 -0
- package/dist/components/Statistic.js.map +1 -0
- package/dist/components/StatusBadge.js +56 -0
- package/dist/components/StatusBadge.js.map +1 -0
- package/dist/components/StepTabs.js +52 -0
- package/dist/components/StepTabs.js.map +1 -0
- package/dist/components/Stepper.js +40 -0
- package/dist/components/Stepper.js.map +1 -0
- package/dist/components/Surface.js +143 -0
- package/dist/components/Surface.js.map +1 -0
- package/dist/components/Swatch.js +44 -0
- package/dist/components/Swatch.js.map +1 -0
- package/dist/components/Table/Table.js +1007 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Table/TablePagination.js +205 -0
- package/dist/components/Table/TablePagination.js.map +1 -0
- package/dist/components/Tabs.js +35 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Tag.js +154 -0
- package/dist/components/Tag.js.map +1 -0
- package/dist/components/TextArea/TextArea.js +289 -0
- package/dist/components/TextArea/TextArea.js.map +1 -0
- package/dist/components/ThemeScope.js +14 -0
- package/dist/components/ThemeScope.js.map +1 -0
- package/dist/components/Toggle.js +115 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/Toolbar.js +25 -0
- package/dist/components/Toolbar.js.map +1 -0
- package/dist/components/Tooltip.js +181 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/TruncatedTooltip.js +38 -0
- package/dist/components/TruncatedTooltip.js.map +1 -0
- package/dist/components/Typography/CodeText.js +49 -0
- package/dist/components/Typography/CodeText.js.map +1 -0
- package/dist/components/Typography/EllipsisText.js +27 -0
- package/dist/components/Typography/EllipsisText.js.map +1 -0
- package/dist/components/Typography/FormSectionTitle.js +21 -0
- package/dist/components/Typography/FormSectionTitle.js.map +1 -0
- package/dist/components/Typography/LinkText.js +32 -0
- package/dist/components/Typography/LinkText.js.map +1 -0
- package/dist/components/Typography/MarkdownBlock.js +304 -0
- package/dist/components/Typography/MarkdownBlock.js.map +1 -0
- package/dist/components/Typography/PageTitle.js +21 -0
- package/dist/components/Typography/PageTitle.js.map +1 -0
- package/dist/components/Typography/SecondaryText.js +51 -0
- package/dist/components/Typography/SecondaryText.js.map +1 -0
- package/dist/components/Typography/SectionTitle.js +16 -0
- package/dist/components/Typography/SectionTitle.js.map +1 -0
- package/dist/components/Typography/StatisticLabel.js +22 -0
- package/dist/components/Typography/StatisticLabel.js.map +1 -0
- package/dist/components/Typography/StatisticValue.js +21 -0
- package/dist/components/Typography/StatisticValue.js.map +1 -0
- package/dist/components/Typography/TerminalText.js +45 -0
- package/dist/components/Typography/TerminalText.js.map +1 -0
- package/dist/components/Typography/Text.js +31 -0
- package/dist/components/Typography/Text.js.map +1 -0
- package/dist/components/Typography/index.js +31 -0
- package/dist/components/Typography/index.js.map +1 -0
- package/dist/components/Typography/textStyles.js +66 -0
- package/dist/components/Typography/textStyles.js.map +1 -0
- package/dist/components/WizardLayout.js +113 -0
- package/dist/components/WizardLayout.js.map +1 -0
- package/dist/components/actionBarMenuItems.js +16 -0
- package/dist/components/actionBarMenuItems.js.map +1 -0
- package/dist/components/activeElement.js +11 -0
- package/dist/components/activeElement.js.map +1 -0
- package/dist/components/breadcrumbsNav.js +5 -0
- package/dist/components/breadcrumbsNav.js.map +1 -0
- package/dist/components/cardStripSlot.js +9 -0
- package/dist/components/cardStripSlot.js.map +1 -0
- package/dist/components/codeBlockDiff.js +78 -0
- package/dist/components/codeBlockDiff.js.map +1 -0
- package/dist/components/codeBlockLine.js +90 -0
- package/dist/components/codeBlockLine.js.map +1 -0
- package/dist/components/codeBlockStyles.js +20 -0
- package/dist/components/codeBlockStyles.js.map +1 -0
- package/dist/components/confirmationDialogVariants.js +30 -0
- package/dist/components/confirmationDialogVariants.js.map +1 -0
- package/dist/components/controlTextSize.js +14 -0
- package/dist/components/controlTextSize.js.map +1 -0
- package/dist/components/devWarning.js +22 -0
- package/dist/components/devWarning.js.map +1 -0
- package/dist/components/dividerTypes.js +7 -0
- package/dist/components/dividerTypes.js.map +1 -0
- package/dist/components/dropdownPanelPosition.js +38 -0
- package/dist/components/dropdownPanelPosition.js.map +1 -0
- package/dist/components/dropdownTriggerStyle.js +36 -0
- package/dist/components/dropdownTriggerStyle.js.map +1 -0
- package/dist/components/escapeLayers.js +13 -0
- package/dist/components/escapeLayers.js.map +1 -0
- package/dist/components/flexTypes.js +8 -0
- package/dist/components/flexTypes.js.map +1 -0
- package/dist/components/focusRing.js +9 -0
- package/dist/components/focusRing.js.map +1 -0
- package/dist/components/formItemState.js +12 -0
- package/dist/components/formItemState.js.map +1 -0
- package/dist/components/glassSurface.js +10 -0
- package/dist/components/glassSurface.js.map +1 -0
- package/dist/components/injectStyleSheet.js +33 -0
- package/dist/components/injectStyleSheet.js.map +1 -0
- package/dist/components/inlineConfirmPosition.js +27 -0
- package/dist/components/inlineConfirmPosition.js.map +1 -0
- package/dist/components/keyboardActivation.js +14 -0
- package/dist/components/keyboardActivation.js.map +1 -0
- package/dist/components/modalTray.js +16 -0
- package/dist/components/modalTray.js.map +1 -0
- package/dist/components/optionRowStyles.js +27 -0
- package/dist/components/optionRowStyles.js.map +1 -0
- package/dist/components/overlayBehaviour.js +118 -0
- package/dist/components/overlayBehaviour.js.map +1 -0
- package/dist/components/portalOverlay.js +35 -0
- package/dist/components/portalOverlay.js.map +1 -0
- package/dist/components/prismCedar.js +27 -0
- package/dist/components/prismCedar.js.map +1 -0
- package/dist/components/queryInputGeometry.js +24 -0
- package/dist/components/queryInputGeometry.js.map +1 -0
- package/dist/components/renderableNode.js +6 -0
- package/dist/components/renderableNode.js.map +1 -0
- package/dist/components/safeHref.js +11 -0
- package/dist/components/safeHref.js.map +1 -0
- package/dist/components/scrollLock.js +19 -0
- package/dist/components/scrollLock.js.map +1 -0
- package/dist/components/selectedRow.js +14 -0
- package/dist/components/selectedRow.js.map +1 -0
- package/dist/components/selectionBarChrome.js +63 -0
- package/dist/components/selectionBarChrome.js.map +1 -0
- package/dist/components/topLayer.js +29 -0
- package/dist/components/topLayer.js.map +1 -0
- package/dist/components/useAdoptedStyleSheet.js +41 -0
- package/dist/components/useAdoptedStyleSheet.js.map +1 -0
- package/dist/geist-font.js +23 -0
- package/dist/geist-font.js.map +1 -0
- package/dist/index.d.ts +1056 -86
- package/dist/index.js +403 -104
- package/dist/index.js.map +1 -1
- package/dist/inter-font.js +35 -0
- package/dist/inter-font.js.map +1 -0
- package/dist/stack-sans-font.js +17 -0
- package/dist/stack-sans-font.js.map +1 -0
- package/dist/tailwind.css.js +5 -0
- package/dist/tailwind.css.js.map +1 -0
- package/dist/theme.js +1959 -0
- package/dist/theme.js.map +1 -0
- package/dist/vendor/@fontsource/geist-sans/files/geist-sans-latin-400-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/geist-sans/files/geist-sans-latin-400-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/geist-sans/files/geist-sans-latin-500-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/geist-sans/files/geist-sans-latin-500-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-400-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-400-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-500-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-500-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-600-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-600-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-700-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-700-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-ext-400-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-ext-400-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-ext-500-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-ext-500-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-ext-600-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-ext-600-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-ext-700-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource/inter/files/inter-latin-ext-700-normal.woff2.js.map +1 -0
- package/dist/vendor/@fontsource-variable/stack-sans-text/files/stack-sans-text-latin-wght-normal.woff2.js +5 -0
- package/dist/vendor/@fontsource-variable/stack-sans-text/files/stack-sans-text-latin-wght-normal.woff2.js.map +1 -0
- package/package.json +6 -1
- package/dist/CodeBlockHighlighter-BJeE32YS.js +0 -2791
- package/dist/CodeBlockHighlighter-BJeE32YS.js.map +0 -1
- package/dist/index-P2H4or4t.js +0 -19528
- package/dist/index-P2H4or4t.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelect.js","sources":["../../src/components/MultiSelect.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useInsertionEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport type { Control, FieldPath, FieldValues } from 'react-hook-form';\nimport BaseFormComponent, {\n type RequiredIndicator,\n type RightSideContent,\n useFormFieldIds,\n} from './BaseFormComponent';\nimport CaretDownIcon from './CustomIcons/CaretDownIcon';\nimport InfoFilledIcon from './CustomIcons/InfoFilledIcon';\nimport SearchIcon from './CustomIcons/SearchIcon';\nimport LoadingInput from './LoadingInput';\nimport Spinner from './Spinner';\nimport Tag from './Tag';\nimport Tooltip from './Tooltip';\nimport { DROPDOWN_TRIGGER_ATTR, getTriggerVisual } from './dropdownTriggerStyle';\nimport { pushEscapeLayer } from './escapeLayers';\nimport { ensureMultiSelectPanelStyles } from './optionRowStyles';\nimport { overlayIdentity } from './portalOverlay';\nimport { useTopLayer } from './topLayer';\nimport { CONTROL_TEXT_SIZE, CONTROL_TEXT_SIZE_CLASS } from './controlTextSize';\n\nconst EMPTY_MESSAGE_STYLE: React.CSSProperties = {\n padding: '8px 10px',\n color: 'var(--malachite-text-secondary, rgb(123, 123, 123))',\n};\n\nexport type MultiSelectSize = 'small' | 'medium' | 'large';\n\n// Mirrors Dropdown, which is what Figma specs a select as.\nconst TRIGGER_SIZE_HEIGHT: Record<MultiSelectSize, string> = {\n small: 'h-[var(--malachite-control-height-small,28px)]',\n medium: 'h-[var(--malachite-control-height-medium,32px)]',\n large: 'h-[var(--malachite-control-height-large,42px)]',\n};\n\nconst TRIGGER_SIZE_CLASSES: Record<MultiSelectSize, string> = {\n small: `${TRIGGER_SIZE_HEIGHT.small} gap-[6px] px-2.5 ${CONTROL_TEXT_SIZE_CLASS.small} rounded-[var(--malachite-radius-10,10px)]`,\n medium: `${TRIGGER_SIZE_HEIGHT.medium} gap-[8px] px-3 ${CONTROL_TEXT_SIZE_CLASS.medium} rounded-xl`,\n large: `${TRIGGER_SIZE_HEIGHT.large} gap-[10px] px-4 ${CONTROL_TEXT_SIZE_CLASS.large} rounded-[var(--malachite-radius-xxl,14px)]`,\n};\n\nexport interface MultiSelectOption {\n value: string;\n label: React.ReactNode;\n searchText?: string;\n /** Prevent toggling or removing this option — used for mandatory/locked selections */\n disabled?: boolean;\n /** Right-aligned badge shown in the dropdown only (not in chips) */\n badge?: React.ReactNode;\n /** Description text for this option */\n description?: string;\n /** How description renders — 'icon': info icon with tooltip, 'subtitle': text below label, 'hover': tooltip on label. Default: 'icon' */\n descriptionMode?: 'icon' | 'subtitle' | 'hover';\n /** Custom icon for 'icon' mode. Default: built-in ⓘ */\n descriptionIcon?: React.ReactNode;\n /** Truncate subtitle after N lines. Only applies to 'subtitle' mode */\n descriptionMaxLines?: number;\n}\n\ninterface MultiSelectBaseProps {\n options: MultiSelectOption[];\n /** Controlled value. When provided, component is fully controlled. */\n value?: string[];\n /** Initial value for uncontrolled usage (like Dropdown's defaultValue). */\n defaultValue?: string[];\n onChange?: (next: string[]) => void;\n placeholder?: string;\n renderTrigger?: (selected: MultiSelectOption[]) => React.ReactNode;\n searchable?: boolean;\n /** 'large' (42px) for form inputs; 'medium' (32px) for toolbar chips; 'small' (28px) beside a title. */\n size?: MultiSelectSize;\n width?: string | number;\n minWidth?: number;\n disabled?: boolean;\n error?: boolean;\n loading?: boolean;\n label?: string;\n description?: string;\n tooltip?: string;\n hint?: string;\n rightSideContent?: RightSideContent;\n required?: boolean;\n requiredIndicator?: RequiredIndicator;\n /** Show selected values as chips instead of \"N selected\" text */\n chips?: boolean;\n /** Show × button on each chip to remove it (only when chips=true) */\n chipsRemovable?: boolean;\n /** Max visible chips. 'auto' = show all chips. Number = hard limit with \"+N\" badge */\n chipsMax?: number | 'auto';\n /** Search input inside the trigger field instead of external search bar */\n inlineSearch?: boolean;\n /**\n * Called with the query as typed, and with `''` whenever the component clears it — on\n * select, and on close — so a consumer's request stays in step with what is on screen.\n *\n * For a list too large to load in full: fire the request here and pass the results back\n * as `options`. Pair it with `localFilter={false}`, or the component filters the answer\n * the server already filtered. Debouncing is left to the caller, who is the only one who\n * knows what a request costs.\n */\n onSearchChange?: (query: string) => void;\n /**\n * Whether this component filters `options` itself. Default true.\n *\n * Set false when the options already reflect the query. A server commonly matches on\n * fields the label does not contain — an account found by its owner's email, say — and\n * filtering again here would hide precisely those matches.\n */\n localFilter?: boolean;\n className?: string;\n style?: React.CSSProperties;\n /** Names the trigger from the light DOM, where `htmlFor` cannot reach into the shadow root. */\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\n// When formControl is provided, name is required for form registration\nexport type MultiSelectProps =\n | (MultiSelectBaseProps & {\n formControl: Control<FieldValues, unknown>;\n name: string;\n })\n | (MultiSelectBaseProps & {\n formControl?: undefined;\n name?: string;\n });\n\nconst VIEWPORT_PADDING = 8;\nconst AUTO_SEARCHABLE_THRESHOLD = 10;\n\nconst KEY_ARROW_DOWN = 'ArrowDown';\nconst KEY_ARROW_UP = 'ArrowUp';\nconst KEY_ENTER = 'Enter';\nconst KEY_BACKSPACE = 'Backspace';\nconst NAV_KEYS = new Set([KEY_ARROW_DOWN, KEY_ARROW_UP, KEY_ENTER]);\n\n// Nesting interactive elements inside <button> is invalid HTML —\n// combobox for text input (inline search), group for chip buttons, button otherwise\ninterface TriggerElementProps extends React.HTMLAttributes<HTMLElement> {\n triggerRole: 'combobox' | 'group' | 'button';\n disabled: boolean;\n children: React.ReactNode;\n}\n\nconst TriggerElement = React.forwardRef<HTMLButtonElement | HTMLDivElement, TriggerElementProps>(\n ({ triggerRole, disabled, children, ...props }, ref) => {\n if (triggerRole !== 'button') {\n return (\n <div\n ref={ref as React.Ref<HTMLDivElement>}\n role={triggerRole}\n tabIndex={disabled ? -1 : 0}\n {...(props as React.HTMLAttributes<HTMLDivElement>)}\n >\n {children}\n </div>\n );\n }\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n disabled={disabled}\n {...(props as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {children}\n </button>\n );\n },\n);\nTriggerElement.displayName = 'TriggerElement';\n\nconst MultiSelect: React.FC<MultiSelectProps> = ({\n options,\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = 'Select',\n renderTrigger,\n searchable,\n size = 'large',\n width = 'auto',\n minWidth,\n disabled = false,\n error = false,\n loading = false,\n label,\n name,\n description,\n tooltip,\n hint,\n rightSideContent,\n required = false,\n requiredIndicator,\n formControl,\n chips = false,\n chipsRemovable = true,\n chipsMax = 'auto',\n inlineSearch = false,\n onSearchChange,\n localFilter = true,\n className = '',\n style,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n}) => {\n // Stable IDs for aria-activedescendant and aria-controls\n const instanceId = useId();\n const listboxId = `${instanceId}-listbox`;\n const getOptionId = (index: number) => `${instanceId}-option-${index}`;\n const { controlId, labelId, descriptionId, hintId, describedBy } = useFormFieldIds({\n id,\n label,\n description,\n hint,\n });\n\n // Mount-only initial value — matches native <input defaultValue> semantics\n const [internalValue, setInternalValue] = useState<string[]>(() => defaultValue ?? []);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const [open, setOpen] = useState(false);\n const [position, setPosition] = useState<{ top: number; left: number; width: number } | null>(\n null,\n );\n const [search, setSearch] = useState('');\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const inlineInputRef = useRef<HTMLInputElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n useTopLayer(popoverRef, open);\n\n const optionRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n // Set lookup — `value.includes(...)` inside a filter or a per-row render is O(n),\n // making selection checks O(options x value) on every pass.\n const selectedValues = useMemo(() => new Set(value), [value]);\n\n const selectedOptions = useMemo(\n () => options.filter((o) => selectedValues.has(o.value)),\n [options, selectedValues],\n );\n\n const maxVisibleChips = typeof chipsMax === 'number' ? chipsMax : undefined;\n\n const filteredOptions = useMemo(() => {\n // The options already answer the query when the consumer is fetching them.\n if (!localFilter) return options;\n const query = search.trim().toLowerCase();\n if (!query) return options;\n return options.filter((o) => {\n const text = o.searchText ?? (typeof o.label === 'string' ? o.label : '');\n return text.toLowerCase().includes(query);\n });\n }, [options, search, localFilter]);\n\n // Programmatic search clears (after Enter) should preserve highlight position\n const isUserSearching = useRef(false);\n\n /**\n * Every change to the query goes through here, including the programmatic clears on\n * select and on close, so `onSearchChange` cannot fall out of step with what the list is\n * showing: a consumer left holding the previous query would keep serving results for a\n * search the component has already forgotten.\n *\n * The ref mirrors the state so a repeated clear does not fire the callback again — the\n * close effect runs on every close, whether or not anything was typed.\n */\n const searchRef = useRef('');\n const updateSearch = useCallback(\n (next: string, fromUser: boolean) => {\n if (searchRef.current === next) return;\n searchRef.current = next;\n if (fromUser) isUserSearching.current = true;\n setSearch(next);\n onSearchChange?.(next);\n },\n [onSearchChange],\n );\n\n const handleSearchChange = useCallback(\n (newSearch: string) => updateSearch(newSearch, true),\n [updateSearch],\n );\n\n const clearSearch = useCallback(() => updateSearch('', false), [updateSearch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: search triggers the effect, ref gates it\n useEffect(() => {\n if (isUserSearching.current) {\n setHighlightedIndex(-1);\n isUserSearching.current = false;\n }\n }, [search]);\n\n // A consumer fetching its options always needs the input, however few results came\n // back: auto-hiding it on a short list would take the search away mid-typing, exactly\n // when the query has narrowed the list to a handful.\n const isSearchable =\n searchable ?? (onSearchChange !== undefined || options.length > AUTO_SEARCHABLE_THRESHOLD);\n\n // Inline search replaces the external search bar\n const showSearch = inlineSearch ? false : isSearchable;\n\n const updatePosition = useCallback(() => {\n const trigger = triggerRef.current;\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const popoverHeight = popoverRef.current?.offsetHeight ?? 0;\n const popoverWidth = popoverRef.current?.offsetWidth ?? rect.width;\n\n const desiredLeft = rect.left;\n const maxLeft = window.innerWidth - popoverWidth - VIEWPORT_PADDING;\n const left = Math.max(VIEWPORT_PADDING, Math.min(desiredLeft, maxLeft));\n\n const spaceBelow = window.innerHeight - rect.bottom;\n const top =\n popoverHeight > 0 && spaceBelow < popoverHeight + VIEWPORT_PADDING\n ? rect.top - popoverHeight - 4\n : rect.bottom + 4;\n\n setPosition({ top, left, width: Math.max(rect.width, minWidth ?? 0) });\n }, [minWidth]);\n\n useEffect(() => {\n if (!open) {\n clearSearch();\n setHighlightedIndex(-1);\n return;\n }\n updatePosition();\n // Auto-focus inline search so user can type immediately\n if (inlineSearch) inlineInputRef.current?.focus();\n\n const handleScrollOrResize = () => updatePosition();\n const handleClickOutside = (e: MouseEvent) => {\n const path = e.composedPath();\n const trigger = triggerRef.current;\n const popover = popoverRef.current;\n if ((!trigger || !path.includes(trigger)) && (!popover || !path.includes(popover))) {\n setOpen(false);\n }\n };\n // ESC via the shared layer stack: closes only the topmost overlay.\n const popEscapeLayer = pushEscapeLayer(() => setOpen(false));\n window.addEventListener('scroll', handleScrollOrResize, true);\n window.addEventListener('resize', handleScrollOrResize);\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n window.removeEventListener('scroll', handleScrollOrResize, true);\n window.removeEventListener('resize', handleScrollOrResize);\n document.removeEventListener('mousedown', handleClickOutside);\n popEscapeLayer();\n };\n }, [open, updatePosition, inlineSearch, clearSearch]);\n\n useLayoutEffect(() => {\n if (open && popoverRef.current) updatePosition();\n }, [open, updatePosition]);\n\n const updateValue = useCallback(\n (next: string[]) => {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n\n const isOptionDisabled = useCallback(\n (optionValue: string) => {\n return options.some((o) => o.value === optionValue && o.disabled);\n },\n [options],\n );\n\n const toggle = useCallback(\n (optionValue: string) => {\n if (isOptionDisabled(optionValue)) return;\n if (value.includes(optionValue)) {\n updateValue(value.filter((v) => v !== optionValue));\n } else {\n updateValue([...value, optionValue]);\n }\n },\n [value, updateValue, isOptionDisabled],\n );\n\n const disabledValues = useMemo(() => {\n const locked = new Set<string>();\n for (const option of options) {\n if (option.disabled) {\n locked.add(option.value);\n }\n }\n return locked;\n }, [options]);\n\n const clearAll = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n // Keep disabled (locked) options when clearing\n const locked = value.filter((v) => disabledValues.has(v));\n updateValue(locked);\n },\n [updateValue, value, disabledValues],\n );\n\n const removeChip = useCallback(\n (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation();\n if (isOptionDisabled(optionValue)) return;\n updateValue(value.filter((v) => v !== optionValue));\n },\n [value, updateValue, isOptionDisabled],\n );\n\n // Inline input lives inside trigger button — stopPropagation prevents\n // the keypress from firing twice (input → button bubble)\n const handleOptionNavigation = useCallback(\n (e: React.KeyboardEvent) => {\n if (!NAV_KEYS.has(e.key)) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (!open) {\n setOpen(true);\n return;\n }\n\n const optionCount = filteredOptions.length;\n if (optionCount === 0) return;\n\n // Manual scroll within the list container — scrollIntoView can scroll the page\n const scrollToOption = (index: number) => {\n requestAnimationFrame(() => {\n const el = optionRefs.current[index];\n const container = listRef.current;\n if (!el || !container) return;\n\n const elTop = el.offsetTop;\n const elBottom = elTop + el.offsetHeight;\n const containerTop = container.scrollTop;\n const containerBottom = containerTop + container.clientHeight;\n\n if (elBottom > containerBottom) {\n container.scrollTo({\n top: elBottom - container.clientHeight,\n behavior: 'smooth',\n });\n } else if (elTop < containerTop) {\n container.scrollTo({ top: elTop, behavior: 'smooth' });\n }\n });\n };\n\n const moveHighlight = (direction: 1 | -1) => {\n let nextIndex = highlightedIndex;\n for (let i = 0; i < optionCount; i++) {\n nextIndex =\n direction === 1\n ? nextIndex < optionCount - 1\n ? nextIndex + 1\n : 0\n : nextIndex > 0\n ? nextIndex - 1\n : optionCount - 1;\n if (!filteredOptions[nextIndex]?.disabled) {\n scrollToOption(nextIndex);\n setHighlightedIndex(nextIndex);\n return;\n }\n }\n };\n\n const selectHighlighted = () => {\n if (highlightedIndex < 0 || highlightedIndex >= optionCount) {\n return;\n }\n if (filteredOptions[highlightedIndex]?.disabled) return;\n const selectedValue = filteredOptions[highlightedIndex].value;\n toggle(selectedValue);\n clearSearch();\n // After clearing search, filteredOptions resets to the full list —\n // re-locate the selected option so the highlight stays on it\n const newIndex = options.findIndex((o) => o.value === selectedValue);\n setHighlightedIndex(newIndex >= 0 ? newIndex : -1);\n scrollToOption(newIndex >= 0 ? newIndex : 0);\n requestAnimationFrame(() => inlineInputRef.current?.focus());\n };\n\n switch (e.key) {\n case KEY_ARROW_DOWN:\n moveHighlight(1);\n break;\n case KEY_ARROW_UP:\n moveHighlight(-1);\n break;\n case KEY_ENTER:\n selectHighlighted();\n break;\n }\n },\n [open, filteredOptions, highlightedIndex, toggle, options, clearSearch],\n );\n\n const handleSearchKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Empty backspace removes last chip for quick corrections\n if (e.key === KEY_BACKSPACE && search === '' && value.length > 0) {\n e.preventDefault();\n updateValue(value.slice(0, -1));\n // Keep focus on input so user stays in the dropdown context\n requestAnimationFrame(() => inlineInputRef.current?.focus());\n return;\n }\n handleOptionNavigation(e);\n },\n [handleOptionNavigation, search, value, updateValue],\n );\n\n const widthValue = typeof width === 'number' ? `${width}px` : width;\n const clearable = selectedOptions.length > 0 && !disabled && !loading;\n\n const triggerVisual = getTriggerVisual({\n disabled,\n error,\n open,\n loading,\n hasSelection: selectedOptions.length > 0,\n });\n\n // Inline search input shared between chip mode and empty state\n const inlineSearchInput = useMemo(() => {\n if (!inlineSearch) return null;\n return (\n <input\n ref={inlineInputRef}\n type=\"text\"\n value={search}\n onChange={(e) => handleSearchChange(e.target.value)}\n onKeyDown={handleSearchKeyDown}\n placeholder={selectedOptions.length === 0 ? placeholder : ''}\n // Inherits rather than naming a rung: an input does not take the parent's\n // font by default, and the trigger already sets the one its tier calls for.\n className=\"flex-1 w-full min-w-[40px] border-none outline-none bg-transparent text-[length:inherit] p-0 text-[var(--malachite-text-primary,rgb(10,10,10))]\"\n onMouseDown={(e) => {\n // Prevent trigger blur while keeping dropdown open\n e.preventDefault();\n }}\n />\n );\n }, [\n inlineSearch,\n search,\n handleSearchChange,\n handleSearchKeyDown,\n selectedOptions.length,\n placeholder,\n ]);\n\n const triggerLabel = useMemo(() => {\n if (renderTrigger && selectedOptions.length > 0) {\n return renderTrigger(selectedOptions);\n }\n\n // Chips give users direct visibility and removal of selected values\n if (chips && selectedOptions.length > 0) {\n const visible =\n maxVisibleChips != null\n ? selectedOptions.slice(0, maxVisibleChips)\n : selectedOptions;\n const remaining = selectedOptions.length - visible.length;\n return (\n <div\n className=\"flex items-center gap-1 overflow-hidden min-w-0 flex-1\"\n style={{ flexWrap: 'nowrap' }}\n >\n {visible.map((opt) => {\n const optDisabled = disabledValues.has(opt.value);\n return (\n <Tag\n key={opt.value}\n value={opt.label}\n type=\"default\"\n textTransform=\"none\"\n onRemove={\n chipsRemovable && !disabled && !optDisabled\n ? (e) => removeChip(opt.value, e)\n : undefined\n }\n className=\"shrink-0\"\n />\n );\n })}\n {remaining > 0 && (\n <span className=\"shrink-0 text-xs text-[var(--malachite-text-secondary,rgb(123,123,123))]\">\n +{remaining}\n </span>\n )}\n {inlineSearchInput}\n </div>\n );\n }\n\n if (inlineSearch && selectedOptions.length === 0) {\n return inlineSearchInput;\n }\n\n if (selectedOptions.length === 0) {\n return <span className=\"text-[var(--malachite-text-placeholder)]\">{placeholder}</span>;\n }\n if (selectedOptions.length === 1) {\n return <span>{selectedOptions[0].label}</span>;\n }\n return <span>{`${selectedOptions.length} selected`}</span>;\n }, [\n selectedOptions,\n renderTrigger,\n chips,\n maxVisibleChips,\n chipsRemovable,\n disabled,\n removeChip,\n inlineSearch,\n inlineSearchInput,\n placeholder,\n disabledValues,\n ]);\n\n const emptyMessage = options.length === 0 ? 'No options available' : 'No results found';\n\n useInsertionEffect(() => {\n if (open) {\n ensureMultiSelectPanelStyles();\n }\n }, [open]);\n\n const popoverStyle: React.CSSProperties = {\n position: 'fixed',\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n minWidth: position?.width ?? minWidth ?? 180,\n maxWidth: 320,\n background: 'var(--malachite-card-background, rgb(255, 255, 255))',\n border: '1px solid var(--malachite-card-border, rgb(232, 232, 232))',\n borderRadius: 12,\n boxShadow: '0px 2px 5px 0px rgba(0, 0, 0, 0.1)',\n padding: 4,\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n maxHeight: 360,\n fontSize: CONTROL_TEXT_SIZE[size],\n visibility: position ? 'visible' : 'hidden',\n opacity: position ? 1 : 0,\n };\n\n // Form wrapper only when form-specific props are provided (backwards compatible).\n // `rightSideContent` renders inside it, so omitting it here would drop the link silently.\n const hasFormWrapper = !!(\n description ||\n tooltip ||\n hint ||\n rightSideContent ||\n name ||\n formControl ||\n required\n );\n\n // Only the form wrapper renders a <label>, so aria-labelledby has a target only when it\n // is present; without it the trigger falls back to aria-label or it would have no name.\n const hasLabelElement = hasFormWrapper && !!label;\n\n const coreComponent = (\n <>\n <div className=\"relative\" style={{ width: widthValue }}>\n {/* Nesting <input> inside <button> is invalid HTML — use div[role=combobox] for inline search */}\n <TriggerElement\n ref={triggerRef}\n id={controlId}\n triggerRole={\n inlineSearch ? 'combobox' : chips && chipsRemovable ? 'group' : 'button'\n }\n disabled={disabled || loading}\n {...{ [DROPDOWN_TRIGGER_ATTR]: '' }}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={\n inlineSearch && open && highlightedIndex >= 0\n ? getOptionId(highlightedIndex)\n : undefined\n }\n // aria-labelledby outranks aria-label in the accessible-name algorithm, so\n // the generated one has to be dropped for a caller's aria-label to apply.\n aria-labelledby={\n ariaLabelledBy ?? (hasLabelElement && !ariaLabel ? labelId : undefined)\n }\n aria-label={ariaLabel ?? (hasLabelElement ? undefined : label)}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={describedBy}\n aria-busy={loading || undefined}\n onClick={() => {\n if (!(disabled || loading)) setOpen((v) => !v);\n }}\n onKeyDown={handleOptionNavigation}\n style={{\n transition: 'border-color 0.15s ease, box-shadow 0.15s ease',\n ...triggerVisual,\n ...style,\n }}\n className={`w-full ${TRIGGER_SIZE_CLASSES[size]} border border-solid flex items-center font-normal text-[var(--malachite-text-primary)] ${disabled || loading ? 'cursor-not-allowed' : 'cursor-pointer'} ${className}`}\n >\n <span\n className={`flex-1 min-w-0 text-left ${inlineSearch ? 'flex' : 'truncate'} ${clearable ? 'pr-[18px]' : ''}`}\n >\n {triggerLabel}\n </span>\n {loading ? (\n <span className=\"flex items-center justify-center shrink-0 size-[14px]\">\n <Spinner size=\"xxxsmall\" />\n </span>\n ) : (\n <CaretDownIcon\n size={13}\n className=\"shrink-0\"\n style={{\n color: open\n ? 'var(--malachite-text-primary, rgb(10, 10, 10))'\n : 'var(--malachite-text-placeholder, rgb(187, 187, 187))',\n transition: 'transform 0.2s ease, color 0.2s ease',\n transform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n }}\n />\n )}\n </TriggerElement>\n {clearable && (\n <button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={clearAll}\n className=\"absolute top-0 bottom-0 right-[28px] flex items-center justify-center px-[2px] leading-none bg-transparent border-none text-[var(--malachite-text-placeholder)] hover:text-[var(--malachite-text-primary)] cursor-pointer\"\n >\n ×\n </button>\n )}\n </div>\n {open &&\n createPortal(\n <div\n ref={popoverRef}\n id={listboxId}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n {...overlayIdentity('multiselect')}\n style={popoverStyle}\n >\n {/* Inline styles, not Tailwind: this portals into document.body, outside the\n Shadow DOM the malachite stylesheet is adopted into. */}\n {showSearch && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n background: 'var(--malachite-tag-default-background, #f1f1f1)',\n borderRadius: 8,\n height: 32,\n flexShrink: 0,\n padding: '0 12px',\n }}\n >\n <SearchIcon\n size={13}\n style={{\n color: 'var(--malachite-text-placeholder, rgb(187, 187, 187))',\n flexShrink: 0,\n }}\n />\n <input\n type=\"text\"\n value={search}\n onChange={(e) => handleSearchChange(e.target.value)}\n onKeyDown={handleOptionNavigation}\n placeholder=\"Search\"\n aria-label=\"Search options\"\n autoFocus\n style={{\n flex: 1,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n font: 'inherit',\n color: 'var(--malachite-text-primary, rgb(10, 10, 10))',\n minWidth: 0,\n }}\n />\n </div>\n )}\n {showSearch && (\n <div\n aria-hidden=\"true\"\n style={{\n height: 1,\n width: '100%',\n background: 'var(--malachite-card-border, rgb(232, 232, 232))',\n flexShrink: 0,\n }}\n />\n )}\n <div\n ref={listRef}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n overflowY: 'auto',\n overscrollBehavior: 'contain',\n minHeight: 0,\n flex: 1,\n scrollbarWidth: 'thin',\n scrollbarColor:\n 'var(--malachite-text-placeholder, rgb(187, 187, 187)) transparent',\n }}\n >\n {filteredOptions.length === 0 ? (\n // `role=\"listbox\"` admits only option/group children.\n <div role=\"presentation\" style={EMPTY_MESSAGE_STYLE}>\n {emptyMessage}\n </div>\n ) : (\n filteredOptions.map((option, index) => {\n const checked = selectedValues.has(option.value);\n const highlighted = index === highlightedIndex;\n const optLocked = !!option.disabled;\n return (\n <button\n key={option.value}\n id={getOptionId(index)}\n ref={(el) => {\n optionRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"option\"\n aria-selected={checked}\n aria-disabled={optLocked || undefined}\n onClick={() => {\n toggle(option.value);\n clearSearch();\n inlineInputRef.current?.focus();\n }}\n // Exception to \"no JS for styling\": the highlight IS\n // the keyboard cursor, so a bare :hover rule would\n // light a second row the keyboard has left.\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseLeave={() => {\n if (highlightedIndex === index)\n setHighlightedIndex(-1);\n }}\n className=\"malachite-multiselect-option\"\n data-checked={checked}\n data-highlighted={highlighted}\n data-disabled={optLocked}\n style={{\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n // The list scrolls; unpinned, rows compress instead.\n flexShrink: 0,\n border: 'none',\n textAlign: 'left',\n borderRadius: 8,\n padding: '8px 10px',\n font: 'inherit',\n cursor: optLocked ? 'not-allowed' : 'pointer',\n opacity: optLocked ? 0.6 : 1,\n color: checked\n ? 'var(--malachite-accent-foreground, rgb(2, 122, 66))'\n : 'var(--malachite-text-primary, rgb(10, 10, 10))',\n }}\n >\n {(() => {\n const mode = option.description\n ? (option.descriptionMode ?? 'icon')\n : null;\n const isSubtitle = mode === 'subtitle';\n const labelEl = (\n <span\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {option.label}\n </span>\n );\n\n return (\n <span\n style={{\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: isSubtitle\n ? 'column'\n : 'row',\n alignItems: isSubtitle\n ? 'flex-start'\n : 'center',\n gap: isSubtitle ? 2 : 6,\n }}\n >\n {mode === 'hover' ? (\n <Tooltip\n text={option.description}\n delay={0.6}\n maxWidth={420}\n >\n {labelEl}\n </Tooltip>\n ) : (\n labelEl\n )}\n\n {mode === 'icon' && (\n <Tooltip\n text={option.description}\n delay={0.6}\n maxWidth={420}\n >\n <span\n style={{\n cursor: 'help',\n color: 'var(--malachite-text-placeholder, rgb(187, 187, 187))',\n }}\n aria-label=\"More information\"\n onClick={(e) =>\n e.stopPropagation()\n }\n >\n {option.descriptionIcon ?? (\n <InfoFilledIcon size={14} />\n )}\n </span>\n </Tooltip>\n )}\n\n {mode === 'subtitle' && (\n <span\n style={{\n fontSize: 12,\n color: 'var(--malachite-text-secondary, rgb(123, 123, 123))',\n whiteSpace: 'normal',\n lineHeight: 1.3,\n ...(option.descriptionMaxLines\n ? {\n display:\n '-webkit-box',\n WebkitLineClamp:\n option.descriptionMaxLines,\n WebkitBoxOrient:\n 'vertical' as const,\n overflow: 'hidden',\n }\n : {}),\n }}\n >\n {option.description}\n </span>\n )}\n </span>\n );\n })()}\n {option.badge && (\n <span\n style={{\n marginLeft: 'auto',\n flexShrink: 0,\n paddingLeft: 8,\n }}\n >\n {option.badge}\n </span>\n )}\n </button>\n );\n })\n )}\n </div>\n </div>,\n document.body,\n )}\n </>\n );\n\n if (!hasFormWrapper) {\n return coreComponent;\n }\n\n return (\n <BaseFormComponent\n label={label}\n hint={hint}\n rightSideContent={rightSideContent}\n tooltip={tooltip}\n name={(name ?? '') as FieldPath<FieldValues>}\n required={required}\n requiredIndicator={requiredIndicator}\n loading={loading}\n formControl={formControl}\n description={description}\n controlId={controlId}\n labelId={labelId}\n descriptionId={descriptionId}\n hintId={hintId}\n loadingComponent={<LoadingInput heightClass={TRIGGER_SIZE_HEIGHT[size]} />}\n >\n {coreComponent}\n </BaseFormComponent>\n );\n};\n\nexport default MultiSelect;\n"],"names":["EMPTY_MESSAGE_STYLE","TRIGGER_SIZE_HEIGHT","TRIGGER_SIZE_CLASSES","CONTROL_TEXT_SIZE_CLASS","VIEWPORT_PADDING","AUTO_SEARCHABLE_THRESHOLD","KEY_ARROW_DOWN","KEY_ARROW_UP","KEY_ENTER","KEY_BACKSPACE","NAV_KEYS","TriggerElement","React","triggerRole","disabled","children","props","ref","jsx","MultiSelect","options","controlledValue","defaultValue","onChange","placeholder","renderTrigger","searchable","size","width","minWidth","error","loading","label","name","description","tooltip","hint","rightSideContent","required","requiredIndicator","formControl","chips","chipsRemovable","chipsMax","inlineSearch","onSearchChange","localFilter","className","style","id","ariaLabel","ariaLabelledBy","instanceId","useId","listboxId","getOptionId","index","controlId","labelId","descriptionId","hintId","describedBy","useFormFieldIds","internalValue","setInternalValue","useState","isControlled","value","open","setOpen","position","setPosition","search","setSearch","highlightedIndex","setHighlightedIndex","triggerRef","useRef","inlineInputRef","popoverRef","listRef","useTopLayer","optionRefs","selectedValues","useMemo","selectedOptions","o","maxVisibleChips","filteredOptions","query","isUserSearching","searchRef","updateSearch","useCallback","next","fromUser","handleSearchChange","newSearch","clearSearch","useEffect","isSearchable","showSearch","updatePosition","trigger","rect","popoverHeight","_a","popoverWidth","_b","desiredLeft","maxLeft","left","spaceBelow","top","handleScrollOrResize","handleClickOutside","e","path","popover","popEscapeLayer","pushEscapeLayer","useLayoutEffect","updateValue","isOptionDisabled","optionValue","toggle","v","disabledValues","locked","option","clearAll","removeChip","handleOptionNavigation","optionCount","scrollToOption","el","container","elTop","elBottom","containerTop","containerBottom","moveHighlight","direction","nextIndex","i","selectHighlighted","selectedValue","newIndex","handleSearchKeyDown","widthValue","clearable","triggerVisual","getTriggerVisual","inlineSearchInput","triggerLabel","visible","remaining","jsxs","opt","optDisabled","Tag","emptyMessage","useInsertionEffect","ensureMultiSelectPanelStyles","popoverStyle","CONTROL_TEXT_SIZE","hasFormWrapper","hasLabelElement","coreComponent","Fragment","DROPDOWN_TRIGGER_ATTR","Spinner","CaretDownIcon","createPortal","overlayIdentity","SearchIcon","checked","highlighted","optLocked","mode","isSubtitle","labelEl","Tooltip","InfoFilledIcon","BaseFormComponent","LoadingInput"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsxs as i, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
const c = ({
|
|
3
|
+
value: s,
|
|
4
|
+
emphasis: r = !1,
|
|
5
|
+
"aria-label": e,
|
|
6
|
+
className: l = ""
|
|
7
|
+
}) => {
|
|
8
|
+
const n = [
|
|
9
|
+
"malachite-number-tag",
|
|
10
|
+
r ? "malachite-number-tag-emphasis" : "",
|
|
11
|
+
l
|
|
12
|
+
].filter(Boolean).join(" ");
|
|
13
|
+
return e ? /* @__PURE__ */ i("span", { className: n, children: [
|
|
14
|
+
/* @__PURE__ */ a("span", { "aria-hidden": "true", children: s }),
|
|
15
|
+
/* @__PURE__ */ a("span", { className: "sr-only", children: e })
|
|
16
|
+
] }) : /* @__PURE__ */ a("span", { className: n, children: s });
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
c as NumberTag,
|
|
20
|
+
c as default
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=NumberTag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberTag.js","sources":["../../src/components/NumberTag.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface NumberTagProps {\n value: number | string;\n emphasis?: boolean;\n /**\n * Names the bare number for assistive tech — \"3 schemas\" rather than \"3\". Rendered as\n * visually-hidden text, because `aria-label` on a plain span is not honoured.\n */\n 'aria-label'?: string;\n className?: string;\n}\n\n// Compact monospace count pill for numeric counts in tables and lists.\nexport const NumberTag: React.FC<NumberTagProps> = ({\n value,\n emphasis = false,\n 'aria-label': ariaLabel,\n className = '',\n}) => {\n const classes = [\n 'malachite-number-tag',\n emphasis ? 'malachite-number-tag-emphasis' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n if (ariaLabel) {\n return (\n <span className={classes}>\n <span aria-hidden=\"true\">{value}</span>\n <span className=\"sr-only\">{ariaLabel}</span>\n </span>\n );\n }\n return <span className={classes}>{value}</span>;\n};\n\nexport default NumberTag;\n"],"names":["NumberTag","value","emphasis","ariaLabel","className","classes","jsxs","jsx"],"mappings":";AAcO,MAAMA,IAAsC,CAAC;AAAA,EAChD,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,cAAcC;AAAA,EACd,WAAAC,IAAY;AAChB,MAAM;AACF,QAAMC,IAAU;AAAA,IACZ;AAAA,IACAH,IAAW,kCAAkC;AAAA,IAC7CE;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AACb,SAAID,IAEI,gBAAAG,EAAC,QAAA,EAAK,WAAWD,GACb,UAAA;AAAA,IAAA,gBAAAE,EAAC,QAAA,EAAK,eAAY,QAAQ,UAAAN,GAAM;AAAA,IAChC,gBAAAM,EAAC,QAAA,EAAK,WAAU,WAAW,UAAAJ,EAAA,CAAU;AAAA,EAAA,GACzC,IAGD,gBAAAI,EAAC,QAAA,EAAK,WAAWF,GAAU,UAAAJ,GAAM;AAC5C;"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { jsxs as $, jsx as j } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as G, useState as X, useLayoutEffect as J } from "react";
|
|
3
|
+
const Q = {
|
|
4
|
+
start: "flex-start",
|
|
5
|
+
center: "center",
|
|
6
|
+
end: "flex-end",
|
|
7
|
+
stretch: "stretch",
|
|
8
|
+
baseline: "baseline"
|
|
9
|
+
}, U = {
|
|
10
|
+
start: "flex-start",
|
|
11
|
+
center: "center",
|
|
12
|
+
end: "flex-end",
|
|
13
|
+
"space-between": "space-between",
|
|
14
|
+
"space-around": "space-around",
|
|
15
|
+
"space-evenly": "space-evenly"
|
|
16
|
+
}, m = "data-overflow-row-hidden", C = "malachite-overflow-row-style", V = `[data-overflow-row] > * { flex-shrink: 0; min-width: 0; } [${m}] { display: none !important; }`, P = 0.5, K = (t) => {
|
|
17
|
+
if (t instanceof Document ? t.getElementById(C) : t.querySelector(`#${C}`))
|
|
18
|
+
return;
|
|
19
|
+
const e = document.createElement("style");
|
|
20
|
+
e.id = C, e.textContent = V, t instanceof Document ? t.head.appendChild(e) : t.appendChild(e);
|
|
21
|
+
}, v = /* @__PURE__ */ new Set();
|
|
22
|
+
let A = !1;
|
|
23
|
+
const Z = () => {
|
|
24
|
+
A = !1;
|
|
25
|
+
const t = Array.from(v);
|
|
26
|
+
v.clear();
|
|
27
|
+
const o = t.filter((e) => e.isActive());
|
|
28
|
+
for (const e of o)
|
|
29
|
+
e.reveal();
|
|
30
|
+
for (const e of o)
|
|
31
|
+
e.measure();
|
|
32
|
+
for (const e of o)
|
|
33
|
+
e.apply();
|
|
34
|
+
}, _ = (t, o) => {
|
|
35
|
+
if (t) {
|
|
36
|
+
t.disconnect();
|
|
37
|
+
for (const e of Array.from(o.children))
|
|
38
|
+
t.observe(e);
|
|
39
|
+
}
|
|
40
|
+
}, ee = (t) => {
|
|
41
|
+
v.add(t), A || (A = !0, queueMicrotask(Z));
|
|
42
|
+
}, se = ({
|
|
43
|
+
children: t,
|
|
44
|
+
gap: o = 0,
|
|
45
|
+
align: e = "center",
|
|
46
|
+
justify: R = "start",
|
|
47
|
+
className: D,
|
|
48
|
+
renderOverflow: w
|
|
49
|
+
}) => {
|
|
50
|
+
const y = G(null), [z, B] = X(0);
|
|
51
|
+
J(() => {
|
|
52
|
+
var O;
|
|
53
|
+
const i = y.current;
|
|
54
|
+
if (!i)
|
|
55
|
+
return;
|
|
56
|
+
const b = i.getRootNode();
|
|
57
|
+
(b instanceof Document || b instanceof ShadowRoot) && K(b);
|
|
58
|
+
const W = typeof ResizeObserver < "u", Y = typeof MutationObserver < "u";
|
|
59
|
+
let p = !1, S = -1;
|
|
60
|
+
const c = {
|
|
61
|
+
dataItems: [],
|
|
62
|
+
indicator: null,
|
|
63
|
+
itemWidths: [],
|
|
64
|
+
indicatorWidth: 0,
|
|
65
|
+
containerWidth: 0,
|
|
66
|
+
gapPx: 0
|
|
67
|
+
}, E = {
|
|
68
|
+
isActive: () => !p && y.current === i && i.isConnected,
|
|
69
|
+
reveal: () => {
|
|
70
|
+
var a;
|
|
71
|
+
const n = Array.from(i.children), s = !!w;
|
|
72
|
+
c.indicator = s ? n[n.length - 1] ?? null : null, c.dataItems = s ? n.slice(0, -1) : n;
|
|
73
|
+
for (const x of c.dataItems)
|
|
74
|
+
x.removeAttribute(m);
|
|
75
|
+
(a = c.indicator) == null || a.removeAttribute(m);
|
|
76
|
+
},
|
|
77
|
+
measure: () => {
|
|
78
|
+
var n;
|
|
79
|
+
c.containerWidth = i.getBoundingClientRect().width, c.itemWidths = c.dataItems.map(
|
|
80
|
+
(s) => s.getBoundingClientRect().width
|
|
81
|
+
), c.indicatorWidth = ((n = c.indicator) == null ? void 0 : n.getBoundingClientRect().width) ?? 0, c.gapPx = typeof o == "number" ? o : Number.parseFloat(getComputedStyle(i).columnGap) || 0;
|
|
82
|
+
},
|
|
83
|
+
apply: () => {
|
|
84
|
+
const { dataItems: n, indicator: s, itemWidths: a, indicatorWidth: x, containerWidth: L, gapPx: N } = c, q = a.reduce((r, I) => r + I, 0) + N * Math.max(0, n.length - 1);
|
|
85
|
+
let h = n.length;
|
|
86
|
+
if (q > L + P) {
|
|
87
|
+
h = 0;
|
|
88
|
+
let r = s ? x : 0;
|
|
89
|
+
for (const I of a) {
|
|
90
|
+
const F = s || h > 0 ? N : 0, T = r + F + I;
|
|
91
|
+
if (T > L + P)
|
|
92
|
+
break;
|
|
93
|
+
r = T, h += 1;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const g = n.length - h;
|
|
97
|
+
for (let r = h; r < n.length; r += 1)
|
|
98
|
+
n[r].setAttribute(m, "");
|
|
99
|
+
g === 0 && (s == null || s.setAttribute(m, "")), B((r) => r === g ? r : g);
|
|
100
|
+
}
|
|
101
|
+
}, d = () => {
|
|
102
|
+
p || ee(E);
|
|
103
|
+
};
|
|
104
|
+
d();
|
|
105
|
+
const k = (n) => {
|
|
106
|
+
var a;
|
|
107
|
+
if (p)
|
|
108
|
+
return;
|
|
109
|
+
const s = (a = n[0]) == null ? void 0 : a.contentRect.width;
|
|
110
|
+
s !== void 0 && Math.abs(s - S) < 1 || (s !== void 0 && (S = s), d());
|
|
111
|
+
}, l = W ? new ResizeObserver(k) : null;
|
|
112
|
+
l == null || l.observe(i);
|
|
113
|
+
const u = W ? new ResizeObserver(d) : null;
|
|
114
|
+
_(u, i);
|
|
115
|
+
const f = Y ? new MutationObserver(() => {
|
|
116
|
+
_(u, i), d();
|
|
117
|
+
}) : null;
|
|
118
|
+
f == null || f.observe(i, { childList: !0 });
|
|
119
|
+
const M = () => d();
|
|
120
|
+
return window.addEventListener("resize", M), typeof document < "u" && ((O = document.fonts) != null && O.ready) && document.fonts.ready.then(d).catch(() => {
|
|
121
|
+
}), () => {
|
|
122
|
+
p = !0, v.delete(E), window.removeEventListener("resize", M), l == null || l.disconnect(), u == null || u.disconnect(), f == null || f.disconnect();
|
|
123
|
+
};
|
|
124
|
+
}, [o, e, R]);
|
|
125
|
+
const H = {
|
|
126
|
+
display: "flex",
|
|
127
|
+
flexWrap: "nowrap",
|
|
128
|
+
alignItems: Q[e],
|
|
129
|
+
justifyContent: U[R],
|
|
130
|
+
gap: typeof o == "number" ? `${o}px` : o,
|
|
131
|
+
// Clip sideways only: `overflow: hidden` also shaved off the 1px shadow a Button
|
|
132
|
+
// paints below itself. `clip`/`visible` is the one pairing CSS won't coerce.
|
|
133
|
+
overflowX: "clip",
|
|
134
|
+
overflowY: "visible",
|
|
135
|
+
minWidth: 0,
|
|
136
|
+
width: "100%"
|
|
137
|
+
};
|
|
138
|
+
return /* @__PURE__ */ $("div", { ref: y, className: D, style: H, "data-overflow-row": "", children: [
|
|
139
|
+
t,
|
|
140
|
+
w ? /* @__PURE__ */ j(
|
|
141
|
+
"div",
|
|
142
|
+
{
|
|
143
|
+
"data-overflow-indicator": "",
|
|
144
|
+
style: { display: "inline-flex", alignItems: "center" },
|
|
145
|
+
children: w(z)
|
|
146
|
+
}
|
|
147
|
+
) : null
|
|
148
|
+
] });
|
|
149
|
+
};
|
|
150
|
+
export {
|
|
151
|
+
se as default
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=OverflowRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OverflowRow.js","sources":["../../src/components/OverflowRow.tsx"],"sourcesContent":["import React, { useLayoutEffect, useRef, useState } from 'react';\n\ninterface OverflowRowProps {\n children?: React.ReactNode;\n gap?: number | string;\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n justify?: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\n className?: string;\n renderOverflow?: (hiddenCount: number) => React.ReactNode;\n}\n\nconst ALIGN_MAP: Record<NonNullable<OverflowRowProps['align']>, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst JUSTIFY_MAP: Record<NonNullable<OverflowRowProps['justify']>, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n 'space-between': 'space-between',\n 'space-around': 'space-around',\n 'space-evenly': 'space-evenly',\n};\n\nconst HIDDEN_ATTR = 'data-overflow-row-hidden';\nconst STYLE_ID = 'malachite-overflow-row-style';\nconst STYLE_CONTENT = `[data-overflow-row] > * { flex-shrink: 0; min-width: 0; } [${HIDDEN_ATTR}] { display: none !important; }`;\n\n// Sub-pixel tolerance for comparing summed child widths against the container.\nconst FIT_EPSILON_PX = 0.5;\n\nconst ensureHiddenStyle = (root: Document | ShadowRoot): void => {\n const existing =\n root instanceof Document\n ? root.getElementById(STYLE_ID)\n : root.querySelector(`#${STYLE_ID}`);\n if (existing) {\n return;\n }\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = STYLE_CONTENT;\n if (root instanceof Document) {\n root.head.appendChild(style);\n } else {\n root.appendChild(style);\n }\n};\n\n/**\n * Measurement is split into phases and batched across ALL OverflowRow instances:\n * first every queued row reveals its children (writes), then every row measures\n * (reads — a single forced layout for the whole batch), then every row applies\n * its hidden set (writes). Interleaving writes and reads per row — let alone per\n * child, as a hide-one-remeasure loop does — forces a full layout each time,\n * which froze Safari when many rows mounted in one commit (virtualized tables).\n */\ninterface MeasureInstance {\n isActive: () => boolean;\n reveal: () => void;\n measure: () => void;\n apply: () => void;\n}\n\nconst pendingInstances = new Set<MeasureInstance>();\nlet flushQueued = false;\n\nconst flushMeasurements = (): void => {\n flushQueued = false;\n const batch = Array.from(pendingInstances);\n pendingInstances.clear();\n const active = batch.filter((instance) => instance.isActive());\n for (const instance of active) {\n instance.reveal();\n }\n for (const instance of active) {\n instance.measure();\n }\n for (const instance of active) {\n instance.apply();\n }\n};\n\n// Catch intrinsic child resizes (image load, style swap). Observe each child once —\n// re-observing per pass is what fed the old reflow storm (ENG-1166). Takes the observer as\n// an argument so the effect that allocates it is also the only thing that disconnects it.\nconst syncChildObservers = (observer: ResizeObserver | null, row: HTMLElement): void => {\n if (!observer) {\n return;\n }\n observer.disconnect();\n for (const child of Array.from(row.children) as HTMLElement[]) {\n observer.observe(child);\n }\n};\n\n// Microtask (not rAF) so a measure requested during React's commit still lands\n// before paint — no flash of clipped children on mount.\nconst enqueueMeasurement = (instance: MeasureInstance): void => {\n pendingInstances.add(instance);\n if (!flushQueued) {\n flushQueued = true;\n queueMicrotask(flushMeasurements);\n }\n};\n\nconst OverflowRow: React.FC<OverflowRowProps> = ({\n children,\n gap = 0,\n align = 'center',\n justify = 'start',\n className,\n renderOverflow,\n}) => {\n const rowRef = useRef<HTMLDivElement>(null);\n const [hiddenCount, setHiddenCount] = useState(0);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-run only on gap/align/justify; see dep-array comment\n useLayoutEffect(() => {\n const row = rowRef.current;\n if (!row) {\n return;\n }\n\n const rootNode = row.getRootNode();\n if (rootNode instanceof Document || rootNode instanceof ShadowRoot) {\n ensureHiddenStyle(rootNode);\n }\n\n const hasResizeObserver = typeof ResizeObserver !== 'undefined';\n const hasMutationObserver = typeof MutationObserver !== 'undefined';\n\n let cancelled = false;\n let lastWidth = -1;\n\n // Per-pass scratch shared between the phases of one flush.\n const scratch = {\n dataItems: [] as HTMLElement[],\n indicator: null as HTMLElement | null,\n itemWidths: [] as number[],\n indicatorWidth: 0,\n containerWidth: 0,\n gapPx: 0,\n };\n\n const instance: MeasureInstance = {\n isActive: () => !cancelled && rowRef.current === row && row.isConnected,\n reveal: () => {\n const items = Array.from(row.children) as HTMLElement[];\n const hasIndicator = !!renderOverflow;\n scratch.indicator = hasIndicator ? (items[items.length - 1] ?? null) : null;\n scratch.dataItems = hasIndicator ? items.slice(0, -1) : items;\n for (const item of scratch.dataItems) {\n item.removeAttribute(HIDDEN_ATTR);\n }\n scratch.indicator?.removeAttribute(HIDDEN_ATTR);\n },\n measure: () => {\n scratch.containerWidth = row.getBoundingClientRect().width;\n scratch.itemWidths = scratch.dataItems.map(\n (item) => item.getBoundingClientRect().width,\n );\n scratch.indicatorWidth = scratch.indicator?.getBoundingClientRect().width ?? 0;\n scratch.gapPx =\n typeof gap === 'number'\n ? gap\n : Number.parseFloat(getComputedStyle(row).columnGap) || 0;\n },\n apply: () => {\n const { dataItems, indicator, itemWidths, indicatorWidth, containerWidth, gapPx } =\n scratch;\n const totalWidth =\n itemWidths.reduce((sum, width) => sum + width, 0) +\n gapPx * Math.max(0, dataItems.length - 1);\n\n let visibleCount = dataItems.length;\n if (totalWidth > containerWidth + FIT_EPSILON_PX) {\n // Overflowing: reserve the indicator (when present), then fit\n // greedily. With an indicator, K visible items means K gaps\n // (item1 gap … itemK gap indicator); without one it is K-1.\n visibleCount = 0;\n let used = indicator ? indicatorWidth : 0;\n for (const width of itemWidths) {\n const gapCost = indicator || visibleCount > 0 ? gapPx : 0;\n const next = used + gapCost + width;\n if (next > containerWidth + FIT_EPSILON_PX) {\n break;\n }\n used = next;\n visibleCount += 1;\n }\n }\n\n const nextHidden = dataItems.length - visibleCount;\n for (let i = visibleCount; i < dataItems.length; i += 1) {\n dataItems[i].setAttribute(HIDDEN_ATTR, '');\n }\n if (nextHidden === 0) {\n indicator?.setAttribute(HIDDEN_ATTR, '');\n }\n setHiddenCount((prev) => (prev === nextHidden ? prev : nextHidden));\n },\n };\n\n const schedule = (): void => {\n if (!cancelled) {\n enqueueMeasurement(instance);\n }\n };\n\n schedule();\n\n const onRowResize = (entries: ResizeObserverEntry[]): void => {\n if (cancelled) {\n return;\n }\n // contentRect from the observer, not a clientWidth read — a layout\n // query here would force the layout this design avoids. lastWidth is\n // tracked exclusively in these units so the guard compares like with\n // like (getBoundingClientRect is border-box and rounds differently).\n const width = entries[0]?.contentRect.width;\n if (width !== undefined && Math.abs(width - lastWidth) < 1) {\n return;\n }\n if (width !== undefined) {\n lastWidth = width;\n }\n schedule();\n };\n const rowResize = hasResizeObserver ? new ResizeObserver(onRowResize) : null;\n rowResize?.observe(row);\n\n const childResize = hasResizeObserver ? new ResizeObserver(schedule) : null;\n syncChildObservers(childResize, row);\n\n // Re-sync child observers on add/remove only; HIDDEN_ATTR toggles are attribute\n // mutations and can't re-trigger this.\n const mutation = hasMutationObserver\n ? new MutationObserver(() => {\n syncChildObservers(childResize, row);\n schedule();\n })\n : null;\n mutation?.observe(row, { childList: true });\n\n // A row whose parent is content-sized never changes width once it has collapsed: the\n // hidden items shrink it, and the shrunken box is then the only thing observed, so it\n // can never learn that space came back. The viewport is the signal that survives that,\n // and a re-measure is idempotent (reveal() restores every item before measuring).\n const onViewportResize = (): void => schedule();\n window.addEventListener('resize', onViewportResize);\n\n if (typeof document !== 'undefined' && document.fonts?.ready) {\n document.fonts.ready.then(schedule).catch(() => undefined);\n }\n\n return () => {\n cancelled = true;\n pendingInstances.delete(instance);\n window.removeEventListener('resize', onViewportResize);\n rowResize?.disconnect();\n childResize?.disconnect();\n mutation?.disconnect();\n };\n // gap/align/justify change what fits at an unchanged width, so re-run on them.\n }, [gap, align, justify]);\n\n const containerStyle: React.CSSProperties = {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: ALIGN_MAP[align],\n justifyContent: JUSTIFY_MAP[justify],\n gap: typeof gap === 'number' ? `${gap}px` : gap,\n // Clip sideways only: `overflow: hidden` also shaved off the 1px shadow a Button\n // paints below itself. `clip`/`visible` is the one pairing CSS won't coerce.\n overflowX: 'clip',\n overflowY: 'visible',\n minWidth: 0,\n width: '100%',\n };\n\n return (\n <div ref={rowRef} className={className} style={containerStyle} data-overflow-row=\"\">\n {children}\n {renderOverflow ? (\n <div\n data-overflow-indicator=\"\"\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n {renderOverflow(hiddenCount)}\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default OverflowRow;\n"],"names":["ALIGN_MAP","JUSTIFY_MAP","HIDDEN_ATTR","STYLE_ID","STYLE_CONTENT","FIT_EPSILON_PX","ensureHiddenStyle","root","style","pendingInstances","flushQueued","flushMeasurements","batch","active","instance","syncChildObservers","observer","row","child","enqueueMeasurement","OverflowRow","children","gap","align","justify","className","renderOverflow","rowRef","useRef","hiddenCount","setHiddenCount","useState","useLayoutEffect","rootNode","hasResizeObserver","hasMutationObserver","cancelled","lastWidth","scratch","items","hasIndicator","item","_a","dataItems","indicator","itemWidths","indicatorWidth","containerWidth","gapPx","totalWidth","sum","width","visibleCount","used","gapCost","next","nextHidden","i","prev","schedule","onRowResize","entries","rowResize","childResize","mutation","onViewportResize","containerStyle","jsxs","jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
2
|
+
const r = (e) => {
|
|
3
|
+
switch (e) {
|
|
4
|
+
case "xsmall":
|
|
5
|
+
return "4px";
|
|
6
|
+
case "small":
|
|
7
|
+
return "7px";
|
|
8
|
+
case "medium":
|
|
9
|
+
return "14px";
|
|
10
|
+
case "large":
|
|
11
|
+
return "28px";
|
|
12
|
+
case "none":
|
|
13
|
+
return "0";
|
|
14
|
+
default:
|
|
15
|
+
return "14px";
|
|
16
|
+
}
|
|
17
|
+
}, l = ({
|
|
18
|
+
vertical: e,
|
|
19
|
+
horizontal: t,
|
|
20
|
+
children: a,
|
|
21
|
+
fullHeight: s = !0,
|
|
22
|
+
className: n = "",
|
|
23
|
+
overflow: d = "visible"
|
|
24
|
+
}) => /* @__PURE__ */ u(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
className: n,
|
|
28
|
+
style: {
|
|
29
|
+
padding: `${r(e)} ${r(t)}`,
|
|
30
|
+
height: s ? "100%" : void 0,
|
|
31
|
+
overflow: d
|
|
32
|
+
},
|
|
33
|
+
children: a
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
export {
|
|
37
|
+
l as default
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=Padded.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Padded.js","sources":["../../src/components/Padded.tsx"],"sourcesContent":["import React from 'react';\n\nexport type PaddingSize = 'xsmall' | 'small' | 'medium' | 'large' | 'none';\n\ninterface PaddedProps {\n vertical: PaddingSize;\n horizontal: PaddingSize;\n children: React.ReactNode;\n fullHeight?: boolean;\n className?: string;\n overflow?: 'hidden' | 'visible' | 'scroll' | 'auto';\n}\n\nconst getPadding = (size: PaddingSize) => {\n switch (size) {\n case 'xsmall':\n return '4px';\n case 'small':\n return '7px';\n case 'medium':\n return '14px';\n case 'large':\n return '28px';\n case 'none':\n return '0';\n default:\n return '14px';\n }\n};\n\nconst Padded: React.FC<PaddedProps> = ({\n vertical,\n horizontal,\n children,\n fullHeight = true,\n className = '',\n overflow = 'visible',\n}) => {\n return (\n <div\n className={className}\n style={{\n padding: `${getPadding(vertical)} ${getPadding(horizontal)}`,\n height: fullHeight ? '100%' : undefined,\n overflow,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Padded;\n"],"names":["getPadding","size","Padded","vertical","horizontal","children","fullHeight","className","overflow","jsx"],"mappings":";AAaA,MAAMA,IAAa,CAACC,MAAsB;AACtC,UAAQA,GAAA;AAAA,IACJ,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX;AACI,aAAO;AAAA,EAAA;AAEnB,GAEMC,IAAgC,CAAC;AAAA,EACnC,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AACf,MAEQ,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,WAAAF;AAAA,IACA,OAAO;AAAA,MACH,SAAS,GAAGP,EAAWG,CAAQ,CAAC,IAAIH,EAAWI,CAAU,CAAC;AAAA,MAC1D,QAAQE,IAAa,SAAS;AAAA,MAC9B,UAAAE;AAAA,IAAA;AAAA,IAGH,UAAAH;AAAA,EAAA;AAAA;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const a = "var(--malachite-radius-xxxl, 16px)", o = "w-full overflow-hidden bg-[var(--malachite-card-background)] border border-solid border-[var(--malachite-card-border)]", c = "border-b border-solid border-[var(--malachite-card-border)]", e = 56, d = "calc(100vh - 16px)", t = "calc(100vh - 136px)", r = "--malachite-page-content-inset", l = `var(${r}, 0px)`;
|
|
2
|
+
export {
|
|
3
|
+
o as CARD_CLASSES,
|
|
4
|
+
d as CARD_MIN_HEIGHT,
|
|
5
|
+
a as CARD_RADIUS,
|
|
6
|
+
l as CONTENT_INSET,
|
|
7
|
+
r as CONTENT_INSET_VAR,
|
|
8
|
+
t as CONTENT_MIN_HEIGHT,
|
|
9
|
+
c as DIVIDER_CLASSES,
|
|
10
|
+
e as HEADER_HEIGHT
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../src/components/PageLayout/constants.ts"],"sourcesContent":["// Not a <Surface>: that is a 14px card and paints a box-shadow this page card must not have.\nexport const CARD_RADIUS = 'var(--malachite-radius-xxxl, 16px)';\nexport const CARD_CLASSES =\n 'w-full overflow-hidden bg-[var(--malachite-card-background)] border border-solid border-[var(--malachite-card-border)]';\nexport const DIVIDER_CLASSES = 'border-b border-solid border-[var(--malachite-card-border)]';\n\n// 56, not Figma's 60: the app sidebar's divider sits at 9 + 56 and this header's must land\n// on the same line (8px page inset + 1px card border + 56). Move both together or neither.\nexport const HEADER_HEIGHT = 56;\nexport const CARD_MIN_HEIGHT = 'calc(100vh - 16px)';\n// 136 is not derivable from the constants above: the extra 64px is app chrome above the card.\nexport const CONTENT_MIN_HEIGHT = 'calc(100vh - 136px)';\n\n// Set by RegularLayout to its own horizontal content padding, so a `bleed` child can pull\n// itself out to the page card's edges without knowing which layout variant wraps it.\nexport const CONTENT_INSET_VAR = '--malachite-page-content-inset';\nexport const CONTENT_INSET = `var(${CONTENT_INSET_VAR}, 0px)`;\n"],"names":["CARD_RADIUS","CARD_CLASSES","DIVIDER_CLASSES","HEADER_HEIGHT","CARD_MIN_HEIGHT","CONTENT_MIN_HEIGHT","CONTENT_INSET_VAR","CONTENT_INSET"],"mappings":"AACO,MAAMA,IAAc,sCACdC,IACT,0HACSC,IAAkB,+DAIlBC,IAAgB,IAChBC,IAAkB,sBAElBC,IAAqB,uBAIrBC,IAAoB,kCACpBC,IAAgB,OAAOD,CAAiB;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import E from "../Typography/Text.js";
|
|
3
|
+
import { CARD_MIN_HEIGHT as b, CARD_RADIUS as I, CARD_CLASSES as N, HEADER_HEIGHT as f, DIVIDER_CLASSES as v, CONTENT_MIN_HEIGHT as H } from "./constants.js";
|
|
4
|
+
const u = ({
|
|
5
|
+
title: i,
|
|
6
|
+
children: s,
|
|
7
|
+
centered: n = !1,
|
|
8
|
+
uniformPadding: l = !1,
|
|
9
|
+
headerActions: r,
|
|
10
|
+
background: t,
|
|
11
|
+
role: d,
|
|
12
|
+
"aria-label": m,
|
|
13
|
+
"aria-labelledby": c,
|
|
14
|
+
className: h = "",
|
|
15
|
+
style: o
|
|
16
|
+
}) => {
|
|
17
|
+
const p = l ? "8px" : n ? "5vh 14vw" : "40px";
|
|
18
|
+
return /* @__PURE__ */ a(
|
|
19
|
+
"main",
|
|
20
|
+
{
|
|
21
|
+
className: `${N} ${h}`,
|
|
22
|
+
style: { borderRadius: I, minHeight: b, ...o },
|
|
23
|
+
role: d,
|
|
24
|
+
"aria-label": m,
|
|
25
|
+
"aria-labelledby": c,
|
|
26
|
+
children: [
|
|
27
|
+
/* @__PURE__ */ a(
|
|
28
|
+
"div",
|
|
29
|
+
{
|
|
30
|
+
className: `flex items-center justify-between gap-4 ${v}`,
|
|
31
|
+
style: {
|
|
32
|
+
height: f,
|
|
33
|
+
paddingInlineStart: l ? 8 : 28,
|
|
34
|
+
paddingInlineEnd: l ? 8 : 16
|
|
35
|
+
},
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ e("div", { className: "min-w-0", children: i ? /* @__PURE__ */ e(E, { fontWeight: "bold", children: i }) : null }),
|
|
38
|
+
r
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ a(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
className: "relative",
|
|
46
|
+
style: { padding: p, minHeight: H },
|
|
47
|
+
children: [
|
|
48
|
+
t ? /* @__PURE__ */ e("div", { "aria-hidden": "true", className: "absolute bottom-0 left-0 h-1/2 w-full z-0", children: t }) : null,
|
|
49
|
+
/* @__PURE__ */ e("div", { className: "relative z-10", children: s })
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
export {
|
|
58
|
+
u as EmptyLayout,
|
|
59
|
+
u as default
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=emptyLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emptyLayout.js","sources":["../../../src/components/PageLayout/emptyLayout.tsx"],"sourcesContent":["import React from 'react';\nimport Text from '../Typography/Text';\nimport {\n CARD_CLASSES,\n CARD_MIN_HEIGHT,\n CARD_RADIUS,\n CONTENT_MIN_HEIGHT,\n DIVIDER_CLASSES,\n HEADER_HEIGHT,\n} from './constants';\n\nexport interface EmptyLayoutProps {\n title?: string;\n children: React.ReactNode;\n centered?: boolean;\n uniformPadding?: boolean;\n headerActions?: React.ReactNode;\n background?: React.ReactNode;\n /** Demotes the default `main` landmark — pass e.g. `region` when the app owns its own. */\n role?: React.AriaRole;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst EmptyLayout: React.FC<EmptyLayoutProps> = ({\n title,\n children,\n centered = false,\n uniformPadding = false,\n headerActions,\n background,\n role,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n className = '',\n style,\n}) => {\n const contentPadding = uniformPadding ? '8px' : centered ? '5vh 14vw' : '40px';\n\n return (\n <main\n className={`${CARD_CLASSES} ${className}`}\n style={{ borderRadius: CARD_RADIUS, minHeight: CARD_MIN_HEIGHT, ...style }}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div\n className={`flex items-center justify-between gap-4 ${DIVIDER_CLASSES}`}\n style={{\n height: HEADER_HEIGHT,\n paddingInlineStart: uniformPadding ? 8 : 28,\n paddingInlineEnd: uniformPadding ? 8 : 16,\n }}\n >\n <div className=\"min-w-0\">\n {title ? <Text fontWeight=\"bold\">{title}</Text> : null}\n </div>\n {headerActions}\n </div>\n\n <div\n className=\"relative\"\n style={{ padding: contentPadding, minHeight: CONTENT_MIN_HEIGHT }}\n >\n {background ? (\n <div aria-hidden=\"true\" className=\"absolute bottom-0 left-0 h-1/2 w-full z-0\">\n {background}\n </div>\n ) : null}\n <div className=\"relative z-10\">{children}</div>\n </div>\n </main>\n );\n};\n\nexport default EmptyLayout;\nexport { EmptyLayout };\n"],"names":["EmptyLayout","title","children","centered","uniformPadding","headerActions","background","role","ariaLabel","ariaLabelledBy","className","style","contentPadding","jsxs","CARD_CLASSES","CARD_RADIUS","CARD_MIN_HEIGHT","DIVIDER_CLASSES","HEADER_HEIGHT","jsx","Text","CONTENT_MIN_HEIGHT"],"mappings":";;;AA0BA,MAAMA,IAA0C,CAAC;AAAA,EAC7C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,gBAAAC,IAAiB;AAAA,EACjB,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAcC;AAAA,EACd,mBAAmBC;AAAA,EACnB,WAAAC,IAAY;AAAA,EACZ,OAAAC;AACJ,MAAM;AACF,QAAMC,IAAiBR,IAAiB,QAAQD,IAAW,aAAa;AAExE,SACI,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW,GAAGC,CAAY,IAAIJ,CAAS;AAAA,MACvC,OAAO,EAAE,cAAcK,GAAa,WAAWC,GAAiB,GAAGL,EAAA;AAAA,MACnE,MAAAJ;AAAA,MACA,cAAYC;AAAA,MACZ,mBAAiBC;AAAA,MAEjB,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,WAAW,2CAA2CI,CAAe;AAAA,YACrE,OAAO;AAAA,cACH,QAAQC;AAAA,cACR,oBAAoBd,IAAiB,IAAI;AAAA,cACzC,kBAAkBA,IAAiB,IAAI;AAAA,YAAA;AAAA,YAG3C,UAAA;AAAA,cAAA,gBAAAe,EAAC,OAAA,EAAI,WAAU,WACV,UAAAlB,IAAQ,gBAAAkB,EAACC,KAAK,YAAW,QAAQ,UAAAnB,EAAA,CAAM,IAAU,MACtD;AAAA,cACCI;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGL,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,WAAU;AAAA,YACV,OAAO,EAAE,SAASD,GAAgB,WAAWS,EAAA;AAAA,YAE5C,UAAA;AAAA,cAAAf,sBACI,OAAA,EAAI,eAAY,QAAO,WAAU,6CAC7B,aACL,IACA;AAAA,cACJ,gBAAAa,EAAC,OAAA,EAAI,WAAU,iBAAiB,UAAAjB,EAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAC7C;AAAA,IAAA;AAAA,EAAA;AAGZ;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EmptyLayout as o } from "./emptyLayout.js";
|
|
2
|
+
import { RegularLayout as t } from "./regularLayout.js";
|
|
3
|
+
import { PageActions as u } from "./regularLayout.js";
|
|
4
|
+
const e = { Regular: t, Empty: o };
|
|
5
|
+
export {
|
|
6
|
+
u as PageActions,
|
|
7
|
+
e as PageLayout,
|
|
8
|
+
e as default
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/PageLayout/index.tsx"],"sourcesContent":["import Empty from './emptyLayout';\nimport Regular from './regularLayout';\n\nexport const PageLayout = { Regular, Empty };\n\nexport default PageLayout;\nexport type { BreadcrumbLink, PageAction, RenderBreadcrumbLink } from './types';\nexport { PageActions } from './regularLayout';\nexport type { PageContentGap, RegularLayoutProps } from './regularLayout';\nexport type { EmptyLayoutProps } from './emptyLayout';\n"],"names":["PageLayout","Regular","Empty"],"mappings":";;;AAGO,MAAMA,IAAa,EAAA,SAAEC,UAASC,EAAA;"}
|