@stackone/malachite 2.21.0 → 2.22.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 +91 -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 +847 -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 +643 -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 +1045 -89
- 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,38 @@
|
|
|
1
|
+
const T = 8;
|
|
2
|
+
const D = /* @__PURE__ */ new Set(["small", "medium"]), G = (P, t = !1) => D.has(P) && !t, e = ({
|
|
3
|
+
triggerRect: P,
|
|
4
|
+
panelWidth: t,
|
|
5
|
+
panelHeight: o,
|
|
6
|
+
size: I,
|
|
7
|
+
fullWidth: L = !1,
|
|
8
|
+
viewportWidth: A,
|
|
9
|
+
viewportHeight: a
|
|
10
|
+
}) => {
|
|
11
|
+
const s = A - 16;
|
|
12
|
+
let E, _;
|
|
13
|
+
if (G(I, L)) {
|
|
14
|
+
_ = Math.min(t || 180, s);
|
|
15
|
+
const n = A - _ - 8;
|
|
16
|
+
E = Math.max(8, Math.min(P.right - _, n));
|
|
17
|
+
} else {
|
|
18
|
+
_ = Math.min(P.width, s);
|
|
19
|
+
const n = A - _ - 8;
|
|
20
|
+
E = Math.max(8, Math.min(P.left, n));
|
|
21
|
+
}
|
|
22
|
+
const m = a - P.bottom, N = o > 0 && m < o + 8;
|
|
23
|
+
return {
|
|
24
|
+
top: N ? P.top - o - 8 : P.bottom + 8,
|
|
25
|
+
left: E,
|
|
26
|
+
width: _,
|
|
27
|
+
openUp: N
|
|
28
|
+
};
|
|
29
|
+
}, l = (P, t, o) => P.bottom < 0 || P.top > o || P.right < 0 || P.left > t, X = (P) => `${P.top},${P.left},${P.width},${P.height}`;
|
|
30
|
+
export {
|
|
31
|
+
D as CONTENT_SIZED_PANEL,
|
|
32
|
+
T as PANEL_VIEWPORT_PADDING_PX,
|
|
33
|
+
e as computePanelGeometry,
|
|
34
|
+
G as isContentSizedPanel,
|
|
35
|
+
l as isTriggerOffscreen,
|
|
36
|
+
X as rectSignature
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=dropdownPanelPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdownPanelPosition.js","sources":["../../src/components/dropdownPanelPosition.ts"],"sourcesContent":["import type { DropdownSize } from './Dropdown';\n\nconst PANEL_TRIGGER_GAP_PX = 8;\nexport const PANEL_VIEWPORT_PADDING_PX = 8;\n\n/** Before layout `offsetWidth` is 0, so the first pass needs a width to work from. */\nconst PANEL_FALLBACK_WIDTH_PX = 180;\n\n/** The smaller triggers are chips: their panel sizes to its content and right-aligns. */\nexport const CONTENT_SIZED_PANEL: ReadonlySet<DropdownSize> = new Set(['small', 'medium']);\n\nexport const isContentSizedPanel = (size: DropdownSize, fullWidth = false): boolean =>\n CONTENT_SIZED_PANEL.has(size) && !fullWidth;\n\nexport interface PanelGeometry {\n top: number;\n left: number;\n width: number;\n openUp: boolean;\n}\n\nexport interface PanelGeometryInput {\n triggerRect: Pick<DOMRect, 'top' | 'left' | 'right' | 'bottom' | 'width'>;\n panelWidth: number;\n panelHeight: number;\n size: DropdownSize;\n fullWidth?: boolean;\n viewportWidth: number;\n viewportHeight: number;\n}\n\nexport const computePanelGeometry = ({\n triggerRect,\n panelWidth,\n panelHeight,\n size,\n fullWidth = false,\n viewportWidth,\n viewportHeight,\n}: PanelGeometryInput): PanelGeometry => {\n const maxViewportWidth = viewportWidth - PANEL_VIEWPORT_PADDING_PX * 2;\n\n let left: number;\n let width: number;\n if (isContentSizedPanel(size, fullWidth)) {\n width = Math.min(panelWidth || PANEL_FALLBACK_WIDTH_PX, maxViewportWidth);\n const maxLeft = viewportWidth - width - PANEL_VIEWPORT_PADDING_PX;\n left = Math.max(PANEL_VIEWPORT_PADDING_PX, Math.min(triggerRect.right - width, maxLeft));\n } else {\n width = Math.min(triggerRect.width, maxViewportWidth);\n const maxLeft = viewportWidth - width - PANEL_VIEWPORT_PADDING_PX;\n left = Math.max(PANEL_VIEWPORT_PADDING_PX, Math.min(triggerRect.left, maxLeft));\n }\n\n const spaceBelow = viewportHeight - triggerRect.bottom;\n const openUp = panelHeight > 0 && spaceBelow < panelHeight + PANEL_VIEWPORT_PADDING_PX;\n\n return {\n top: openUp\n ? triggerRect.top - panelHeight - PANEL_TRIGGER_GAP_PX\n : triggerRect.bottom + PANEL_TRIGGER_GAP_PX,\n left,\n width,\n openUp,\n };\n};\n\n/** A panel anchored to a trigger nobody can see is floating over unrelated content. */\nexport const isTriggerOffscreen = (\n rect: Pick<DOMRect, 'top' | 'left' | 'right' | 'bottom'>,\n viewportWidth: number,\n viewportHeight: number,\n): boolean =>\n rect.bottom < 0 || rect.top > viewportHeight || rect.right < 0 || rect.left > viewportWidth;\n\n/** Cheap equality for the frame loop: reposition only when the trigger has actually moved. */\nexport const rectSignature = (\n rect: Pick<DOMRect, 'top' | 'left' | 'width' | 'height'>,\n): string => `${rect.top},${rect.left},${rect.width},${rect.height}`;\n"],"names":["PANEL_VIEWPORT_PADDING_PX","CONTENT_SIZED_PANEL","isContentSizedPanel","size","fullWidth","computePanelGeometry","triggerRect","panelWidth","panelHeight","viewportWidth","viewportHeight","maxViewportWidth","left","width","maxLeft","spaceBelow","openUp","isTriggerOffscreen","rect","rectSignature"],"mappings":"AAGO,MAAMA,IAA4B;AAMlC,MAAMC,IAAiD,oBAAI,IAAI,CAAC,SAAS,QAAQ,CAAC,GAE5EC,IAAsB,CAACC,GAAoBC,IAAY,OAChEH,EAAoB,IAAIE,CAAI,KAAK,CAACC,GAmBzBC,IAAuB,CAAC;AAAA,EACjC,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,MAAAL;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,eAAAK;AAAA,EACA,gBAAAC;AACJ,MAAyC;AACrC,QAAMC,IAAmBF,IAAgB;AAEzC,MAAIG,GACAC;AACJ,MAAIX,EAAoBC,GAAMC,CAAS,GAAG;AACtC,IAAAS,IAAQ,KAAK,IAAIN,KAAc,KAAyBI,CAAgB;AACxE,UAAMG,IAAUL,IAAgBI,IAAQ;AACxC,IAAAD,IAAO,KAAK,IAAI,GAA2B,KAAK,IAAIN,EAAY,QAAQO,GAAOC,CAAO,CAAC;AAAA,EAC3F,OAAO;AACH,IAAAD,IAAQ,KAAK,IAAIP,EAAY,OAAOK,CAAgB;AACpD,UAAMG,IAAUL,IAAgBI,IAAQ;AACxC,IAAAD,IAAO,KAAK,IAAI,GAA2B,KAAK,IAAIN,EAAY,MAAMQ,CAAO,CAAC;AAAA,EAClF;AAEA,QAAMC,IAAaL,IAAiBJ,EAAY,QAC1CU,IAASR,IAAc,KAAKO,IAAaP,IAAc;AAE7D,SAAO;AAAA,IACH,KAAKQ,IACCV,EAAY,MAAME,IAAc,IAChCF,EAAY,SAAS;AAAA,IAC3B,MAAAM;AAAA,IACA,OAAAC;AAAA,IACA,QAAAG;AAAA,EAAA;AAER,GAGaC,IAAqB,CAC9BC,GACAT,GACAC,MAEAQ,EAAK,SAAS,KAAKA,EAAK,MAAMR,KAAkBQ,EAAK,QAAQ,KAAKA,EAAK,OAAOT,GAGrEU,IAAgB,CACzBD,MACS,GAAGA,EAAK,GAAG,IAAIA,EAAK,IAAI,IAAIA,EAAK,KAAK,IAAIA,EAAK,MAAM;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const x = "data-malachite-dropdown-trigger", b = "var(--malachite-card-background, rgb(255, 255, 255))", l = "var(--malachite-dropdown-disabled-background, rgb(241, 241, 241))", c = "var(--malachite-text-placeholder, rgb(187, 187, 187))", a = {
|
|
2
|
+
disabled: "var(--malachite-dropdown-border, rgb(232, 232, 232))",
|
|
3
|
+
active: "var(--malachite-dropdown-border-active, rgba(0, 175, 102, 0.6))",
|
|
4
|
+
filter: "var(--malachite-dropdown-border-filter, rgba(0, 175, 102, 0.4))",
|
|
5
|
+
error: "var(--malachite-dropdown-border-error, rgba(239, 55, 55, 0.6))",
|
|
6
|
+
pending: "var(--malachite-dropdown-border-pending, rgba(241, 139, 10, 0.6))"
|
|
7
|
+
}, o = {
|
|
8
|
+
disabled: "var(--malachite-dropdown-shadow, 0px 1px 0px 0px rgba(0, 0, 0, 0.15))",
|
|
9
|
+
active: "var(--malachite-dropdown-shadow-active, 0px 1px 0px 0px rgba(0, 175, 102, 0.8))",
|
|
10
|
+
filter: "var(--malachite-dropdown-shadow-filter, 0px 1px 0px 0px rgba(0, 175, 102, 0.6))",
|
|
11
|
+
error: "var(--malachite-dropdown-shadow-error, 0px 1px 0px 0px rgba(239, 55, 55, 0.8), 0px 0px 0px 2px rgba(239, 55, 55, 0.1))",
|
|
12
|
+
pending: "var(--malachite-dropdown-shadow-pending, 0px 1px 0px 0px rgba(241, 139, 10, 0.8), 0px 0px 0px 2px rgba(241, 139, 10, 0.1))"
|
|
13
|
+
};
|
|
14
|
+
function g({
|
|
15
|
+
disabled: i,
|
|
16
|
+
error: e,
|
|
17
|
+
tone: p,
|
|
18
|
+
open: t,
|
|
19
|
+
loading: d,
|
|
20
|
+
hasSelection: n
|
|
21
|
+
}) {
|
|
22
|
+
if (i)
|
|
23
|
+
return {
|
|
24
|
+
backgroundColor: l,
|
|
25
|
+
borderColor: a.disabled,
|
|
26
|
+
boxShadow: e ? o.error : o.disabled,
|
|
27
|
+
color: c
|
|
28
|
+
};
|
|
29
|
+
const r = { backgroundColor: b };
|
|
30
|
+
return d && (r.opacity = 0.6), e ? { ...r, borderColor: a.error, boxShadow: o.error } : p === "pending" ? { ...r, borderColor: a.pending, boxShadow: o.pending } : d ? { ...r, borderColor: a.filter, boxShadow: o.filter } : t ? { ...r, borderColor: a.active, boxShadow: o.active } : n ? { ...r, borderColor: a.filter, boxShadow: o.filter } : r;
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
x as DROPDOWN_TRIGGER_ATTR,
|
|
34
|
+
g as getTriggerVisual
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=dropdownTriggerStyle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdownTriggerStyle.js","sources":["../../src/components/dropdownTriggerStyle.ts"],"sourcesContent":["import { type CSSProperties } from 'react';\n\nexport const DROPDOWN_TRIGGER_ATTR = 'data-malachite-dropdown-trigger';\n\nconst CARD_BACKGROUND = 'var(--malachite-card-background, rgb(255, 255, 255))';\nconst DISABLED_BACKGROUND = 'var(--malachite-dropdown-disabled-background, rgb(241, 241, 241))';\nconst DISABLED_TEXT = 'var(--malachite-text-placeholder, rgb(187, 187, 187))';\n\nconst BORDER = {\n disabled: 'var(--malachite-dropdown-border, rgb(232, 232, 232))',\n active: 'var(--malachite-dropdown-border-active, rgba(0, 175, 102, 0.6))',\n filter: 'var(--malachite-dropdown-border-filter, rgba(0, 175, 102, 0.4))',\n error: 'var(--malachite-dropdown-border-error, rgba(239, 55, 55, 0.6))',\n pending: 'var(--malachite-dropdown-border-pending, rgba(241, 139, 10, 0.6))',\n} as const;\n\nconst SHADOW = {\n disabled: 'var(--malachite-dropdown-shadow, 0px 1px 0px 0px rgba(0, 0, 0, 0.15))',\n active: 'var(--malachite-dropdown-shadow-active, 0px 1px 0px 0px rgba(0, 175, 102, 0.8))',\n filter: 'var(--malachite-dropdown-shadow-filter, 0px 1px 0px 0px rgba(0, 175, 102, 0.6))',\n error: 'var(--malachite-dropdown-shadow-error, 0px 1px 0px 0px rgba(239, 55, 55, 0.8), 0px 0px 0px 2px rgba(239, 55, 55, 0.1))',\n pending:\n 'var(--malachite-dropdown-shadow-pending, 0px 1px 0px 0px rgba(241, 139, 10, 0.8), 0px 0px 0px 2px rgba(241, 139, 10, 0.1))',\n} as const;\n\nexport type DropdownTone = 'default' | 'pending';\n\nexport interface TriggerVisualState {\n disabled?: boolean;\n error?: boolean;\n tone?: DropdownTone;\n open?: boolean;\n loading?: boolean;\n hasSelection?: boolean;\n}\n\nexport function getTriggerVisual({\n disabled,\n error,\n tone,\n open,\n loading,\n hasSelection,\n}: TriggerVisualState): CSSProperties {\n if (disabled) {\n return {\n backgroundColor: DISABLED_BACKGROUND,\n borderColor: BORDER.disabled,\n boxShadow: error ? SHADOW.error : SHADOW.disabled,\n color: DISABLED_TEXT,\n };\n }\n const base: CSSProperties = { backgroundColor: CARD_BACKGROUND };\n if (loading) {\n base.opacity = 0.6;\n }\n if (error) {\n return { ...base, borderColor: BORDER.error, boxShadow: SHADOW.error };\n }\n if (tone === 'pending') {\n return { ...base, borderColor: BORDER.pending, boxShadow: SHADOW.pending };\n }\n if (loading) {\n return { ...base, borderColor: BORDER.filter, boxShadow: SHADOW.filter };\n }\n if (open) {\n return { ...base, borderColor: BORDER.active, boxShadow: SHADOW.active };\n }\n if (hasSelection) {\n return { ...base, borderColor: BORDER.filter, boxShadow: SHADOW.filter };\n }\n return base;\n}\n"],"names":["DROPDOWN_TRIGGER_ATTR","CARD_BACKGROUND","DISABLED_BACKGROUND","DISABLED_TEXT","BORDER","SHADOW","getTriggerVisual","disabled","error","tone","open","loading","hasSelection","base"],"mappings":"AAEO,MAAMA,IAAwB,mCAE/BC,IAAkB,wDAClBC,IAAsB,qEACtBC,IAAgB,yDAEhBC,IAAS;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AACb,GAEMC,IAAS;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SACI;AACR;AAaO,SAASC,EAAiB;AAAA,EAC7B,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC;AACJ,GAAsC;AAClC,MAAIL;AACA,WAAO;AAAA,MACH,iBAAiBL;AAAA,MACjB,aAAaE,EAAO;AAAA,MACpB,WAAWI,IAAQH,EAAO,QAAQA,EAAO;AAAA,MACzC,OAAOF;AAAA,IAAA;AAGf,QAAMU,IAAsB,EAAE,iBAAiBZ,EAAA;AAI/C,SAHIU,MACAE,EAAK,UAAU,MAEfL,IACO,EAAE,GAAGK,GAAM,aAAaT,EAAO,OAAO,WAAWC,EAAO,MAAA,IAE/DI,MAAS,YACF,EAAE,GAAGI,GAAM,aAAaT,EAAO,SAAS,WAAWC,EAAO,QAAA,IAEjEM,IACO,EAAE,GAAGE,GAAM,aAAaT,EAAO,QAAQ,WAAWC,EAAO,OAAA,IAEhEK,IACO,EAAE,GAAGG,GAAM,aAAaT,EAAO,QAAQ,WAAWC,EAAO,OAAA,IAEhEO,IACO,EAAE,GAAGC,GAAM,aAAaT,EAAO,QAAQ,WAAWC,EAAO,OAAA,IAE7DQ;AACX;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const e = [], s = (n) => {
|
|
2
|
+
if (n.key !== "Escape" || n.defaultPrevented)
|
|
3
|
+
return;
|
|
4
|
+
const t = e[e.length - 1];
|
|
5
|
+
t && t();
|
|
6
|
+
}, o = (n) => (e.length === 0 && document.addEventListener("keydown", s), e.push(n), () => {
|
|
7
|
+
const t = e.lastIndexOf(n);
|
|
8
|
+
t !== -1 && e.splice(t, 1), e.length === 0 && document.removeEventListener("keydown", s);
|
|
9
|
+
});
|
|
10
|
+
export {
|
|
11
|
+
o as pushEscapeLayer
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=escapeLayers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escapeLayers.js","sources":["../../src/components/escapeLayers.ts"],"sourcesContent":["type EscapeHandler = () => void;\n\nconst layers: EscapeHandler[] = [];\n\nconst handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== 'Escape' || event.defaultPrevented) {\n return;\n }\n const top = layers[layers.length - 1];\n if (top) {\n top();\n }\n};\n\nexport const pushEscapeLayer = (handler: () => void): EscapeHandler => {\n if (layers.length === 0) {\n document.addEventListener('keydown', handleKeyDown);\n }\n layers.push(handler);\n return () => {\n const index = layers.lastIndexOf(handler);\n if (index !== -1) {\n layers.splice(index, 1);\n }\n if (layers.length === 0) {\n document.removeEventListener('keydown', handleKeyDown);\n }\n };\n};\n"],"names":["layers","handleKeyDown","event","top","pushEscapeLayer","handler","index"],"mappings":"AAEA,MAAMA,IAA0B,CAAA,GAE1BC,IAAgB,CAACC,MAA+B;AAClD,MAAIA,EAAM,QAAQ,YAAYA,EAAM;AAChC;AAEJ,QAAMC,IAAMH,EAAOA,EAAO,SAAS,CAAC;AACpC,EAAIG,KACAA,EAAA;AAER,GAEaC,IAAkB,CAACC,OACxBL,EAAO,WAAW,KAClB,SAAS,iBAAiB,WAAWC,CAAa,GAEtDD,EAAO,KAAKK,CAAO,GACZ,MAAM;AACT,QAAMC,IAAQN,EAAO,YAAYK,CAAO;AACxC,EAAIC,MAAU,MACVN,EAAO,OAAOM,GAAO,CAAC,GAEtBN,EAAO,WAAW,KAClB,SAAS,oBAAoB,WAAWC,CAAa;AAE7D;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var e = /* @__PURE__ */ ((r) => (r.XSmall = "xsmall", r.Small = "small", r.Medium = "medium", r.Large = "large", r))(e || {}), a = /* @__PURE__ */ ((r) => (r.Left = "flex-start", r.Right = "flex-end", r.Center = "center", r.SpaceBetween = "space-between", r.SpaceAround = "space-around", r.SpaceEvenly = "space-evenly", r))(a || {}), t = /* @__PURE__ */ ((r) => (r.Top = "flex-start", r.Bottom = "flex-end", r.Center = "center", r.Normal = "normal", r.Stretch = "stretch", r))(t || {}), n = /* @__PURE__ */ ((r) => (r.Horizontal = "horizontal", r.Vertical = "vertical", r))(n || {});
|
|
2
|
+
export {
|
|
3
|
+
t as FlexAlign,
|
|
4
|
+
n as FlexDirection,
|
|
5
|
+
e as FlexGapSize,
|
|
6
|
+
a as FlexJustify
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=flexTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flexTypes.js","sources":["../../src/components/flexTypes.ts"],"sourcesContent":["export enum FlexGapSize {\n XSmall = 'xsmall',\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\nexport enum FlexJustify {\n Left = 'flex-start',\n Right = 'flex-end',\n Center = 'center',\n SpaceBetween = 'space-between',\n SpaceAround = 'space-around',\n SpaceEvenly = 'space-evenly',\n}\n\nexport enum FlexAlign {\n Top = 'flex-start',\n Bottom = 'flex-end',\n Center = 'center',\n Normal = 'normal',\n Stretch = 'stretch',\n}\n\nexport enum FlexDirection {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n}\n"],"names":["FlexGapSize","FlexJustify","FlexAlign","FlexDirection"],"mappings":"AAAO,IAAKA,sBAAAA,OACRA,EAAA,SAAS,UACTA,EAAA,QAAQ,SACRA,EAAA,SAAS,UACTA,EAAA,QAAQ,SAJAA,IAAAA,KAAA,CAAA,CAAA,GAOAC,sBAAAA,OACRA,EAAA,OAAO,cACPA,EAAA,QAAQ,YACRA,EAAA,SAAS,UACTA,EAAA,eAAe,iBACfA,EAAA,cAAc,gBACdA,EAAA,cAAc,gBANNA,IAAAA,KAAA,CAAA,CAAA,GASAC,sBAAAA,OACRA,EAAA,MAAM,cACNA,EAAA,SAAS,YACTA,EAAA,SAAS,UACTA,EAAA,SAAS,UACTA,EAAA,UAAU,WALFA,IAAAA,KAAA,CAAA,CAAA,GAQAC,sBAAAA,OACRA,EAAA,aAAa,cACbA,EAAA,WAAW,YAFHA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const i = "outline-none focus-visible:outline-offset-2 focus-visible:[outline:2px_solid_var(--malachite-text-primary)]", o = "outline-none focus-visible:[outline:2px_solid_var(--malachite-text-primary)] focus-visible:[outline-offset:-2px]", e = "outline-none has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:[outline:2px_solid_var(--malachite-text-primary)]", s = "outline-none focus-visible:outline-offset-2 focus-visible:[outline:2px_solid_var(--malachite-selection-bar-foreground)]", t = "outline-none focus-visible:[outline:2px_solid_var(--malachite-inline-confirm-foreground)] focus-visible:[outline-offset:-2px]";
|
|
2
|
+
export {
|
|
3
|
+
i as FOCUS_RING,
|
|
4
|
+
t as FOCUS_RING_INLINE_CONFIRM_INSET,
|
|
5
|
+
o as FOCUS_RING_INSET,
|
|
6
|
+
s as FOCUS_RING_SELECTION_BAR,
|
|
7
|
+
e as FOCUS_RING_WITHIN
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=focusRing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusRing.js","sources":["../../src/components/focusRing.ts"],"sourcesContent":["// Shared keyboard focus indicator for interactive components.\n\n/** Standard focus ring — sits 2px outside the control. */\nexport const FOCUS_RING =\n 'outline-none focus-visible:outline-offset-2 focus-visible:[outline:2px_solid_var(--malachite-text-primary)]';\n\n/**\n * Inset focus ring — drawn 2px inside the element edge. Use for full-bleed elements\n * inside an `overflow-hidden` container (e.g. Surface.Row) where an outset outline\n * would be clipped.\n */\nexport const FOCUS_RING_INSET =\n 'outline-none focus-visible:[outline:2px_solid_var(--malachite-text-primary)] focus-visible:[outline-offset:-2px]';\n\n/** Ring drawn on a wrapper when a control *inside* it takes focus. */\nexport const FOCUS_RING_WITHIN =\n 'outline-none has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:[outline:2px_solid_var(--malachite-text-primary)]';\n\n/** Ring for a control on the SelectionBar, where `FOCUS_RING` would be invisible. */\nexport const FOCUS_RING_SELECTION_BAR =\n 'outline-none focus-visible:outline-offset-2 focus-visible:[outline:2px_solid_var(--malachite-selection-bar-foreground)]';\n\n/** Inset ring for a control on the InlineConfirm chip. */\nexport const FOCUS_RING_INLINE_CONFIRM_INSET =\n 'outline-none focus-visible:[outline:2px_solid_var(--malachite-inline-confirm-foreground)] focus-visible:[outline-offset:-2px]';\n"],"names":["FOCUS_RING","FOCUS_RING_INSET","FOCUS_RING_WITHIN","FOCUS_RING_SELECTION_BAR","FOCUS_RING_INLINE_CONFIRM_INSET"],"mappings":"AAGO,MAAMA,IACT,+GAOSC,IACT,oHAGSC,IACT,6HAGSC,IACT,2HAGSC,IACT;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const r = (o) => o === "" || o === null || o === void 0 ? o : "", s = {
|
|
2
|
+
error: !1,
|
|
3
|
+
message: void 0,
|
|
4
|
+
emptyValue: "",
|
|
5
|
+
value: void 0
|
|
6
|
+
}, t = (o, e) => typeof o == "function" ? o(e) : o;
|
|
7
|
+
export {
|
|
8
|
+
s as NO_FIELD_ERROR,
|
|
9
|
+
r as emptyValueOf,
|
|
10
|
+
t as renderFormItemChildren
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=formItemState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formItemState.js","sources":["../../src/components/formItemState.ts"],"sourcesContent":["import type React from 'react';\n\nexport interface FieldErrorState {\n error: boolean;\n message?: string;\n /**\n * Reports an edit to the resolver only — the control keeps painting whatever value the\n * consumer gives it — so a rejection clears as the field is fixed, not at the next submit.\n */\n onFieldChange?: (value: unknown) => void;\n onFieldBlur?: () => void;\n /** What this form means by \"nothing chosen\" — see `emptyValueOf`. */\n emptyValue: unknown;\n /** The value the form holds for the field, which is what a bound control must paint. */\n value: unknown;\n}\n\n/**\n * The shape a cleared field should report. A form seeds an empty field with `''`, `null` or\n * nothing at all, and expects that same shape back: handed a different one it never sees the\n * field return to its default and stays dirty for good. A field seeded with a value states no\n * empty shape of its own, so `''` is reported rather than a guess.\n */\nexport const emptyValueOf = (initialValue: unknown): unknown =>\n initialValue === '' || initialValue === null || initialValue === undefined\n ? initialValue\n : '';\n\nexport type FormItemChildren = React.ReactNode | ((state: FieldErrorState) => React.ReactNode);\n\nexport const NO_FIELD_ERROR: FieldErrorState = {\n error: false,\n message: undefined,\n emptyValue: '',\n value: undefined,\n};\n\nexport const renderFormItemChildren = (\n children: FormItemChildren,\n state: FieldErrorState,\n): React.ReactNode => (typeof children === 'function' ? children(state) : children);\n"],"names":["emptyValueOf","initialValue","NO_FIELD_ERROR","renderFormItemChildren","children","state"],"mappings":"AAuBO,MAAMA,IAAe,CAACC,MACzBA,MAAiB,MAAMA,MAAiB,QAAQA,MAAiB,SAC3DA,IACA,IAIGC,IAAkC;AAAA,EAC3C,OAAO;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,OAAO;AACX,GAEaC,IAAyB,CAClCC,GACAC,MACmB,OAAOD,KAAa,aAAaA,EAASC,CAAK,IAAID;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const r = {
|
|
2
|
+
backgroundColor: "var(--malachite-card-sunken-background)",
|
|
3
|
+
background: "color-mix(in srgb, var(--malachite-card-sunken-background) 38%, transparent)",
|
|
4
|
+
backdropFilter: "blur(24px) saturate(180%)",
|
|
5
|
+
WebkitBackdropFilter: "blur(24px) saturate(180%)"
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
r as GLASS_SURFACE_STYLE
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=glassSurface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glassSurface.js","sources":["../../src/components/glassSurface.ts"],"sourcesContent":["import type React from 'react';\n\n/**\n * Shared frosted-glass treatment for pinned surfaces that scrolling content shows\n * through — used by Card's `glassFooter` and WizardLayout's `footerGlass` so the\n * two read identically in both themes.\n *\n * Solid fallback first; the translucent color-mix `background` below overrides it\n * where supported, so the surface never ends up fully transparent (unreadable) if\n * color-mix isn't.\n */\nexport const GLASS_SURFACE_STYLE: React.CSSProperties = {\n backgroundColor: 'var(--malachite-card-sunken-background)',\n background: 'color-mix(in srgb, var(--malachite-card-sunken-background) 38%, transparent)',\n backdropFilter: 'blur(24px) saturate(180%)',\n WebkitBackdropFilter: 'blur(24px) saturate(180%)',\n};\n"],"names":["GLASS_SURFACE_STYLE"],"mappings":"AAWO,MAAMA,IAA2C;AAAA,EACpD,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,sBAAsB;AAC1B;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const r = Symbol.for("malachite.styleSheets"), d = (e) => {
|
|
2
|
+
const c = globalThis, o = c[r] ?? /* @__PURE__ */ new WeakMap();
|
|
3
|
+
c[r] = o;
|
|
4
|
+
let t = o.get(e);
|
|
5
|
+
return t || (t = /* @__PURE__ */ new Map(), o.set(e, t)), t;
|
|
6
|
+
}, i = /* @__PURE__ */ new Set(), h = (e) => {
|
|
7
|
+
i.has(e) || (i.add(e), console.warn(
|
|
8
|
+
`[malachite] Stylesheet "${e}" did not apply. A host Content-Security-Policy is blocking <style> elements, and this browser is too old for the adoptedStyleSheets fallback (needs Firefox 101+ / Safari 16.4+). Overlay stacking and option highlights will not paint.`
|
|
9
|
+
));
|
|
10
|
+
}, S = (e, c) => {
|
|
11
|
+
if (typeof document > "u")
|
|
12
|
+
return null;
|
|
13
|
+
const o = c.join(`
|
|
14
|
+
`), t = document.adoptedStyleSheets;
|
|
15
|
+
if (t && typeof CSSStyleSheet < "u")
|
|
16
|
+
try {
|
|
17
|
+
const a = d(document);
|
|
18
|
+
let n = a.get(e);
|
|
19
|
+
return n || (n = new CSSStyleSheet(), n.replaceSync(o), a.set(e, n)), t.includes(n) || (document.adoptedStyleSheets = [...t, n]), n;
|
|
20
|
+
} catch {
|
|
21
|
+
}
|
|
22
|
+
const l = document.getElementById(e);
|
|
23
|
+
if (l)
|
|
24
|
+
return l.sheet;
|
|
25
|
+
if (!document.head)
|
|
26
|
+
return null;
|
|
27
|
+
const s = document.createElement("style");
|
|
28
|
+
return s.id = e, s.textContent = o, document.head.appendChild(s), s.sheet || h(e), s.sheet;
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
S as injectStyleSheet
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=injectStyleSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectStyleSheet.js","sources":["../../src/components/injectStyleSheet.ts"],"sourcesContent":["// Symbol.for so two malachite copies in one realm share one sheet per id, as the `<style>`\n// path got for free from getElementById.\nconst REGISTRY = Symbol.for('malachite.styleSheets');\n\ntype Registry = WeakMap<Document, Map<string, CSSStyleSheet>>;\n\n// Per document: a constructed sheet cannot be adopted into a different one.\nconst cacheFor = (doc: Document): Map<string, CSSStyleSheet> => {\n const global = globalThis as unknown as Record<symbol, Registry | undefined>;\n const registry = global[REGISTRY] ?? new WeakMap();\n global[REGISTRY] = registry;\n let cache = registry.get(doc);\n if (!cache) {\n cache = new Map();\n registry.set(doc, cache);\n }\n return cache;\n};\n\nconst warned = new Set<string>();\n\nconst warnBlocked = (id: string): void => {\n if (warned.has(id)) {\n return;\n }\n warned.add(id);\n console.warn(\n `[malachite] Stylesheet \"${id}\" did not apply. A host Content-Security-Policy is ` +\n 'blocking <style> elements, and this browser is too old for the adoptedStyleSheets ' +\n 'fallback (needs Firefox 101+ / Safari 16.4+). Overlay stacking and option ' +\n 'highlights will not paint.',\n );\n};\n\n/**\n * Installs `rules` once per `id` and returns the sheet. Adopts a constructed stylesheet where\n * possible, because a host CSP without `style-src 'unsafe-inline'` blocks a `<style>` outright.\n * `rules` is an array because these cascades depend on source order. `@import` is unsupported.\n */\nexport const injectStyleSheet = (id: string, rules: readonly string[]): CSSStyleSheet | null => {\n if (typeof document === 'undefined') {\n return null;\n }\n const css = rules.join('\\n');\n\n // Probed, not try/caught: jsdom lets the assignment succeed and then ignores the sheet.\n const adopted = document.adoptedStyleSheets as CSSStyleSheet[] | undefined;\n if (adopted && typeof CSSStyleSheet !== 'undefined') {\n try {\n const cache = cacheFor(document);\n let sheet = cache.get(id);\n if (!sheet) {\n sheet = new CSSStyleSheet();\n sheet.replaceSync(css);\n cache.set(id, sheet);\n }\n // Re-checked, never latched: a host reassigning the array silently drops ours.\n if (!adopted.includes(sheet)) {\n document.adoptedStyleSheets = [...adopted, sheet];\n }\n return sheet;\n } catch {\n // Cross-document sheet or a failed construction — fall through to the element.\n }\n }\n\n const existing = document.getElementById(id) as HTMLStyleElement | null;\n if (existing) {\n return existing.sheet;\n }\n if (!document.head) {\n return null;\n }\n const style = document.createElement('style');\n style.id = id;\n style.textContent = css;\n document.head.appendChild(style);\n if (!style.sheet) {\n warnBlocked(id);\n }\n return style.sheet;\n};\n"],"names":["REGISTRY","cacheFor","doc","global","registry","cache","warned","warnBlocked","id","injectStyleSheet","rules","css","adopted","sheet","existing","style"],"mappings":"AAEA,MAAMA,IAAW,OAAO,IAAI,uBAAuB,GAK7CC,IAAW,CAACC,MAA8C;AAC5D,QAAMC,IAAS,YACTC,IAAWD,EAAOH,CAAQ,yBAAS,QAAA;AACzC,EAAAG,EAAOH,CAAQ,IAAII;AACnB,MAAIC,IAAQD,EAAS,IAAIF,CAAG;AAC5B,SAAKG,MACDA,wBAAY,IAAA,GACZD,EAAS,IAAIF,GAAKG,CAAK,IAEpBA;AACX,GAEMC,wBAAa,IAAA,GAEbC,IAAc,CAACC,MAAqB;AACtC,EAAIF,EAAO,IAAIE,CAAE,MAGjBF,EAAO,IAAIE,CAAE,GACb,QAAQ;AAAA,IACJ,2BAA2BA,CAAE;AAAA,EAAA;AAKrC,GAOaC,IAAmB,CAACD,GAAYE,MAAmD;AAC5F,MAAI,OAAO,WAAa;AACpB,WAAO;AAEX,QAAMC,IAAMD,EAAM,KAAK;AAAA,CAAI,GAGrBE,IAAU,SAAS;AACzB,MAAIA,KAAW,OAAO,gBAAkB;AACpC,QAAI;AACA,YAAMP,IAAQJ,EAAS,QAAQ;AAC/B,UAAIY,IAAQR,EAAM,IAAIG,CAAE;AACxB,aAAKK,MACDA,IAAQ,IAAI,cAAA,GACZA,EAAM,YAAYF,CAAG,GACrBN,EAAM,IAAIG,GAAIK,CAAK,IAGlBD,EAAQ,SAASC,CAAK,MACvB,SAAS,qBAAqB,CAAC,GAAGD,GAASC,CAAK,IAE7CA;AAAA,IACX,QAAQ;AAAA,IAER;AAGJ,QAAMC,IAAW,SAAS,eAAeN,CAAE;AAC3C,MAAIM;AACA,WAAOA,EAAS;AAEpB,MAAI,CAAC,SAAS;AACV,WAAO;AAEX,QAAMC,IAAQ,SAAS,cAAc,OAAO;AAC5C,SAAAA,EAAM,KAAKP,GACXO,EAAM,cAAcJ,GACpB,SAAS,KAAK,YAAYI,CAAK,GAC1BA,EAAM,SACPR,EAAYC,CAAE,GAEXO,EAAM;AACjB;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const a = 8, l = 8, m = (t, P, D) => t.width === 0 && t.height === 0 || t.bottom < 0 || t.top > D || t.right < 0 || t.left > P, A = (t, P, D) => Math.max(P, Math.min(t, D)), h = ({
|
|
2
|
+
anchorRect: t,
|
|
3
|
+
chipWidth: P,
|
|
4
|
+
chipHeight: D,
|
|
5
|
+
viewportWidth: I,
|
|
6
|
+
viewportHeight: o
|
|
7
|
+
}) => ({
|
|
8
|
+
top: A(
|
|
9
|
+
t.top + t.height / 2,
|
|
10
|
+
8,
|
|
11
|
+
o - D - 8
|
|
12
|
+
),
|
|
13
|
+
left: A(
|
|
14
|
+
t.left - 8 - P,
|
|
15
|
+
8,
|
|
16
|
+
I - P - 8
|
|
17
|
+
),
|
|
18
|
+
maxWidth: Math.max(0, I - 16)
|
|
19
|
+
}), n = (t, P, D, I, o) => `${t.top}:${t.left}:${t.height}:${P}:${D}:${I}:${o}`;
|
|
20
|
+
export {
|
|
21
|
+
a as ANCHOR_GAP,
|
|
22
|
+
l as VIEWPORT_PADDING,
|
|
23
|
+
h as computeChipPlacement,
|
|
24
|
+
m as isUnplaceable,
|
|
25
|
+
n as placementKey
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=inlineConfirmPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlineConfirmPosition.js","sources":["../../src/components/inlineConfirmPosition.ts"],"sourcesContent":["/** Clear of the anchor, per the design. */\nexport const ANCHOR_GAP = 8;\n\n/** Matches `Dropdown`'s panel padding, so a clamped chip stops where its panels do. */\nexport const VIEWPORT_PADDING = 8;\n\nexport interface ChipPlacement {\n top: number;\n left: number;\n /** The chip is capped rather than allowed to run off the edge; its message truncates. */\n maxWidth: number;\n}\n\nexport type AnchorRect = Pick<DOMRect, 'top' | 'left' | 'right' | 'bottom' | 'width' | 'height'>;\n\nexport interface PlacementInput {\n anchorRect: AnchorRect;\n chipWidth: number;\n chipHeight: number;\n viewportWidth: number;\n viewportHeight: number;\n}\n\n/**\n * True when the anchor cannot be pointed at: detached, hidden, or scrolled out of view. A\n * zero-size rect covers a detached node and a `display: none` subtree alike, either of which\n * would strand the chip off-viewport — invisible, focused, and one Enter from confirming.\n */\nexport const isUnplaceable = (\n rect: AnchorRect,\n viewportWidth: number,\n viewportHeight: number,\n): boolean =>\n (rect.width === 0 && rect.height === 0) ||\n rect.bottom < 0 ||\n rect.top > viewportHeight ||\n rect.right < 0 ||\n rect.left > viewportWidth;\n\nconst clamp = (value: number, min: number, max: number): number =>\n Math.max(min, Math.min(value, max));\n\n/**\n * The chip sits to the anchor's left, its top edge on the anchor's midline rather than\n * centred on it — both measured off the frame. Both axes are then clamped into the viewport:\n * `isUnplaceable` deliberately keeps a part-visible anchor, so without this the chip could\n * hang off an edge with its focused confirm button out of reach.\n */\nexport const computeChipPlacement = ({\n anchorRect,\n chipWidth,\n chipHeight,\n viewportWidth,\n viewportHeight,\n}: PlacementInput): ChipPlacement => ({\n top: clamp(\n anchorRect.top + anchorRect.height / 2,\n VIEWPORT_PADDING,\n viewportHeight - chipHeight - VIEWPORT_PADDING,\n ),\n left: clamp(\n anchorRect.left - ANCHOR_GAP - chipWidth,\n VIEWPORT_PADDING,\n viewportWidth - chipWidth - VIEWPORT_PADDING,\n ),\n maxWidth: Math.max(0, viewportWidth - VIEWPORT_PADDING * 2),\n});\n\n/** Every input `computeChipPlacement` reads, so an unchanged key means an unmoved chip. */\nexport const placementKey = (\n rect: AnchorRect,\n chipWidth: number,\n chipHeight: number,\n viewportWidth: number,\n viewportHeight: number,\n): string =>\n `${rect.top}:${rect.left}:${rect.height}:${chipWidth}:${chipHeight}:${viewportWidth}:${viewportHeight}`;\n"],"names":["ANCHOR_GAP","VIEWPORT_PADDING","isUnplaceable","rect","viewportWidth","viewportHeight","clamp","value","min","max","computeChipPlacement","anchorRect","chipWidth","chipHeight","placementKey"],"mappings":"AACO,MAAMA,IAAa,GAGbC,IAAmB,GAwBnBC,IAAgB,CACzBC,GACAC,GACAC,MAECF,EAAK,UAAU,KAAKA,EAAK,WAAW,KACrCA,EAAK,SAAS,KACdA,EAAK,MAAME,KACXF,EAAK,QAAQ,KACbA,EAAK,OAAOC,GAEVE,IAAQ,CAACC,GAAeC,GAAaC,MACvC,KAAK,IAAID,GAAK,KAAK,IAAID,GAAOE,CAAG,CAAC,GAQzBC,IAAuB,CAAC;AAAA,EACjC,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAT;AAAA,EACA,gBAAAC;AACJ,OAAsC;AAAA,EAClC,KAAKC;AAAA,IACDK,EAAW,MAAMA,EAAW,SAAS;AAAA,IACrC;AAAA,IACAN,IAAiBQ,IAAa;AAAA,EAAA;AAAA,EAElC,MAAMP;AAAA,IACFK,EAAW,OAAO,IAAaC;AAAA,IAC/B;AAAA,IACAR,IAAgBQ,IAAY;AAAA,EAAA;AAAA,EAEhC,UAAU,KAAK,IAAI,GAAGR,IAAgB,EAAoB;AAC9D,IAGaU,IAAe,CACxBX,GACAS,GACAC,GACAT,GACAC,MAEA,GAAGF,EAAK,GAAG,IAAIA,EAAK,IAAI,IAAIA,EAAK,MAAM,IAAIS,CAAS,IAAIC,CAAU,IAAIT,CAAa,IAAIC,CAAc;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const o = (t, r, e = "enter-or-space") => {
|
|
2
|
+
(t.key === "Enter" || e === "enter-or-space" && t.key === " ") && t.target === t.currentTarget && (t.preventDefault(), t.stopPropagation(), r());
|
|
3
|
+
}, a = 'button, a[href], input, select, textarea, [role="button"], [role="link"]', c = (t) => {
|
|
4
|
+
const r = t.target;
|
|
5
|
+
if (!(r != null && r.closest))
|
|
6
|
+
return !1;
|
|
7
|
+
const e = r.closest(a);
|
|
8
|
+
return !!e && e !== t.currentTarget;
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
o as activateOnEnterOrSpace,
|
|
12
|
+
c as isFromInteractiveDescendant
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=keyboardActivation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboardActivation.js","sources":["../../src/components/keyboardActivation.ts"],"sourcesContent":["import type React from 'react';\n\n// Enter/Space activation for targets that cannot be a native <button>. Prefer a real\n// <button> or <a href>; use this only where the tag is fixed by layout or table\n// semantics, paired with tabIndex={0} and a focus ring from focusRing.ts.\n// `keys: 'enter'` drops Space for targets that read as content rather than as a button\n// — swallowing Space on a table row would take page scrolling away while it holds focus.\nexport const activateOnEnterOrSpace = (\n event: React.KeyboardEvent,\n activate: () => void,\n keys: 'enter-or-space' | 'enter' = 'enter-or-space',\n): void => {\n const activates = event.key === 'Enter' || (keys === 'enter-or-space' && event.key === ' ');\n if (!activates) {\n return;\n }\n // Keydown bubbles: without this a nested control activates its ancestor row too.\n if (event.target !== event.currentTarget) {\n return;\n }\n // Space scrolls the nearest container; Enter submits a wrapping form.\n event.preventDefault();\n event.stopPropagation();\n activate();\n};\n\n// Named controls only. A bare `[tabindex]` arm would also catch focusable-but-not-\n// actionable content (a scroll container, a copyable block) and silently eat row clicks.\nconst INTERACTIVE_SELECTOR =\n 'button, a[href], input, select, textarea, [role=\"button\"], [role=\"link\"]';\n\n// Enter on a nested <button> fires a click that bubbles, so a clickable row activates\n// alongside it. Looser than the keydown guard above: a click on plain cell content must\n// still activate the row, so only bail on a real control.\nexport const isFromInteractiveDescendant = (event: React.MouseEvent): boolean => {\n const target = event.target as HTMLElement | null;\n if (!target?.closest) {\n return false;\n }\n const control = target.closest(INTERACTIVE_SELECTOR);\n return !!control && control !== event.currentTarget;\n};\n"],"names":["activateOnEnterOrSpace","event","activate","keys","INTERACTIVE_SELECTOR","isFromInteractiveDescendant","target","control"],"mappings":"AAOO,MAAMA,IAAyB,CAClCC,GACAC,GACAC,IAAmC,qBAC5B;AAEP,GADkBF,EAAM,QAAQ,WAAYE,MAAS,oBAAoBF,EAAM,QAAQ,QAKnFA,EAAM,WAAWA,EAAM,kBAI3BA,EAAM,eAAA,GACNA,EAAM,gBAAA,GACNC,EAAA;AACJ,GAIME,IACF,4EAKSC,IAA8B,CAACJ,MAAqC;AAC7E,QAAMK,IAASL,EAAM;AACrB,MAAI,EAACK,KAAA,QAAAA,EAAQ;AACT,WAAO;AAEX,QAAMC,IAAUD,EAAO,QAAQF,CAAoB;AACnD,SAAO,CAAC,CAACG,KAAWA,MAAYN,EAAM;AAC1C;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const a = {
|
|
2
|
+
neutral: "var(--malachite-text-secondary)",
|
|
3
|
+
warning: "var(--malachite-tag-warning-foreground)",
|
|
4
|
+
error: "var(--malachite-tag-error-foreground)",
|
|
5
|
+
success: "var(--malachite-tag-success-foreground)"
|
|
6
|
+
}, r = {
|
|
7
|
+
neutral: "var(--malachite-card-tray-neutral, var(--malachite-card-dimmed-background))",
|
|
8
|
+
warning: "var(--malachite-card-tray-warning, var(--malachite-table-row-variant-warning-background))",
|
|
9
|
+
error: "var(--malachite-card-tray-error, var(--malachite-table-row-variant-error-background))",
|
|
10
|
+
success: "var(--malachite-card-tray-success, var(--malachite-table-row-variant-success-background))"
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
r as MODAL_TRAY_BACKGROUND,
|
|
14
|
+
a as MODAL_TRAY_CAPTION_COLOR
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=modalTray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modalTray.js","sources":["../../src/components/modalTray.ts"],"sourcesContent":["export type ModalTrayTone = 'neutral' | 'warning' | 'error' | 'success';\n\nexport const MODAL_TRAY_CAPTION_COLOR: Record<ModalTrayTone, string> = {\n neutral: 'var(--malachite-text-secondary)',\n warning: 'var(--malachite-tag-warning-foreground)',\n error: 'var(--malachite-tag-error-foreground)',\n success: 'var(--malachite-tag-success-foreground)',\n};\n\nexport const MODAL_TRAY_BACKGROUND: Record<ModalTrayTone, string> = {\n neutral: 'var(--malachite-card-tray-neutral, var(--malachite-card-dimmed-background))',\n warning:\n 'var(--malachite-card-tray-warning, var(--malachite-table-row-variant-warning-background))',\n error: 'var(--malachite-card-tray-error, var(--malachite-table-row-variant-error-background))',\n success:\n 'var(--malachite-card-tray-success, var(--malachite-table-row-variant-success-background))',\n};\n"],"names":["MODAL_TRAY_CAPTION_COLOR","MODAL_TRAY_BACKGROUND"],"mappings":"AAEO,MAAMA,IAA0D;AAAA,EACnE,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AACb,GAEaC,IAAuD;AAAA,EAChE,SAAS;AAAA,EACT,SACI;AAAA,EACJ,OAAO;AAAA,EACP,SACI;AACR;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { injectStyleSheet as r } from "./injectStyleSheet.js";
|
|
2
|
+
import { ensureOverlayStyles as c } from "./portalOverlay.js";
|
|
3
|
+
const e = {
|
|
4
|
+
resting: "transparent",
|
|
5
|
+
hover: "var(--malachite-card-dimmed-background, rgb(247, 247, 247))",
|
|
6
|
+
selected: "var(--malachite-accent-background-glass, rgba(0, 175, 102, 0.08))"
|
|
7
|
+
}, o = `
|
|
8
|
+
outline: 2px solid var(--malachite-text-primary, rgb(10, 10, 10));
|
|
9
|
+
outline-offset: -2px;
|
|
10
|
+
`, t = ".malachite-dropdown-option", n = [
|
|
11
|
+
`${t} { background: ${e.resting}; }`,
|
|
12
|
+
`${t}[data-selected='true'] { background: ${e.selected}; }`,
|
|
13
|
+
`${t}:hover { background: ${e.hover}; }`,
|
|
14
|
+
`${t}[data-selected='true']:hover { background: ${e.selected}; }`,
|
|
15
|
+
`${t}:focus-visible {${o}}`
|
|
16
|
+
], i = () => (c(), r("malachite-dropdown-panel-styles", n)), a = ".malachite-multiselect-option", d = [
|
|
17
|
+
`${a} { background: ${e.resting}; }`,
|
|
18
|
+
`${a}[data-checked='true'] { background: ${e.selected}; }`,
|
|
19
|
+
`${a}[data-highlighted='true'] { background: ${e.hover}; }`,
|
|
20
|
+
`${a}[data-disabled='true'] { background: ${e.resting}; }`,
|
|
21
|
+
`${a}[data-disabled='true'][data-checked='true'] { background: ${e.selected}; }`
|
|
22
|
+
], u = () => (c(), r("malachite-multiselect-panel-styles", d));
|
|
23
|
+
export {
|
|
24
|
+
i as ensureDropdownPanelStyles,
|
|
25
|
+
u as ensureMultiSelectPanelStyles
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=optionRowStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionRowStyles.js","sources":["../../src/components/optionRowStyles.ts"],"sourcesContent":["// Never inline on the row: an inline background outranks a `:hover` rule, killing the hover.\n// Lives outside the components so Fast Refresh keeps their state, and so specs can read the\n// installed sheet without knowing which sink it went into.\n\nimport { injectStyleSheet } from './injectStyleSheet';\nimport { ensureOverlayStyles } from './portalOverlay';\n\nconst BACKGROUND = {\n resting: 'transparent',\n hover: 'var(--malachite-card-dimmed-background, rgb(247, 247, 247))',\n selected: 'var(--malachite-accent-background-glass, rgba(0, 175, 102, 0.08))',\n} as const;\n\nconst FOCUS_RING = `\n outline: 2px solid var(--malachite-text-primary, rgb(10, 10, 10));\n outline-offset: -2px;\n`;\n\n// [data-selected] and :hover tie, so source order decides.\nconst DROPDOWN = '.malachite-dropdown-option';\n\nconst DROPDOWN_RULES = [\n `${DROPDOWN} { background: ${BACKGROUND.resting}; }`,\n `${DROPDOWN}[data-selected='true'] { background: ${BACKGROUND.selected}; }`,\n `${DROPDOWN}:hover { background: ${BACKGROUND.hover}; }`,\n `${DROPDOWN}[data-selected='true']:hover { background: ${BACKGROUND.selected}; }`,\n `${DROPDOWN}:focus-visible {${FOCUS_RING}}`,\n];\n\nexport const ensureDropdownPanelStyles = (): CSSStyleSheet | null => {\n ensureOverlayStyles();\n return injectStyleSheet('malachite-dropdown-panel-styles', DROPDOWN_RULES);\n};\n\n// The background rules all tie, so source order decides: highlight beats checked,\n// disabled beats both, disabled+checked wins outright.\nconst MULTISELECT = '.malachite-multiselect-option';\n\nconst MULTISELECT_RULES = [\n `${MULTISELECT} { background: ${BACKGROUND.resting}; }`,\n `${MULTISELECT}[data-checked='true'] { background: ${BACKGROUND.selected}; }`,\n `${MULTISELECT}[data-highlighted='true'] { background: ${BACKGROUND.hover}; }`,\n `${MULTISELECT}[data-disabled='true'] { background: ${BACKGROUND.resting}; }`,\n `${MULTISELECT}[data-disabled='true'][data-checked='true'] { background: ${BACKGROUND.selected}; }`,\n];\n\nexport const ensureMultiSelectPanelStyles = (): CSSStyleSheet | null => {\n ensureOverlayStyles();\n return injectStyleSheet('malachite-multiselect-panel-styles', MULTISELECT_RULES);\n};\n"],"names":["BACKGROUND","FOCUS_RING","DROPDOWN","DROPDOWN_RULES","ensureDropdownPanelStyles","ensureOverlayStyles","injectStyleSheet","MULTISELECT","MULTISELECT_RULES","ensureMultiSelectPanelStyles"],"mappings":";;AAOA,MAAMA,IAAa;AAAA,EACf,SAAS;AAAA,EACT,OAAO;AAAA,EACP,UAAU;AACd,GAEMC,IAAa;AAAA;AAAA;AAAA,GAMbC,IAAW,8BAEXC,IAAiB;AAAA,EACnB,GAAGD,CAAQ,kBAAkBF,EAAW,OAAO;AAAA,EAC/C,GAAGE,CAAQ,wCAAwCF,EAAW,QAAQ;AAAA,EACtE,GAAGE,CAAQ,wBAAwBF,EAAW,KAAK;AAAA,EACnD,GAAGE,CAAQ,8CAA8CF,EAAW,QAAQ;AAAA,EAC5E,GAAGE,CAAQ,mBAAmBD,CAAU;AAC5C,GAEaG,IAA4B,OACrCC,EAAA,GACOC,EAAiB,mCAAmCH,CAAc,IAKvEI,IAAc,iCAEdC,IAAoB;AAAA,EACtB,GAAGD,CAAW,kBAAkBP,EAAW,OAAO;AAAA,EAClD,GAAGO,CAAW,uCAAuCP,EAAW,QAAQ;AAAA,EACxE,GAAGO,CAAW,2CAA2CP,EAAW,KAAK;AAAA,EACzE,GAAGO,CAAW,wCAAwCP,EAAW,OAAO;AAAA,EACxE,GAAGO,CAAW,6DAA6DP,EAAW,QAAQ;AAClG,GAEaS,IAA+B,OACxCJ,EAAA,GACOC,EAAiB,sCAAsCE,CAAiB;"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { useSyncExternalStore as y, useRef as i, useEffect as S, useLayoutEffect as L, useCallback as O } from "react";
|
|
2
|
+
import { getDeepActiveElement as g } from "./activeElement.js";
|
|
3
|
+
import { pushEscapeLayer as D } from "./escapeLayers.js";
|
|
4
|
+
import { FOCUS_RING as F } from "./focusRing.js";
|
|
5
|
+
import { OVERLAY_Z_BASE as T, ensureElevatedOverlayStyles as N } from "./portalOverlay.js";
|
|
6
|
+
import { lockBodyScroll as R } from "./scrollLock.js";
|
|
7
|
+
import { leaveTopLayer as w, raiseToTopLayer as z } from "./topLayer.js";
|
|
8
|
+
const J = `flex shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-[4px] text-[var(--malachite-text-secondary)] hover:text-[var(--malachite-text-primary)] transition-colors ${F}`, U = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])', c = [], f = /* @__PURE__ */ new Set(), x = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Set(), K = () => {
|
|
9
|
+
};
|
|
10
|
+
let p = [];
|
|
11
|
+
const M = () => {
|
|
12
|
+
const e = f.size ? c.map((t) => {
|
|
13
|
+
var s;
|
|
14
|
+
return (s = x.get(t)) == null ? void 0 : s();
|
|
15
|
+
}).filter((t) => !!t) : [];
|
|
16
|
+
if (e.length === p.length && e.every((t, s) => t === p[s]))
|
|
17
|
+
return;
|
|
18
|
+
const r = new Set(e);
|
|
19
|
+
for (const t of p)
|
|
20
|
+
r.has(t) || w(t);
|
|
21
|
+
for (const t of e)
|
|
22
|
+
z(t);
|
|
23
|
+
p = e;
|
|
24
|
+
}, m = () => {
|
|
25
|
+
for (const e of b)
|
|
26
|
+
e();
|
|
27
|
+
}, A = (e) => (b.add(e), () => {
|
|
28
|
+
b.delete(e);
|
|
29
|
+
}), k = (e) => {
|
|
30
|
+
if (e.key !== "Tab" || e.defaultPrevented)
|
|
31
|
+
return;
|
|
32
|
+
let r = null;
|
|
33
|
+
for (let a = c.length - 1; a >= 0 && !r; a -= 1)
|
|
34
|
+
r = c[a]();
|
|
35
|
+
if (!r)
|
|
36
|
+
return;
|
|
37
|
+
const t = Array.from(r.querySelectorAll(U));
|
|
38
|
+
if (t.length === 0) {
|
|
39
|
+
e.preventDefault(), r.focus();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const s = t[0], l = t[t.length - 1], o = g(), u = o !== null && r.contains(o);
|
|
43
|
+
e.shiftKey ? (!u || o === s || o === r) && (e.preventDefault(), l.focus()) : (!u || o === l) && (e.preventDefault(), s.focus());
|
|
44
|
+
}, V = (e, r) => (c.length === 0 && document.addEventListener("keydown", k), c.push(e), x.set(e, r), m(), () => {
|
|
45
|
+
const t = c.lastIndexOf(e);
|
|
46
|
+
t !== -1 && c.splice(t, 1), f.delete(e), x.delete(e);
|
|
47
|
+
const s = r();
|
|
48
|
+
s && w(s), c.length === 0 && document.removeEventListener("keydown", k), m();
|
|
49
|
+
}), Q = () => y(
|
|
50
|
+
A,
|
|
51
|
+
() => c.length > 0,
|
|
52
|
+
() => !1
|
|
53
|
+
), X = ({
|
|
54
|
+
open: e,
|
|
55
|
+
onClose: r,
|
|
56
|
+
elevated: t = !1,
|
|
57
|
+
hostRef: s
|
|
58
|
+
}) => {
|
|
59
|
+
const l = i(null), o = i(() => l.current).current, u = i(null), a = i(null), v = i(r);
|
|
60
|
+
S(() => {
|
|
61
|
+
v.current = r;
|
|
62
|
+
}, [r]), S(() => {
|
|
63
|
+
if (e)
|
|
64
|
+
return u.current = g(), () => {
|
|
65
|
+
const n = u.current;
|
|
66
|
+
u.current = null, n != null && n.isConnected && n.focus();
|
|
67
|
+
};
|
|
68
|
+
}, [e]), S(() => {
|
|
69
|
+
var E;
|
|
70
|
+
if (!e)
|
|
71
|
+
return;
|
|
72
|
+
a.current = o;
|
|
73
|
+
const n = D(() => v.current()), _ = R(), B = V(o, () => (s == null ? void 0 : s.current) ?? null);
|
|
74
|
+
return (E = l.current) == null || E.focus(), () => {
|
|
75
|
+
a.current = null, B(), n(), _();
|
|
76
|
+
};
|
|
77
|
+
}, [e, s, o]), L(() => {
|
|
78
|
+
if (!(!e || !t))
|
|
79
|
+
return f.add(o), m(), () => {
|
|
80
|
+
f.delete(o), m();
|
|
81
|
+
};
|
|
82
|
+
}, [e, t, o]);
|
|
83
|
+
const h = O(
|
|
84
|
+
(n) => e ? A(n) : K,
|
|
85
|
+
[e]
|
|
86
|
+
), C = y(
|
|
87
|
+
h,
|
|
88
|
+
// Gated on `open` so an overlay fading out stops claiming modal. Before it registers
|
|
89
|
+
// it is the one about to go on top, or aria-modal would drop for a frame on open.
|
|
90
|
+
() => e && (a.current === null || c[c.length - 1] === a.current),
|
|
91
|
+
() => !0
|
|
92
|
+
), d = y(
|
|
93
|
+
h,
|
|
94
|
+
() => e && (t || f.size > 0),
|
|
95
|
+
() => !1
|
|
96
|
+
), I = y(
|
|
97
|
+
h,
|
|
98
|
+
() => {
|
|
99
|
+
const n = a.current;
|
|
100
|
+
return T + (e && n ? Math.max(0, c.indexOf(n)) : 0);
|
|
101
|
+
},
|
|
102
|
+
() => T
|
|
103
|
+
);
|
|
104
|
+
return L(() => {
|
|
105
|
+
d && N();
|
|
106
|
+
}, [d]), L(() => {
|
|
107
|
+
M();
|
|
108
|
+
}), { ref: O((n) => {
|
|
109
|
+
l.current = n, n == null || n.focus();
|
|
110
|
+
}, []), isTopmost: C, zIndex: d ? void 0 : I, elevated: d };
|
|
111
|
+
};
|
|
112
|
+
export {
|
|
113
|
+
U as FOCUSABLE_SELECTOR,
|
|
114
|
+
J as OVERLAY_ICON_BUTTON_CLASSES,
|
|
115
|
+
Q as useHasOpenOverlay,
|
|
116
|
+
X as useOverlayBehaviour
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=overlayBehaviour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlayBehaviour.js","sources":["../../src/components/overlayBehaviour.ts"],"sourcesContent":["import { useCallback, useEffect, useLayoutEffect, useRef, useSyncExternalStore } from 'react';\nimport { getDeepActiveElement } from './activeElement';\nimport { pushEscapeLayer } from './escapeLayers';\nimport { FOCUS_RING } from './focusRing';\nimport { OVERLAY_Z_BASE, ensureElevatedOverlayStyles } from './portalOverlay';\nimport { lockBodyScroll } from './scrollLock';\nimport { leaveTopLayer, raiseToTopLayer } from './topLayer';\n\n/** Back/close button chrome, shared so the two overlays cannot drift apart. */\nexport const OVERLAY_ICON_BUTTON_CLASSES = `flex shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-[4px] text-[var(--malachite-text-secondary)] hover:text-[var(--malachite-text-primary)] transition-colors ${FOCUS_RING}`;\n\nexport const FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\ntype PanelSource = () => HTMLElement | null;\n\n// LIFO like escapeLayers: with a listener per overlay the first-registered one wins, which\n// sent Tab from a dialog into the panel behind it.\nconst trapLayers: PanelSource[] = [];\n// Elevation belongs to the stack: a Modal left in the base band opens behind the panel that\n// elevated it.\nconst elevatedLayers = new Set<PanelSource>();\n// The shadow host per layer, so promotion can replay in stack order.\nconst hostSources = new Map<PanelSource, () => HTMLElement | null>();\nconst stackListeners = new Set<() => void>();\nconst NO_SUBSCRIPTION = () => {\n // Nothing to tear down: a closed overlay never subscribed.\n};\n\n// Top-layer paint order is entry order, so replay the whole stack bottom-up rather than letting\n// each overlay promote itself: those effects run in React tree order, which need not match.\nlet promoted: HTMLElement[] = [];\n\nconst syncTopLayer = (): void => {\n const wanted = elevatedLayers.size\n ? trapLayers\n .map((layer) => hostSources.get(layer)?.())\n .filter((host): host is HTMLElement => Boolean(host))\n : [];\n // Compared, not reapplied: this runs on every commit, because a host can appear a commit\n // after the layer that owns it, and re-entering the top layer unprompted costs a recalc.\n if (\n wanted.length === promoted.length &&\n wanted.every((host, index) => host === promoted[index])\n ) {\n return;\n }\n const stillWanted = new Set(wanted);\n for (const host of promoted) {\n if (!stillWanted.has(host)) {\n leaveTopLayer(host);\n }\n }\n for (const host of wanted) {\n raiseToTopLayer(host);\n }\n promoted = wanted;\n};\n\nconst notifyStackChanged = (): void => {\n for (const listener of stackListeners) {\n listener();\n }\n};\n\nconst subscribeToStack = (listener: () => void): (() => void) => {\n stackListeners.add(listener);\n return () => {\n stackListeners.delete(listener);\n };\n};\n\nconst handleTabKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== 'Tab' || event.defaultPrevented) {\n return;\n }\n // Walk down rather than bail: React detaches refs before flushing the cleanup that pops\n // the layer, so the topmost can be registered-but-null and Tab would escape entirely.\n let panel: HTMLElement | null = null;\n for (let index = trapLayers.length - 1; index >= 0 && !panel; index -= 1) {\n panel = trapLayers[index]();\n }\n if (!panel) {\n return;\n }\n const focusables = Array.from(panel.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n if (focusables.length === 0) {\n event.preventDefault();\n panel.focus();\n return;\n }\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = getDeepActiveElement();\n const activeInPanel = active !== null && panel.contains(active);\n if (event.shiftKey) {\n if (!activeInPanel || active === first || active === panel) {\n event.preventDefault();\n last.focus();\n }\n } else if (!activeInPanel || active === last) {\n event.preventDefault();\n first.focus();\n }\n};\n\n// On `document` so it also catches focus that escaped behind the overlay. The trap reaches\n// focusables in the overlay's own shadow root only, so a popup portaled elsewhere (Dropdown,\n// ActionMenu, Tooltip) is outside it and Tab will pull focus back out of the popup.\nconst pushFocusTrapLayer = (getPanel: PanelSource, getHost: () => HTMLElement | null) => {\n if (trapLayers.length === 0) {\n document.addEventListener('keydown', handleTabKeyDown);\n }\n trapLayers.push(getPanel);\n hostSources.set(getPanel, getHost);\n notifyStackChanged();\n return () => {\n const index = trapLayers.lastIndexOf(getPanel);\n if (index !== -1) {\n trapLayers.splice(index, 1);\n }\n elevatedLayers.delete(getPanel);\n hostSources.delete(getPanel);\n const host = getHost();\n if (host) {\n leaveTopLayer(host);\n }\n if (trapLayers.length === 0) {\n document.removeEventListener('keydown', handleTabKeyDown);\n }\n notifyStackChanged();\n };\n};\n\n/**\n * Whether a SidePanel or Modal is open anywhere, for host chrome that has to move out of the way.\n * Overlays portal, so the only other signal is this module's markers, which a host cannot read\n * without coupling to an internal. Dropdowns and tooltips do not count: they trap no focus.\n */\nexport const useHasOpenOverlay = (): boolean =>\n useSyncExternalStore(\n subscribeToStack,\n () => trapLayers.length > 0,\n () => false,\n );\n\n/**\n * The modal-overlay behaviour shared by SidePanel and Modal: ESC and the Tab focus trap\n * (topmost overlay only, so these may be stacked), background scroll lock, and focus moved\n * into the overlay on open then restored to the trigger on close.\n *\n * Returns the ref callback the dialog element must take, whether this overlay is the topmost\n * one — only that one may claim `aria-modal`, or a screen reader can still browse the overlay\n * underneath — the z-index its host must carry, which keeps paint order with the focus stack,\n * and whether it is elevated. Presentation otherwise stays with the calling component.\n */\nexport const useOverlayBehaviour = ({\n open,\n onClose,\n elevated = false,\n hostRef,\n}: {\n open: boolean;\n onClose: () => void;\n elevated?: boolean;\n /** The shadow host, which the stack promotes into the top layer while elevated. */\n hostRef?: { current: HTMLElement | null };\n}): {\n ref: (node: HTMLElement | null) => void;\n isTopmost: boolean;\n zIndex: number | undefined;\n elevated: boolean;\n} => {\n const panelRef = useRef<HTMLElement | null>(null);\n // One identity for the life of the instance: elevation registers it in the layout phase,\n // before the effect below pushes it onto the stack.\n const source = useRef<PanelSource>(() => panelRef.current).current;\n const previousFocusRef = useRef<HTMLElement | null>(null);\n const layerRef = useRef<PanelSource | null>(null);\n\n // Ref so the ESC layer registers once per open, not on every inline-onClose change.\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n // Before the trap effect, so the trigger is recorded before focus moves in — and relies on\n // ShadowRootWrapper portaling a commit late, or this would capture the panel itself.\n useEffect(() => {\n if (!open) {\n return;\n }\n previousFocusRef.current = getDeepActiveElement();\n return () => {\n const previous = previousFocusRef.current;\n previousFocusRef.current = null;\n if (previous?.isConnected) {\n previous.focus();\n }\n };\n }, [open]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n layerRef.current = source;\n const popEscapeLayer = pushEscapeLayer(() => onCloseRef.current());\n const releaseScrollLock = lockBodyScroll();\n const popFocusTrapLayer = pushFocusTrapLayer(source, () => hostRef?.current ?? null);\n // Reopening inside the exit transition reuses the same node, so the ref callback\n // never fires again and nothing would take focus.\n panelRef.current?.focus();\n return () => {\n layerRef.current = null;\n popFocusTrapLayer();\n popEscapeLayer();\n releaseScrollLock();\n };\n }, [open, hostRef, source]);\n\n // Its own effect: re-pushing the trap layer to change elevation would move this overlay to\n // the top of the stack, handing it the Escape and Tab that belong to a dialog above it.\n // Layout, and declared above the sync below, so that sync sees it in the same commit.\n useLayoutEffect(() => {\n if (!open || !elevated) {\n return;\n }\n elevatedLayers.add(source);\n notifyStackChanged();\n return () => {\n elevatedLayers.delete(source);\n notifyStackChanged();\n };\n }, [open, elevated, source]);\n\n // Only an open overlay subscribes: a mounted-but-idle one must carry no at-rest cost,\n // and its snapshot is a constant `false` regardless of what the stack does.\n const subscribe = useCallback(\n (onStackChange: () => void) => (open ? subscribeToStack(onStackChange) : NO_SUBSCRIPTION),\n [open],\n );\n\n const isTopmost = useSyncExternalStore(\n subscribe,\n // Gated on `open` so an overlay fading out stops claiming modal. Before it registers\n // it is the one about to go on top, or aria-modal would drop for a frame on open.\n () =>\n open &&\n (layerRef.current === null || trapLayers[trapLayers.length - 1] === layerRef.current),\n () => true,\n );\n\n // Its own request counts before the stack has it: the layer is not pushed until effects run.\n const stackElevated = useSyncExternalStore(\n subscribe,\n () => open && (elevated || elevatedLayers.size > 0),\n () => false,\n );\n\n // Overlay hosts share one z-index band, so paint order would otherwise fall out of body\n // order: an overlay reopened over a newer one takes the keyboard while painting under it.\n const zIndex = useSyncExternalStore(\n subscribe,\n () => {\n const layer = layerRef.current;\n return OVERLAY_Z_BASE + (open && layer ? Math.max(0, trapLayers.indexOf(layer)) : 0);\n },\n () => OVERLAY_Z_BASE,\n );\n\n // Layout, not passive: the rule has to exist before the first paint the attribute applies to.\n useLayoutEffect(() => {\n if (stackElevated) {\n ensureElevatedOverlayStyles();\n }\n }, [stackElevated]);\n\n // No deps: the host mounts a commit after the layer that owns it, so there is no stack\n // change left to key this on. `syncTopLayer` compares before it touches anything.\n useLayoutEffect(() => {\n syncTopLayer();\n });\n\n const ref = useCallback((node: HTMLElement | null) => {\n panelRef.current = node;\n // The panel mounts fresh on every open, so first attach = time to take focus.\n node?.focus();\n }, []);\n\n return { ref, isTopmost, zIndex: stackElevated ? undefined : zIndex, elevated: stackElevated };\n};\n\nexport default useOverlayBehaviour;\n"],"names":["OVERLAY_ICON_BUTTON_CLASSES","FOCUS_RING","FOCUSABLE_SELECTOR","trapLayers","elevatedLayers","hostSources","stackListeners","NO_SUBSCRIPTION","promoted","syncTopLayer","wanted","layer","_a","host","index","stillWanted","leaveTopLayer","raiseToTopLayer","notifyStackChanged","listener","subscribeToStack","handleTabKeyDown","event","panel","focusables","first","last","active","getDeepActiveElement","activeInPanel","pushFocusTrapLayer","getPanel","getHost","useHasOpenOverlay","useSyncExternalStore","useOverlayBehaviour","open","onClose","elevated","hostRef","panelRef","useRef","source","previousFocusRef","layerRef","onCloseRef","useEffect","previous","popEscapeLayer","pushEscapeLayer","releaseScrollLock","lockBodyScroll","popFocusTrapLayer","useLayoutEffect","subscribe","useCallback","onStackChange","isTopmost","stackElevated","zIndex","OVERLAY_Z_BASE","ensureElevatedOverlayStyles","node"],"mappings":";;;;;;;AASO,MAAMA,IAA8B,2MAA2MC,CAAU,IAEnPC,IACT,6IAMEC,IAA4B,CAAA,GAG5BC,wBAAqB,IAAA,GAErBC,wBAAkB,IAAA,GAClBC,wBAAqB,IAAA,GACrBC,IAAkB,MAAM;AAE9B;AAIA,IAAIC,IAA0B,CAAA;AAE9B,MAAMC,IAAe,MAAY;AAC7B,QAAMC,IAASN,EAAe,OACxBD,EACK,IAAI,CAACQ,MAAA;;AAAU,YAAAC,IAAAP,EAAY,IAAIM,CAAK,MAArB,gBAAAC;AAAA,GAA0B,EACzC,OAAO,CAACC,MAA8B,EAAQA,CAAK,IACxD,CAAA;AAGN,MACIH,EAAO,WAAWF,EAAS,UAC3BE,EAAO,MAAM,CAACG,GAAMC,MAAUD,MAASL,EAASM,CAAK,CAAC;AAEtD;AAEJ,QAAMC,IAAc,IAAI,IAAIL,CAAM;AAClC,aAAWG,KAAQL;AACf,IAAKO,EAAY,IAAIF,CAAI,KACrBG,EAAcH,CAAI;AAG1B,aAAWA,KAAQH;AACf,IAAAO,EAAgBJ,CAAI;AAExB,EAAAL,IAAWE;AACf,GAEMQ,IAAqB,MAAY;AACnC,aAAWC,KAAYb;AACnB,IAAAa,EAAA;AAER,GAEMC,IAAmB,CAACD,OACtBb,EAAe,IAAIa,CAAQ,GACpB,MAAM;AACT,EAAAb,EAAe,OAAOa,CAAQ;AAClC,IAGEE,IAAmB,CAACC,MAA+B;AACrD,MAAIA,EAAM,QAAQ,SAASA,EAAM;AAC7B;AAIJ,MAAIC,IAA4B;AAChC,WAAST,IAAQX,EAAW,SAAS,GAAGW,KAAS,KAAK,CAACS,GAAOT,KAAS;AACnE,IAAAS,IAAQpB,EAAWW,CAAK,EAAA;AAE5B,MAAI,CAACS;AACD;AAEJ,QAAMC,IAAa,MAAM,KAAKD,EAAM,iBAA8BrB,CAAkB,CAAC;AACrF,MAAIsB,EAAW,WAAW,GAAG;AACzB,IAAAF,EAAM,eAAA,GACNC,EAAM,MAAA;AACN;AAAA,EACJ;AACA,QAAME,IAAQD,EAAW,CAAC,GACpBE,IAAOF,EAAWA,EAAW,SAAS,CAAC,GACvCG,IAASC,EAAA,GACTC,IAAgBF,MAAW,QAAQJ,EAAM,SAASI,CAAM;AAC9D,EAAIL,EAAM,YACF,CAACO,KAAiBF,MAAWF,KAASE,MAAWJ,OACjDD,EAAM,eAAA,GACNI,EAAK,MAAA,MAEF,CAACG,KAAiBF,MAAWD,OACpCJ,EAAM,eAAA,GACNG,EAAM,MAAA;AAEd,GAKMK,IAAqB,CAACC,GAAuBC,OAC3C7B,EAAW,WAAW,KACtB,SAAS,iBAAiB,WAAWkB,CAAgB,GAEzDlB,EAAW,KAAK4B,CAAQ,GACxB1B,EAAY,IAAI0B,GAAUC,CAAO,GACjCd,EAAA,GACO,MAAM;AACT,QAAMJ,IAAQX,EAAW,YAAY4B,CAAQ;AAC7C,EAAIjB,MAAU,MACVX,EAAW,OAAOW,GAAO,CAAC,GAE9BV,EAAe,OAAO2B,CAAQ,GAC9B1B,EAAY,OAAO0B,CAAQ;AAC3B,QAAMlB,IAAOmB,EAAA;AACb,EAAInB,KACAG,EAAcH,CAAI,GAElBV,EAAW,WAAW,KACtB,SAAS,oBAAoB,WAAWkB,CAAgB,GAE5DH,EAAA;AACJ,IAQSe,IAAoB,MAC7BC;AAAA,EACId;AAAA,EACA,MAAMjB,EAAW,SAAS;AAAA,EAC1B,MAAM;AACV,GAYSgC,IAAsB,CAAC;AAAA,EAChC,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,SAAAC;AACJ,MAWK;AACD,QAAMC,IAAWC,EAA2B,IAAI,GAG1CC,IAASD,EAAoB,MAAMD,EAAS,OAAO,EAAE,SACrDG,IAAmBF,EAA2B,IAAI,GAClDG,IAAWH,EAA2B,IAAI,GAG1CI,IAAaJ,EAAOJ,CAAO;AACjC,EAAAS,EAAU,MAAM;AACZ,IAAAD,EAAW,UAAUR;AAAA,EACzB,GAAG,CAACA,CAAO,CAAC,GAIZS,EAAU,MAAM;AACZ,QAAKV;AAGL,aAAAO,EAAiB,UAAUf,EAAA,GACpB,MAAM;AACT,cAAMmB,IAAWJ,EAAiB;AAClC,QAAAA,EAAiB,UAAU,MACvBI,KAAA,QAAAA,EAAU,eACVA,EAAS,MAAA;AAAA,MAEjB;AAAA,EACJ,GAAG,CAACX,CAAI,CAAC,GAETU,EAAU,MAAM;;AACZ,QAAI,CAACV;AACD;AAEJ,IAAAQ,EAAS,UAAUF;AACnB,UAAMM,IAAiBC,EAAgB,MAAMJ,EAAW,SAAS,GAC3DK,IAAoBC,EAAA,GACpBC,IAAoBtB,EAAmBY,GAAQ,OAAMH,KAAA,gBAAAA,EAAS,YAAW,IAAI;AAGnF,YAAA3B,IAAA4B,EAAS,YAAT,QAAA5B,EAAkB,SACX,MAAM;AACT,MAAAgC,EAAS,UAAU,MACnBQ,EAAA,GACAJ,EAAA,GACAE,EAAA;AAAA,IACJ;AAAA,EACJ,GAAG,CAACd,GAAMG,GAASG,CAAM,CAAC,GAK1BW,EAAgB,MAAM;AAClB,QAAI,GAACjB,KAAQ,CAACE;AAGd,aAAAlC,EAAe,IAAIsC,CAAM,GACzBxB,EAAA,GACO,MAAM;AACT,QAAAd,EAAe,OAAOsC,CAAM,GAC5BxB,EAAA;AAAA,MACJ;AAAA,EACJ,GAAG,CAACkB,GAAME,GAAUI,CAAM,CAAC;AAI3B,QAAMY,IAAYC;AAAA,IACd,CAACC,MAA+BpB,IAAOhB,EAAiBoC,CAAa,IAAIjD;AAAA,IACzE,CAAC6B,CAAI;AAAA,EAAA,GAGHqB,IAAYvB;AAAA,IACdoB;AAAA;AAAA;AAAA,IAGA,MACIlB,MACCQ,EAAS,YAAY,QAAQzC,EAAWA,EAAW,SAAS,CAAC,MAAMyC,EAAS;AAAA,IACjF,MAAM;AAAA,EAAA,GAIJc,IAAgBxB;AAAA,IAClBoB;AAAA,IACA,MAAMlB,MAASE,KAAYlC,EAAe,OAAO;AAAA,IACjD,MAAM;AAAA,EAAA,GAKJuD,IAASzB;AAAA,IACXoB;AAAA,IACA,MAAM;AACF,YAAM3C,IAAQiC,EAAS;AACvB,aAAOgB,KAAkBxB,KAAQzB,IAAQ,KAAK,IAAI,GAAGR,EAAW,QAAQQ,CAAK,CAAC,IAAI;AAAA,IACtF;AAAA,IACA,MAAMiD;AAAA,EAAA;AAIV,SAAAP,EAAgB,MAAM;AAClB,IAAIK,KACAG,EAAA;AAAA,EAER,GAAG,CAACH,CAAa,CAAC,GAIlBL,EAAgB,MAAM;AAClB,IAAA5C,EAAA;AAAA,EACJ,CAAC,GAQM,EAAE,KANG8C,EAAY,CAACO,MAA6B;AAClD,IAAAtB,EAAS,UAAUsB,GAEnBA,KAAA,QAAAA,EAAM;AAAA,EACV,GAAG,CAAA,CAAE,GAES,WAAAL,GAAW,QAAQC,IAAgB,SAAYC,GAAQ,UAAUD,EAAA;AACnF;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { injectStyleSheet as a } from "./injectStyleSheet.js";
|
|
2
|
+
const c = "data-malachite-overlay", t = {
|
|
3
|
+
dropdown: "malachite-dropdown-surface",
|
|
4
|
+
multiselect: "malachite-multiselect-surface",
|
|
5
|
+
actionmenu: "malachite-actionmenu-surface",
|
|
6
|
+
tooltip: "malachite-tip-surface",
|
|
7
|
+
sidepanel: "malachite-drawer-surface",
|
|
8
|
+
modal: "malachite-modal-surface"
|
|
9
|
+
}, _ = (e) => ({
|
|
10
|
+
className: t[e],
|
|
11
|
+
[c]: e
|
|
12
|
+
}), s = "malachite-overlay-styles", h = 1e3, i = 2147483646, o = "data-malachite-elevated", l = (e) => Object.values(t).map((n) => `.${n}:popover-open${e}`).join(", "), r = "inset: auto; margin: 0; border: 0; padding: 0; width: auto; height: auto; overflow: visible; background: none; color: inherit;", E = [
|
|
13
|
+
`.${t.dropdown}, .${t.multiselect}, .${t.actionmenu} { z-index: 2147483646; }`,
|
|
14
|
+
`.${t.tooltip} { z-index: 2147483647; }`
|
|
15
|
+
], A = () => a(s, E), d = "malachite-overlay-elevated", m = [
|
|
16
|
+
`.${t.sidepanel}[${o}], .${t.modal}[${o}] { z-index: ${i}; }`
|
|
17
|
+
], R = () => a(d, m), u = "malachite-overlay-top-layer", L = [
|
|
18
|
+
`${l("")} { ${r} }`,
|
|
19
|
+
`${l("::backdrop")} { display: none; }`
|
|
20
|
+
], y = () => {
|
|
21
|
+
const e = a(u, L);
|
|
22
|
+
return e && e.cssRules.length > 0 ? e : null;
|
|
23
|
+
};
|
|
24
|
+
export {
|
|
25
|
+
c as OVERLAY_ATTR,
|
|
26
|
+
t as OVERLAY_CLASS,
|
|
27
|
+
o as OVERLAY_ELEVATED_ATTR,
|
|
28
|
+
h as OVERLAY_Z_BASE,
|
|
29
|
+
i as OVERLAY_Z_ELEVATED,
|
|
30
|
+
R as ensureElevatedOverlayStyles,
|
|
31
|
+
A as ensureOverlayStyles,
|
|
32
|
+
y as ensureTopLayerStyles,
|
|
33
|
+
_ as overlayIdentity
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=portalOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portalOverlay.js","sources":["../../src/components/portalOverlay.ts"],"sourcesContent":["// Host \"kill the ad overlay\" CSS erases anything portaled into document.body: `body >\n// div:not([class])` matches an unclassed body child, `[style*=\"2147483\"]` a max-int z-index.\n// The second matches the style ATTRIBUTE, so declaring z-index here keeps max-int stacking.\n\nimport { injectStyleSheet } from './injectStyleSheet';\n\n/** One selector for every malachite overlay, so a host allow-lists them in one rule. */\nexport const OVERLAY_ATTR = 'data-malachite-overlay';\n\n// Values avoid `panel`/`popup`/`overlay`/`tooltip`: a class defeats `:not([class])`, but one\n// matching `[class*=\"panel\"]` trades that hole for another these elements did not have.\nexport const OVERLAY_CLASS = {\n dropdown: 'malachite-dropdown-surface',\n multiselect: 'malachite-multiselect-surface',\n actionmenu: 'malachite-actionmenu-surface',\n tooltip: 'malachite-tip-surface',\n sidepanel: 'malachite-drawer-surface',\n modal: 'malachite-modal-surface',\n} as const;\n\nexport type OverlayName = keyof typeof OVERLAY_CLASS;\n\nexport const overlayIdentity = (name: OverlayName) => ({\n className: OVERLAY_CLASS[name],\n [OVERLAY_ATTR]: name,\n});\n\nconst OVERLAY_STYLE_ID = 'malachite-overlay-styles';\n\n/**\n * Where SidePanel and Modal start. `useOverlayBehaviour` steps one per stacked overlay, so\n * paint order follows the focus stack rather than body order — a handful above this at most.\n */\nexport const OVERLAY_Z_BASE = 1000;\n\n/**\n * The dropdown band, which clears app chrome pinned just under max-int. One integer wide: a host\n * pins its chrome at max-int-1 and the tooltip band sits at max-int, so the stack cannot step\n * per layer the way the base band does — the top layer orders it, and where popover is\n * unsupported, document order does.\n */\nexport const OVERLAY_Z_ELEVATED = 2147483646;\n\n/** Marks a host in that band — an attribute, not an inline z-index; see above. */\nexport const OVERLAY_ELEVATED_ATTR = 'data-malachite-elevated';\n\n// Every overlay class, not the four promoted by default: one the reset misses wears the UA box.\nconst promotedSelector = (suffix: string) =>\n Object.values(OVERLAY_CLASS)\n .map((name) => `.${name}:popover-open${suffix}`)\n .join(', ');\n\n// Promotion drags in the UA `[popover]` box: `inset: 0` (which survives as right/bottom and\n// stretches a panel to the viewport edge), auto margins, a border, padding and fit-content\n// sizing. Reset to what these computed before promotion; their own inline styles still win.\nconst POPOVER_RESET =\n 'inset: auto; margin: 0; border: 0; padding: 0; width: auto; height: auto; ' +\n 'overflow: visible; background: none; color: inherit;';\n\nconst OVERLAY_RULES = [\n `.${OVERLAY_CLASS.dropdown}, .${OVERLAY_CLASS.multiselect}, .${OVERLAY_CLASS.actionmenu} { z-index: 2147483646; }`,\n `.${OVERLAY_CLASS.tooltip} { z-index: 2147483647; }`,\n];\n\nexport const ensureOverlayStyles = (): CSSStyleSheet | null =>\n injectStyleSheet(OVERLAY_STYLE_ID, OVERLAY_RULES);\n\n// Its own id like TOP_LAYER_STYLE_ID: a copy predating elevation would own OVERLAY_STYLE_ID.\nconst ELEVATED_STYLE_ID = 'malachite-overlay-elevated';\n\nconst ELEVATED_RULES = [\n `.${OVERLAY_CLASS.sidepanel}[${OVERLAY_ELEVATED_ATTR}], .${OVERLAY_CLASS.modal}[${OVERLAY_ELEVATED_ATTR}] { z-index: ${OVERLAY_Z_ELEVATED}; }`,\n];\n\nexport const ensureElevatedOverlayStyles = (): CSSStyleSheet | null =>\n injectStyleSheet(ELEVATED_STYLE_ID, ELEVATED_RULES);\n\n// Its own id, never folded into OVERLAY_STYLE_ID: injectStyleSheet keeps one sheet per id across\n// malachite copies sharing a realm, so a copy predating the reset would win that id and leave a\n// promoted overlay wearing the raw UA box. No copy has ever registered this one.\nconst TOP_LAYER_STYLE_ID = 'malachite-overlay-top-layer';\n\nconst TOP_LAYER_RULES = [\n `${promotedSelector('')} { ${POPOVER_RESET} }`,\n `${promotedSelector('::backdrop')} { display: none; }`,\n];\n\nexport const ensureTopLayerStyles = (): CSSStyleSheet | null => {\n // A sheet that installed does not mean its rules parsed: replaceSync (and the <style> path)\n // drop an unparseable rule silently rather than throwing, so an engine that chokes on\n // `:popover-open` or `::backdrop` hands back a valid, empty sheet.\n const sheet = injectStyleSheet(TOP_LAYER_STYLE_ID, TOP_LAYER_RULES);\n return sheet && sheet.cssRules.length > 0 ? sheet : null;\n};\n"],"names":["OVERLAY_ATTR","OVERLAY_CLASS","overlayIdentity","name","OVERLAY_STYLE_ID","OVERLAY_Z_BASE","OVERLAY_Z_ELEVATED","OVERLAY_ELEVATED_ATTR","promotedSelector","suffix","POPOVER_RESET","OVERLAY_RULES","ensureOverlayStyles","injectStyleSheet","ELEVATED_STYLE_ID","ELEVATED_RULES","ensureElevatedOverlayStyles","TOP_LAYER_STYLE_ID","TOP_LAYER_RULES","ensureTopLayerStyles","sheet"],"mappings":";AAOO,MAAMA,IAAe,0BAIfC,IAAgB;AAAA,EACzB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,WAAW;AAAA,EACX,OAAO;AACX,GAIaC,IAAkB,CAACC,OAAuB;AAAA,EACnD,WAAWF,EAAcE,CAAI;AAAA,EAC7B,CAACH,CAAY,GAAGG;AACpB,IAEMC,IAAmB,4BAMZC,IAAiB,KAQjBC,IAAqB,YAGrBC,IAAwB,2BAG/BC,IAAmB,CAACC,MACtB,OAAO,OAAOR,CAAa,EACtB,IAAI,CAACE,MAAS,IAAIA,CAAI,gBAAgBM,CAAM,EAAE,EAC9C,KAAK,IAAI,GAKZC,IACF,kIAGEC,IAAgB;AAAA,EAClB,IAAIV,EAAc,QAAQ,MAAMA,EAAc,WAAW,MAAMA,EAAc,UAAU;AAAA,EACvF,IAAIA,EAAc,OAAO;AAC7B,GAEaW,IAAsB,MAC/BC,EAAiBT,GAAkBO,CAAa,GAG9CG,IAAoB,8BAEpBC,IAAiB;AAAA,EACnB,IAAId,EAAc,SAAS,IAAIM,CAAqB,OAAON,EAAc,KAAK,IAAIM,CAAqB,gBAAgBD,CAAkB;AAC7I,GAEaU,IAA8B,MACvCH,EAAiBC,GAAmBC,CAAc,GAKhDE,IAAqB,+BAErBC,IAAkB;AAAA,EACpB,GAAGV,EAAiB,EAAE,CAAC,MAAME,CAAa;AAAA,EAC1C,GAAGF,EAAiB,YAAY,CAAC;AACrC,GAEaW,IAAuB,MAA4B;AAI5D,QAAMC,IAAQP,EAAiBI,GAAoBC,CAAe;AAClE,SAAOE,KAASA,EAAM,SAAS,SAAS,IAAIA,IAAQ;AACxD;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const e = (a) => {
|
|
2
|
+
a.languages.cedar = {
|
|
3
|
+
comment: /\/\/.*/,
|
|
4
|
+
// Greedy so an operator or keyword inside a quoted id, `"like-this"`, stays string.
|
|
5
|
+
string: {
|
|
6
|
+
pattern: /"(?:\\.|[^"\\\r\n])*"/,
|
|
7
|
+
greedy: !0
|
|
8
|
+
},
|
|
9
|
+
// Each segment of an entity path: the `StackOne` and `Action` of
|
|
10
|
+
// `StackOne::Action::"invokeTool"`. Matching per segment rather than the whole path
|
|
11
|
+
// keeps the pattern readable, and `::` falls through to punctuation.
|
|
12
|
+
"class-name": /\b[A-Za-z_]\w*(?=\s*::)/,
|
|
13
|
+
keyword: /\b(?:permit|forbid|when|unless|if|then|else|in|like|has|is)\b/,
|
|
14
|
+
// The four scope variables read as language, not as identifiers a policy author chose.
|
|
15
|
+
builtin: /\b(?:principal|action|resource|context)\b/,
|
|
16
|
+
boolean: /\b(?:true|false)\b/,
|
|
17
|
+
number: /\b\d+\b/,
|
|
18
|
+
operator: /&&|\|\||[=!<>]=|[<>!]|[+\-*]/,
|
|
19
|
+
punctuation: /[{}[\]();,.:]/
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
e.displayName = "cedar";
|
|
23
|
+
e.aliases = [];
|
|
24
|
+
export {
|
|
25
|
+
e as default
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=prismCedar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prismCedar.js","sources":["../../src/components/prismCedar.ts"],"sourcesContent":["/**\n * A Prism grammar for Cedar, the policy language.\n *\n * Written here because Prism ships none: Cedar is not in refractor's language set, so a\n * `language=\"cedar\"` code block would otherwise render as unhighlighted text. The shape\n * follows refractor's contract (a default-exported function taking Prism, carrying a\n * `displayName`), which is what `PrismLight.registerLanguage` expects.\n */\n\n/** The slice of Prism a grammar module touches. */\ninterface PrismLike {\n languages: Record<string, unknown>;\n}\n\nconst cedar = (Prism: PrismLike): void => {\n Prism.languages.cedar = {\n comment: /\\/\\/.*/,\n // Greedy so an operator or keyword inside a quoted id, `\"like-this\"`, stays string.\n string: {\n pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n greedy: true,\n },\n // Each segment of an entity path: the `StackOne` and `Action` of\n // `StackOne::Action::\"invokeTool\"`. Matching per segment rather than the whole path\n // keeps the pattern readable, and `::` falls through to punctuation.\n 'class-name': /\\b[A-Za-z_]\\w*(?=\\s*::)/,\n keyword: /\\b(?:permit|forbid|when|unless|if|then|else|in|like|has|is)\\b/,\n // The four scope variables read as language, not as identifiers a policy author chose.\n builtin: /\\b(?:principal|action|resource|context)\\b/,\n boolean: /\\b(?:true|false)\\b/,\n number: /\\b\\d+\\b/,\n operator: /&&|\\|\\||[=!<>]=|[<>!]|[+\\-*]/,\n punctuation: /[{}[\\]();,.:]/,\n };\n};\n\ncedar.displayName = 'cedar';\ncedar.aliases = [] as string[];\n\nexport default cedar;\n"],"names":["cedar","Prism"],"mappings":"AAcA,MAAMA,IAAQ,CAACC,MAA2B;AACtC,EAAAA,EAAM,UAAU,QAAQ;AAAA,IACpB,SAAS;AAAA;AAAA,IAET,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA,IAKZ,cAAc;AAAA,IACd,SAAS;AAAA;AAAA,IAET,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,aAAa;AAAA,EAAA;AAErB;AAEAD,EAAM,cAAc;AACpBA,EAAM,UAAU,CAAA;"}
|