@databricks/design-system 2.0.8 → 2.0.10
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/AGENTS.md +7 -7
- package/CHANGELOG.md +26 -0
- package/README.md +14 -3
- package/design-guidance/docs/README.md +42 -5
- package/design-guidance/docs/component-reference.md +100 -0
- package/design-guidance/docs/tokens.md +2 -2
- package/design-guidance/skills/dbui-build-screen.md +1 -1
- package/design-guidance/skills/dbui-check-guidelines.md +1 -1
- package/design-guidance/skills/dbui-pick-component.md +1 -1
- package/design-guidance/skills/dbui-pick-icon.md +1 -1
- package/design-guidance/skills/dbui-review.md +1 -1
- package/design-guidance/skills/dbui-validate.md +1 -1
- package/dist/{RHFControlledTypeaheadComboboxV2-Boee19c1.js → RHFControlledTypeaheadComboboxV2-B8Al2z1N.js} +4 -3
- package/dist/{RHFControlledTypeaheadComboboxV2-Boee19c1.js.map → RHFControlledTypeaheadComboboxV2-B8Al2z1N.js.map} +1 -1
- package/dist/{WizardStepContentWrapper-DfErft8z.js → WizardStepContentWrapper-D_OEwjUE.js} +1310 -492
- package/dist/WizardStepContentWrapper-D_OEwjUE.js.map +1 -0
- package/dist/all-styles.css +89 -0
- package/dist/assets/fonts/dm-mono/DMMono-Regular.woff2 +0 -0
- package/dist/assets/fonts/dm-mono/dm-mono.css +11 -0
- package/dist/assets/fonts/dm-sans/DMSans-variable.woff2 +0 -0
- package/dist/assets/fonts/dm-sans/dm-sans.css +11 -0
- package/dist/assets/graphics/dark/accessDeniedGraphic.svg +1 -0
- package/dist/assets/graphics/dark/auth0Graphic.svg +1 -0
- package/dist/assets/graphics/dark/auth0GraphicLarge.svg +73 -0
- package/dist/assets/graphics/dark/dataMaskiingGraphic.svg +1 -0
- package/dist/assets/graphics/dark/emptyDashboardGraphic.svg +9 -0
- package/dist/assets/graphics/dark/missingBranchGraphic.svg +1 -0
- package/dist/assets/graphics/dark/missingGraphic.svg +1 -0
- package/dist/assets/graphics/dark/outageGraphic.svg +11 -0
- package/dist/assets/graphics/dark/usageOverageGraphic.svg +1 -0
- package/dist/assets/graphics/dark/usageSpikeGraphic.svg +1 -0
- package/dist/assets/graphics/light/accessDeniedGraphic.svg +1 -0
- package/dist/assets/graphics/light/auth0Graphic.svg +1 -0
- package/dist/assets/graphics/light/auth0GraphicLarge.svg +73 -0
- package/dist/assets/graphics/light/dataMaskiingGraphic.svg +1 -0
- package/dist/assets/graphics/light/emptyDashboardGraphic.svg +1 -0
- package/dist/assets/graphics/light/missingBranchGraphic.svg +1 -0
- package/dist/assets/graphics/light/missingGraphic.svg +1 -0
- package/dist/assets/graphics/light/outageGraphic.svg +1 -0
- package/dist/assets/graphics/light/usageOverageGraphic.svg +1 -0
- package/dist/assets/graphics/light/usageSpikeGraphic.svg +1 -0
- package/dist/assets/icons/AZHorizontalIcon.svg +4 -0
- package/dist/assets/icons/AZVerticalIcon.svg +11 -0
- package/dist/assets/icons/AlignCenterIcon.svg +7 -0
- package/dist/assets/icons/AlignJustifyIcon.svg +3 -0
- package/dist/assets/icons/AlignLeftIcon.svg +7 -0
- package/dist/assets/icons/AlignRightIcon.svg +7 -0
- package/dist/assets/icons/AlignVerticalBottomIcon.svg +3 -0
- package/dist/assets/icons/AlignVerticalCenterIcon.svg +5 -0
- package/dist/assets/icons/AlignVerticalTopIcon.svg +3 -0
- package/dist/assets/icons/AppIcon.svg +3 -0
- package/dist/assets/icons/ArrowDownDotIcon.svg +4 -0
- package/dist/assets/icons/ArrowDownFillIcon.svg +3 -0
- package/dist/assets/icons/ArrowDownIcon.svg +3 -0
- package/dist/assets/icons/ArrowInIcon.svg +4 -0
- package/dist/assets/icons/ArrowInTableIcon.svg +4 -0
- package/dist/assets/icons/ArrowLeftIcon.svg +3 -0
- package/dist/assets/icons/ArrowOutTableIcon.svg +4 -0
- package/dist/assets/icons/ArrowOverIcon.svg +4 -0
- package/dist/assets/icons/ArrowRightIcon.svg +3 -0
- package/dist/assets/icons/ArrowUpDotIcon.svg +4 -0
- package/dist/assets/icons/ArrowUpFillIcon.svg +3 -0
- package/dist/assets/icons/ArrowUpIcon.svg +3 -0
- package/dist/assets/icons/ArrowsCollapseIcon.svg +4 -0
- package/dist/assets/icons/ArrowsConnectIcon.svg +6 -0
- package/dist/assets/icons/ArrowsExpandIcon.svg +4 -0
- package/dist/assets/icons/ArrowsUpDownIcon.svg +4 -0
- package/dist/assets/icons/AssistantIcon.svg +3 -0
- package/dist/assets/icons/AtIcon.svg +3 -0
- package/dist/assets/icons/BackupIcon.svg +3 -0
- package/dist/assets/icons/BadgeCodeIcon.svg +5 -0
- package/dist/assets/icons/BadgeCodeOffIcon.svg +5 -0
- package/dist/assets/icons/BarChartIcon.svg +7 -0
- package/dist/assets/icons/BarGroupedIcon.svg +4 -0
- package/dist/assets/icons/BarStackedIcon.svg +3 -0
- package/dist/assets/icons/BarStackedPercentageIcon.svg +3 -0
- package/dist/assets/icons/BarsAscendingHorizontalIcon.svg +5 -0
- package/dist/assets/icons/BarsAscendingVerticalIcon.svg +5 -0
- package/dist/assets/icons/BarsDescendingHorizontalIcon.svg +5 -0
- package/dist/assets/icons/BarsDescendingVerticalIcon.svg +5 -0
- package/dist/assets/icons/BeakerIcon.svg +3 -0
- package/dist/assets/icons/BinaryIcon.svg +3 -0
- package/dist/assets/icons/BlockQuoteIcon.svg +8 -0
- package/dist/assets/icons/BoldIcon.svg +3 -0
- package/dist/assets/icons/BookIcon.svg +3 -0
- package/dist/assets/icons/BookmarkFillIcon.svg +3 -0
- package/dist/assets/icons/BookmarkIcon.svg +3 -0
- package/dist/assets/icons/BooksIcon.svg +5 -0
- package/dist/assets/icons/BracketsCheckIcon.svg +5 -0
- package/dist/assets/icons/BracketsCurlyIcon.svg +4 -0
- package/dist/assets/icons/BracketsErrorIcon.svg +5 -0
- package/dist/assets/icons/BracketsSquareIcon.svg +3 -0
- package/dist/assets/icons/BracketsXIcon.svg +12 -0
- package/dist/assets/icons/BranchCheckIcon.svg +4 -0
- package/dist/assets/icons/BranchIcon.svg +3 -0
- package/dist/assets/icons/BranchResetIcon.svg +5 -0
- package/dist/assets/icons/BriefcaseFillIcon.svg +3 -0
- package/dist/assets/icons/BriefcaseIcon.svg +3 -0
- package/dist/assets/icons/BrushIcon.svg +3 -0
- package/dist/assets/icons/BugIcon.svg +3 -0
- package/dist/assets/icons/CalendarClockIcon.svg +5 -0
- package/dist/assets/icons/CalendarEventIcon.svg +4 -0
- package/dist/assets/icons/CalendarIcon.svg +3 -0
- package/dist/assets/icons/CalendarRangeIcon.svg +11 -0
- package/dist/assets/icons/CalendarSyncIcon.svg +5 -0
- package/dist/assets/icons/CameraIcon.svg +3 -0
- package/dist/assets/icons/CapitalizeIcon.svg +3 -0
- package/dist/assets/icons/CaretDownSquareIcon.svg +4 -0
- package/dist/assets/icons/CaretUpSquareIcon.svg +4 -0
- package/dist/assets/icons/CatalogCloudIcon.svg +4 -0
- package/dist/assets/icons/CatalogGearIcon.svg +11 -0
- package/dist/assets/icons/CatalogHomeIcon.svg +4 -0
- package/dist/assets/icons/CatalogIcon.svg +3 -0
- package/dist/assets/icons/CatalogOffIcon.svg +11 -0
- package/dist/assets/icons/CatalogSharedIcon.svg +4 -0
- package/dist/assets/icons/CatalogUserHomeIcon.svg +4 -0
- package/dist/assets/icons/CellsSquareIcon.svg +3 -0
- package/dist/assets/icons/CertifiedFillIcon.svg +3 -0
- package/dist/assets/icons/CertifiedFillSmallIcon.svg +3 -0
- package/dist/assets/icons/CertifiedIcon.svg +11 -0
- package/dist/assets/icons/ChainIcon.svg +4 -0
- package/dist/assets/icons/ChartLineIcon.svg +4 -0
- package/dist/assets/icons/ChatNewTabIcon.svg +3 -0
- package/dist/assets/icons/ChatSpinnerIcon.svg +3 -0
- package/dist/assets/icons/CheckCircleBadgeIcon.svg +5 -0
- package/dist/assets/icons/CheckCircleFillIcon.svg +3 -0
- package/dist/assets/icons/CheckCircleIcon.svg +4 -0
- package/dist/assets/icons/CheckCircleSmallIcon.svg +3 -0
- package/dist/assets/icons/CheckIcon.svg +3 -0
- package/dist/assets/icons/CheckLineIcon.svg +3 -0
- package/dist/assets/icons/CheckSmallIcon.svg +3 -0
- package/dist/assets/icons/CheckboxIcon.svg +4 -0
- package/dist/assets/icons/ChecklistIcon.svg +7 -0
- package/dist/assets/icons/ChevronDoubleDownIcon.svg +4 -0
- package/dist/assets/icons/ChevronDoubleLeftIcon.svg +4 -0
- package/dist/assets/icons/ChevronDoubleLeftOffIcon.svg +4 -0
- package/dist/assets/icons/ChevronDoubleRightIcon.svg +4 -0
- package/dist/assets/icons/ChevronDoubleRightOffIcon.svg +4 -0
- package/dist/assets/icons/ChevronDoubleUpIcon.svg +4 -0
- package/dist/assets/icons/ChevronDownIcon.svg +3 -0
- package/dist/assets/icons/ChevronLeftIcon.svg +3 -0
- package/dist/assets/icons/ChevronRightIcon.svg +3 -0
- package/dist/assets/icons/ChevronUpIcon.svg +3 -0
- package/dist/assets/icons/ChipIcon.svg +4 -0
- package/dist/assets/icons/CircleIcon.svg +3 -0
- package/dist/assets/icons/CircleOffIcon.svg +3 -0
- package/dist/assets/icons/CircleOffLargeIcon.svg +4 -0
- package/dist/assets/icons/CircleOutlineIcon.svg +3 -0
- package/dist/assets/icons/CircleOutlineLargeIcon.svg +3 -0
- package/dist/assets/icons/ClipboardIcon.svg +3 -0
- package/dist/assets/icons/ClockIcon.svg +4 -0
- package/dist/assets/icons/ClockKeyIcon.svg +5 -0
- package/dist/assets/icons/ClockOffIcon.svg +5 -0
- package/dist/assets/icons/CloseIcon.svg +3 -0
- package/dist/assets/icons/CloseSmallIcon.svg +3 -0
- package/dist/assets/icons/CloudCheckIcon.svg +4 -0
- package/dist/assets/icons/CloudDatabaseIcon.svg +4 -0
- package/dist/assets/icons/CloudDownloadIcon.svg +4 -0
- package/dist/assets/icons/CloudIcon.svg +3 -0
- package/dist/assets/icons/CloudKeyIcon.svg +3 -0
- package/dist/assets/icons/CloudModelIcon.svg +4 -0
- package/dist/assets/icons/CloudOffIcon.svg +4 -0
- package/dist/assets/icons/CloudUploadIcon.svg +4 -0
- package/dist/assets/icons/CodeIcon.svg +4 -0
- package/dist/assets/icons/ColorFillIcon.svg +3 -0
- package/dist/assets/icons/ColorMappingEditIcon.svg +6 -0
- package/dist/assets/icons/ColorMappingIcon.svg +6 -0
- package/dist/assets/icons/ColumnIcon.svg +3 -0
- package/dist/assets/icons/ColumnSplitIcon.svg +3 -0
- package/dist/assets/icons/ColumnTagIcon.svg +4 -0
- package/dist/assets/icons/ColumnsIcon.svg +3 -0
- package/dist/assets/icons/CommandIcon.svg +3 -0
- package/dist/assets/icons/CommandPaletteIcon.svg +3 -0
- package/dist/assets/icons/CompassIcon.svg +4 -0
- package/dist/assets/icons/ConnectIcon.svg +6 -0
- package/dist/assets/icons/CopyIcon.svg +3 -0
- package/dist/assets/icons/CreditCardIcon.svg +4 -0
- package/dist/assets/icons/CursorClickIcon.svg +7 -0
- package/dist/assets/icons/CursorIcon.svg +10 -0
- package/dist/assets/icons/CursorTypeIcon.svg +4 -0
- package/dist/assets/icons/CustomAppIcon.svg +4 -0
- package/dist/assets/icons/DAGHorizontalIcon.svg +3 -0
- package/dist/assets/icons/DAGIcon.svg +3 -0
- package/dist/assets/icons/DAGVerticalIcon.svg +3 -0
- package/dist/assets/icons/DangerFillIcon.svg +3 -0
- package/dist/assets/icons/DangerIcon.svg +5 -0
- package/dist/assets/icons/DangerSmallIcon.svg +3 -0
- package/dist/assets/icons/DashIcon.svg +3 -0
- package/dist/assets/icons/DashboardCodeIcon.svg +5 -0
- package/dist/assets/icons/DashboardIcon.svg +3 -0
- package/dist/assets/icons/DataIcon.svg +5 -0
- package/dist/assets/icons/DatabaseClockIcon.svg +4 -0
- package/dist/assets/icons/DatabaseIcon.svg +3 -0
- package/dist/assets/icons/DatabaseImportIcon.svg +4 -0
- package/dist/assets/icons/DecimalIcon.svg +5 -0
- package/dist/assets/icons/DeprecatedIcon.svg +3 -0
- package/dist/assets/icons/DeprecatedSmallIcon.svg +3 -0
- package/dist/assets/icons/DollarIcon.svg +4 -0
- package/dist/assets/icons/DomainCirclesThree.svg +5 -0
- package/dist/assets/icons/DomainsIcon.svg +5 -0
- package/dist/assets/icons/DotsCircleIcon.svg +13 -0
- package/dist/assets/icons/DownloadIcon.svg +4 -0
- package/dist/assets/icons/DragIcon.svg +8 -0
- package/dist/assets/icons/ERDIcon.svg +3 -0
- package/dist/assets/icons/ExpandLessIcon.svg +4 -0
- package/dist/assets/icons/ExpandMoreIcon.svg +4 -0
- package/dist/assets/icons/FaceFrownIcon.svg +13 -0
- package/dist/assets/icons/FaceNeutralIcon.svg +13 -0
- package/dist/assets/icons/FaceSmileIcon.svg +13 -0
- package/dist/assets/icons/FileCodeIcon.svg +5 -0
- package/dist/assets/icons/FileCubeIcon.svg +4 -0
- package/dist/assets/icons/FileDocumentIcon.svg +5 -0
- package/dist/assets/icons/FileIcon.svg +3 -0
- package/dist/assets/icons/FileImageIcon.svg +5 -0
- package/dist/assets/icons/FileLockIcon.svg +11 -0
- package/dist/assets/icons/FileModelIcon.svg +4 -0
- package/dist/assets/icons/FileNewIcon.svg +4 -0
- package/dist/assets/icons/FilePipelineIcon.svg +4 -0
- package/dist/assets/icons/FilterFillIcon.svg +3 -0
- package/dist/assets/icons/FilterIcon.svg +3 -0
- package/dist/assets/icons/FlagPointerIcon.svg +3 -0
- package/dist/assets/icons/FloatIcon.svg +5 -0
- package/dist/assets/icons/FlowIcon.svg +3 -0
- package/dist/assets/icons/FlowsIcon.svg +3 -0
- package/dist/assets/icons/FolderBranchFillIcon.svg +4 -0
- package/dist/assets/icons/FolderBranchIcon.svg +3 -0
- package/dist/assets/icons/FolderCloudFilledIcon.svg +11 -0
- package/dist/assets/icons/FolderCloudIcon.svg +11 -0
- package/dist/assets/icons/FolderCubeIcon.svg +4 -0
- package/dist/assets/icons/FolderCubeOutlineIcon.svg +4 -0
- package/dist/assets/icons/FolderFillIcon.svg +3 -0
- package/dist/assets/icons/FolderHomeIcon.svg +4 -0
- package/dist/assets/icons/FolderIcon.svg +3 -0
- package/dist/assets/icons/FolderNewIcon.svg +4 -0
- package/dist/assets/icons/FolderNodeIcon.svg +3 -0
- package/dist/assets/icons/FolderOpenBranchIcon.svg +4 -0
- package/dist/assets/icons/FolderOpenCloudIcon.svg +4 -0
- package/dist/assets/icons/FolderOpenCubeIcon.svg +4 -0
- package/dist/assets/icons/FolderOpenIcon.svg +3 -0
- package/dist/assets/icons/FolderOpenPipelineIcon.svg +4 -0
- package/dist/assets/icons/FolderOutlinePipelineIcon.svg +4 -0
- package/dist/assets/icons/FolderSolidPipelineIcon.svg +4 -0
- package/dist/assets/icons/FontIcon.svg +10 -0
- package/dist/assets/icons/ForkHorizontalIcon.svg +3 -0
- package/dist/assets/icons/ForkIcon.svg +3 -0
- package/dist/assets/icons/FullscreenExitIcon.svg +6 -0
- package/dist/assets/icons/FullscreenIcon.svg +6 -0
- package/dist/assets/icons/FunctionIcon.svg +10 -0
- package/dist/assets/icons/FunctionInputIcon.svg +6 -0
- package/dist/assets/icons/GavelIcon.svg +3 -0
- package/dist/assets/icons/GearFillIcon.svg +3 -0
- package/dist/assets/icons/GearIcon.svg +11 -0
- package/dist/assets/icons/GenieCodeIcon.svg +3 -0
- package/dist/assets/icons/GenieDeepResearchIcon.svg +6 -0
- package/dist/assets/icons/GiftIcon.svg +3 -0
- package/dist/assets/icons/GitCommitIcon.svg +3 -0
- package/dist/assets/icons/GitMergeIcon.svg +3 -0
- package/dist/assets/icons/GitRebaseIcon.svg +4 -0
- package/dist/assets/icons/GlobeIcon.svg +10 -0
- package/dist/assets/icons/GridDashIcon.svg +10 -0
- package/dist/assets/icons/GridIcon.svg +6 -0
- package/dist/assets/icons/GroupIcon.svg +12 -0
- package/dist/assets/icons/H1Icon.svg +4 -0
- package/dist/assets/icons/H2Icon.svg +4 -0
- package/dist/assets/icons/H3Icon.svg +4 -0
- package/dist/assets/icons/H4Icon.svg +4 -0
- package/dist/assets/icons/H5Icon.svg +4 -0
- package/dist/assets/icons/H6Icon.svg +4 -0
- package/dist/assets/icons/HashIcon.svg +3 -0
- package/dist/assets/icons/HistoryIcon.svg +11 -0
- package/dist/assets/icons/HomeIcon.svg +3 -0
- package/dist/assets/icons/ImageIcon.svg +4 -0
- package/dist/assets/icons/IndentDecreaseIcon.svg +7 -0
- package/dist/assets/icons/IndentIncreaseIcon.svg +7 -0
- package/dist/assets/icons/InfinityIcon.svg +3 -0
- package/dist/assets/icons/InfoBookIcon.svg +5 -0
- package/dist/assets/icons/InfoFillIcon.svg +3 -0
- package/dist/assets/icons/InfoIcon.svg +3 -0
- package/dist/assets/icons/InfoSmallIcon.svg +5 -0
- package/dist/assets/icons/IngestionIcon.svg +4 -0
- package/dist/assets/icons/ItalicIcon.svg +3 -0
- package/dist/assets/icons/JoinOperatorIcon.svg +3 -0
- package/dist/assets/icons/KeyIcon.svg +3 -0
- package/dist/assets/icons/KeyboardIcon.svg +3 -0
- package/dist/assets/icons/LakebaseCatalogIcon.svg +4 -0
- package/dist/assets/icons/LakebaseIcon.svg +3 -0
- package/dist/assets/icons/LakeflowDesignerIcon.svg +3 -0
- package/dist/assets/icons/LakewatchAlertIcon.svg +4 -0
- package/dist/assets/icons/LakewatchDatasourceIcon.svg +3 -0
- package/dist/assets/icons/LakewatchDetectionRuleIcon.svg +3 -0
- package/dist/assets/icons/LakewatchIcon.svg +4 -0
- package/dist/assets/icons/LakewatchParserIcon.svg +16 -0
- package/dist/assets/icons/LayerGraphIcon.svg +5 -0
- package/dist/assets/icons/LayerIcon.svg +5 -0
- package/dist/assets/icons/LeafIcon.svg +3 -0
- package/dist/assets/icons/LetterFormatIcon.svg +5 -0
- package/dist/assets/icons/LettersIcon.svg +5 -0
- package/dist/assets/icons/LettersNumbersIcon.svg +8 -0
- package/dist/assets/icons/LibrariesIcon.svg +5 -0
- package/dist/assets/icons/LifesaverIcon.svg +3 -0
- package/dist/assets/icons/LightbulbIcon.svg +8 -0
- package/dist/assets/icons/LightningCircleFillIcon.svg +3 -0
- package/dist/assets/icons/LightningIcon.svg +3 -0
- package/dist/assets/icons/LinearLineIcon.svg +3 -0
- package/dist/assets/icons/LinkIcon.svg +5 -0
- package/dist/assets/icons/LinkOffIcon.svg +5 -0
- package/dist/assets/icons/ListBorderIcon.svg +9 -0
- package/dist/assets/icons/ListClearIcon.svg +13 -0
- package/dist/assets/icons/ListIcon.svg +6 -0
- package/dist/assets/icons/ListNumberIcon.svg +6 -0
- package/dist/assets/icons/LoadingIcon.svg +5 -0
- package/dist/assets/icons/LockFillIcon.svg +3 -0
- package/dist/assets/icons/LockIcon.svg +4 -0
- package/dist/assets/icons/LockShareIcon.svg +4 -0
- package/dist/assets/icons/LockUnlockedIcon.svg +4 -0
- package/dist/assets/icons/LoopIcon.svg +3 -0
- package/dist/assets/icons/LowercaseIcon.svg +4 -0
- package/dist/assets/icons/MailIcon.svg +3 -0
- package/dist/assets/icons/MapIcon.svg +3 -0
- package/dist/assets/icons/MarkdownIcon.svg +4 -0
- package/dist/assets/icons/McpIcon.svg +11 -0
- package/dist/assets/icons/MeasureIcon.svg +3 -0
- package/dist/assets/icons/MegaphoneIcon.svg +3 -0
- package/dist/assets/icons/MenuIcon.svg +3 -0
- package/dist/assets/icons/MicrophoneIcon.svg +4 -0
- package/dist/assets/icons/MicrophoneOffIcon.svg +5 -0
- package/dist/assets/icons/MinusCircleFillIcon.svg +3 -0
- package/dist/assets/icons/MinusCircleIcon.svg +4 -0
- package/dist/assets/icons/MinusCircleSmallIcon.svg +4 -0
- package/dist/assets/icons/MinusSquareIcon.svg +4 -0
- package/dist/assets/icons/ModelsIcon.svg +10 -0
- package/dist/assets/icons/MonotoneLineIcon.svg +3 -0
- package/dist/assets/icons/MoonIcon.svg +3 -0
- package/dist/assets/icons/NeonProjectIcon.svg +4 -0
- package/dist/assets/icons/NewChatIcon.svg +4 -0
- package/dist/assets/icons/NewTabIcon.svg +4 -0
- package/dist/assets/icons/NewWindowIcon.svg +4 -0
- package/dist/assets/icons/NoCaseIcon.svg +4 -0
- package/dist/assets/icons/NoIcon.svg +3 -0
- package/dist/assets/icons/NotebookIcon.svg +3 -0
- package/dist/assets/icons/NotebookPipelineIcon.svg +4 -0
- package/dist/assets/icons/NotificationIcon.svg +3 -0
- package/dist/assets/icons/NotificationOffIcon.svg +3 -0
- package/dist/assets/icons/NumberFormatIcon.svg +5 -0
- package/dist/assets/icons/NumbersIcon.svg +5 -0
- package/dist/assets/icons/OfficeIcon.svg +6 -0
- package/dist/assets/icons/OntologyIcon.svg +5 -0
- package/dist/assets/icons/OperatorIcon.svg +4 -0
- package/dist/assets/icons/OverflowHorizontalIcon.svg +3 -0
- package/dist/assets/icons/OverflowIcon.svg +5 -0
- package/dist/assets/icons/PageBottomIcon.svg +3 -0
- package/dist/assets/icons/PageFirstIcon.svg +3 -0
- package/dist/assets/icons/PageIcon.svg +6 -0
- package/dist/assets/icons/PageLastIcon.svg +3 -0
- package/dist/assets/icons/PageTopIcon.svg +3 -0
- package/dist/assets/icons/PanelDockedIcon.svg +3 -0
- package/dist/assets/icons/PanelFloatingIcon.svg +3 -0
- package/dist/assets/icons/PaperclipIcon.svg +3 -0
- package/dist/assets/icons/PassFailChecklistIcon.svg +7 -0
- package/dist/assets/icons/PauseIcon.svg +3 -0
- package/dist/assets/icons/PencilFillIcon.svg +3 -0
- package/dist/assets/icons/PencilIcon.svg +3 -0
- package/dist/assets/icons/PencilSparkleIcon.svg +5 -0
- package/dist/assets/icons/PieChartIcon.svg +4 -0
- package/dist/assets/icons/PinCancelIcon.svg +4 -0
- package/dist/assets/icons/PinFillIcon.svg +3 -0
- package/dist/assets/icons/PinIcon.svg +3 -0
- package/dist/assets/icons/PipelineCodeIcon.svg +5 -0
- package/dist/assets/icons/PipelineCubeIcon.svg +4 -0
- package/dist/assets/icons/PipelineIcon.svg +3 -0
- package/dist/assets/icons/PivotOperatorIcon.svg +4 -0
- package/dist/assets/icons/PlayCircleFillIcon.svg +3 -0
- package/dist/assets/icons/PlayCircleIcon.svg +4 -0
- package/dist/assets/icons/PlayDoubleIcon.svg +4 -0
- package/dist/assets/icons/PlayIcon.svg +3 -0
- package/dist/assets/icons/PlayMultipleIcon.svg +3 -0
- package/dist/assets/icons/PlugIcon.svg +4 -0
- package/dist/assets/icons/PlusCircleFillIcon.svg +3 -0
- package/dist/assets/icons/PlusCircleIcon.svg +4 -0
- package/dist/assets/icons/PlusCircleSmallIcon.svg +4 -0
- package/dist/assets/icons/PlusIcon.svg +3 -0
- package/dist/assets/icons/PlusMinusSquareIcon.svg +5 -0
- package/dist/assets/icons/PlusSquareIcon.svg +4 -0
- package/dist/assets/icons/PositionBottomIcon.svg +4 -0
- package/dist/assets/icons/PositionLeftIcon.svg +4 -0
- package/dist/assets/icons/PositionRightIcon.svg +4 -0
- package/dist/assets/icons/PositionTopIcon.svg +4 -0
- package/dist/assets/icons/PullRequestIcon.svg +4 -0
- package/dist/assets/icons/PuzzleIcon.svg +3 -0
- package/dist/assets/icons/QueryEditorIcon.svg +5 -0
- package/dist/assets/icons/QueryIcon.svg +12 -0
- package/dist/assets/icons/QuestionMarkFillIcon.svg +3 -0
- package/dist/assets/icons/QuestionMarkIcon.svg +5 -0
- package/dist/assets/icons/RadioIcon.svg +3 -0
- package/dist/assets/icons/ReaderModeIcon.svg +6 -0
- package/dist/assets/icons/RedoIcon.svg +10 -0
- package/dist/assets/icons/RefreshIcon.svg +3 -0
- package/dist/assets/icons/RefreshPlayIcon.svg +4 -0
- package/dist/assets/icons/RefreshXIcon.svg +4 -0
- package/dist/assets/icons/ReplyIcon.svg +8 -0
- package/dist/assets/icons/ResizeIcon.svg +3 -0
- package/dist/assets/icons/RichTextIcon.svg +8 -0
- package/dist/assets/icons/RobotIcon.svg +3 -0
- package/dist/assets/icons/RocketIcon.svg +4 -0
- package/dist/assets/icons/RowsIcon.svg +3 -0
- package/dist/assets/icons/RunIcon.svg +3 -0
- package/dist/assets/icons/RunningIcon.svg +10 -0
- package/dist/assets/icons/SQLIcon.svg +6 -0
- package/dist/assets/icons/SaveClockIcon.svg +5 -0
- package/dist/assets/icons/SaveIcon.svg +4 -0
- package/dist/assets/icons/SchemaIcon.svg +3 -0
- package/dist/assets/icons/SchoolIcon.svg +3 -0
- package/dist/assets/icons/SearchDataIcon.svg +6 -0
- package/dist/assets/icons/SearchIcon.svg +10 -0
- package/dist/assets/icons/SendIcon.svg +3 -0
- package/dist/assets/icons/ShareIcon.svg +4 -0
- package/dist/assets/icons/ShareNodesIcon.svg +3 -0
- package/dist/assets/icons/ShieldCheckIcon.svg +3 -0
- package/dist/assets/icons/ShieldIcon.svg +3 -0
- package/dist/assets/icons/ShieldOffIcon.svg +4 -0
- package/dist/assets/icons/ShortcutIcon.svg +4 -0
- package/dist/assets/icons/SidebarAutoIcon.svg +5 -0
- package/dist/assets/icons/SidebarClosedIcon.svg +4 -0
- package/dist/assets/icons/SidebarCollapseIcon.svg +4 -0
- package/dist/assets/icons/SidebarExpandIcon.svg +4 -0
- package/dist/assets/icons/SidebarIcon.svg +3 -0
- package/dist/assets/icons/SidebarOpenIcon.svg +3 -0
- package/dist/assets/icons/SidebarSyncIcon.svg +4 -0
- package/dist/assets/icons/SlashSquareIcon.svg +4 -0
- package/dist/assets/icons/SlidersIcon.svg +4 -0
- package/dist/assets/icons/SlidesIcon.svg +4 -0
- package/dist/assets/icons/SnippetIcon.svg +4 -0
- package/dist/assets/icons/SortAscendingIcon.svg +6 -0
- package/dist/assets/icons/SortCustomHorizontalIcon.svg +4 -0
- package/dist/assets/icons/SortCustomVerticalIcon.svg +4 -0
- package/dist/assets/icons/SortDescendingIcon.svg +3 -0
- package/dist/assets/icons/SortHorizontalAscendingIcon.svg +3 -0
- package/dist/assets/icons/SortHorizontalDescendingIcon.svg +3 -0
- package/dist/assets/icons/SortLetterHorizontalAscendingIcon.svg +12 -0
- package/dist/assets/icons/SortLetterHorizontalDescendingIcon.svg +12 -0
- package/dist/assets/icons/SortLetterUnsortedIcon.svg +5 -0
- package/dist/assets/icons/SortLetterVerticalAscendingIcon.svg +12 -0
- package/dist/assets/icons/SortLetterVerticalDescendingIcon.svg +12 -0
- package/dist/assets/icons/SortUnsortedIcon.svg +6 -0
- package/dist/assets/icons/SparkleDoubleFillIcon.svg +4 -0
- package/dist/assets/icons/SparkleDoubleIcon.svg +5 -0
- package/dist/assets/icons/SparkleFillIcon.svg +3 -0
- package/dist/assets/icons/SparkleIcon.svg +3 -0
- package/dist/assets/icons/SparkleRectangleIcon.svg +3 -0
- package/dist/assets/icons/SpeechBubbleIcon.svg +6 -0
- package/dist/assets/icons/SpeechBubblePlusIcon.svg +4 -0
- package/dist/assets/icons/SpeechBubbleQuestionMarkFillIcon.svg +3 -0
- package/dist/assets/icons/SpeechBubbleQuestionMarkIcon.svg +3 -0
- package/dist/assets/icons/SpeechBubbleStarIcon.svg +4 -0
- package/dist/assets/icons/SpeedometerIcon.svg +4 -0
- package/dist/assets/icons/StarFillIcon.svg +3 -0
- package/dist/assets/icons/StarIcon.svg +3 -0
- package/dist/assets/icons/StepAfterLineIcon.svg +3 -0
- package/dist/assets/icons/StepBeforeLineIcon.svg +3 -0
- package/dist/assets/icons/StopCircleFillIcon.svg +3 -0
- package/dist/assets/icons/StopCircleIcon.svg +3 -0
- package/dist/assets/icons/StopIcon.svg +3 -0
- package/dist/assets/icons/StoredProcedureIcon.svg +7 -0
- package/dist/assets/icons/StorefrontIcon.svg +3 -0
- package/dist/assets/icons/StreamIcon.svg +3 -0
- package/dist/assets/icons/StrikeThroughIcon.svg +4 -0
- package/dist/assets/icons/SunIcon.svg +11 -0
- package/dist/assets/icons/SyncIcon.svg +4 -0
- package/dist/assets/icons/SyncSmallIcon.svg +4 -0
- package/dist/assets/icons/SyncToFileIcon.svg +4 -0
- package/dist/assets/icons/TableAsteriskIcon.svg +4 -0
- package/dist/assets/icons/TableClockIcon.svg +4 -0
- package/dist/assets/icons/TableCombineIcon.svg +5 -0
- package/dist/assets/icons/TableGlassesIcon.svg +4 -0
- package/dist/assets/icons/TableGlobeIcon.svg +4 -0
- package/dist/assets/icons/TableIcon.svg +3 -0
- package/dist/assets/icons/TableLightningIcon.svg +4 -0
- package/dist/assets/icons/TableMeasureIcon.svg +4 -0
- package/dist/assets/icons/TableModelIcon.svg +4 -0
- package/dist/assets/icons/TableReportIcon.svg +4 -0
- package/dist/assets/icons/TableStreamIcon.svg +5 -0
- package/dist/assets/icons/TableVectorIcon.svg +10 -0
- package/dist/assets/icons/TableViewIcon.svg +11 -0
- package/dist/assets/icons/TagColumnIcon.svg +5 -0
- package/dist/assets/icons/TagIcon.svg +4 -0
- package/dist/assets/icons/TagTableIcon.svg +5 -0
- package/dist/assets/icons/TargetIcon.svg +7 -0
- package/dist/assets/icons/TerminalIcon.svg +5 -0
- package/dist/assets/icons/TextBoxIcon.svg +3 -0
- package/dist/assets/icons/TextColorIcon.svg +3 -0
- package/dist/assets/icons/TextIcon.svg +3 -0
- package/dist/assets/icons/TextJustifyIcon.svg +7 -0
- package/dist/assets/icons/TextUnderlineIcon.svg +5 -0
- package/dist/assets/icons/ThreeDotsIcon.svg +3 -0
- package/dist/assets/icons/ThumbsDownFilledIcon.svg +5 -0
- package/dist/assets/icons/ThumbsDownIcon.svg +10 -0
- package/dist/assets/icons/ThumbsUpFilledIcon.svg +3 -0
- package/dist/assets/icons/ThumbsUpIcon.svg +10 -0
- package/dist/assets/icons/TokenIcon.svg +8 -0
- package/dist/assets/icons/TrashIcon.svg +3 -0
- package/dist/assets/icons/TreeIcon.svg +3 -0
- package/dist/assets/icons/TrendingFillIcon.svg +3 -0
- package/dist/assets/icons/TrendingIcon.svg +3 -0
- package/dist/assets/icons/TriangleIcon.svg +3 -0
- package/dist/assets/icons/UnderlineIcon.svg +4 -0
- package/dist/assets/icons/UndoIcon.svg +10 -0
- package/dist/assets/icons/UploadIcon.svg +4 -0
- package/dist/assets/icons/UppercaseIcon.svg +4 -0
- package/dist/assets/icons/UsbIcon.svg +3 -0
- package/dist/assets/icons/UserBadgeIcon.svg +4 -0
- package/dist/assets/icons/UserCircleIcon.svg +4 -0
- package/dist/assets/icons/UserGroupFillIcon.svg +3 -0
- package/dist/assets/icons/UserGroupIcon.svg +5 -0
- package/dist/assets/icons/UserIcon.svg +4 -0
- package/dist/assets/icons/UserKeyIconIcon.svg +5 -0
- package/dist/assets/icons/UserShieldIcon.svg +4 -0
- package/dist/assets/icons/UserSparkleIcon.svg +5 -0
- package/dist/assets/icons/UserTeamIcon.svg +8 -0
- package/dist/assets/icons/VisibleFillIcon.svg +10 -0
- package/dist/assets/icons/VisibleIcon.svg +11 -0
- package/dist/assets/icons/VisibleOffIcon.svg +12 -0
- package/dist/assets/icons/VoiceModeIcon.svg +7 -0
- package/dist/assets/icons/WarningFillIcon.svg +3 -0
- package/dist/assets/icons/WarningIcon.svg +5 -0
- package/dist/assets/icons/WorkflowCodeIcon.svg +5 -0
- package/dist/assets/icons/WorkflowCubeIcon.svg +5 -0
- package/dist/assets/icons/WorkflowsIcon.svg +3 -0
- package/dist/assets/icons/WorkspacesIcon.svg +4 -0
- package/dist/assets/icons/WrenchIcon.svg +3 -0
- package/dist/assets/icons/WrenchSparkleIcon.svg +5 -0
- package/dist/assets/icons/XCircleFillIcon.svg +3 -0
- package/dist/assets/icons/XCircleIcon.svg +4 -0
- package/dist/assets/icons/ZAHorizontalIcon.svg +4 -0
- package/dist/assets/icons/ZAVerticalIcon.svg +4 -0
- package/dist/assets/icons/ZeroOpsIcon.svg +3 -0
- package/dist/assets/icons/ZeroOpsOutlineIcon.svg +3 -0
- package/dist/assets/icons/ZoomInIcon.svg +4 -0
- package/dist/assets/icons/ZoomMarqueeSelection.svg +8 -0
- package/dist/assets/icons/ZoomOutIcon.svg +4 -0
- package/dist/assets/icons/ZoomToFitIcon.svg +6 -0
- package/dist/design-system/Avatar/tokens.css +28 -0
- package/dist/design-system/Banner/tokens.css +0 -0
- package/dist/design-system/Breadcrumb/NativeBreadcrumb.css +43 -0
- package/dist/design-system/Breadcrumb/breadcrumb.less +8 -0
- package/dist/design-system/Breadcrumb/tokens.css +13 -0
- package/dist/design-system/Button/NativeButton.css +370 -0
- package/dist/design-system/Button/tokens.css +56 -0
- package/dist/design-system/Card/tokens.css +29 -0
- package/dist/design-system/Checkbox/NativeCheckbox.css +258 -0
- package/dist/design-system/Checkbox/tokens.css +37 -0
- package/dist/design-system/ContextMenu/tokens.css +18 -0
- package/dist/design-system/DialogCombobox/tokens.css +78 -0
- package/dist/design-system/Drawer/tokens.css +30 -0
- package/dist/design-system/DropdownMenu/tokens.css +23 -0
- package/dist/design-system/Empty/tokens.css +11 -0
- package/dist/design-system/Form/tokens.css +0 -0
- package/dist/design-system/FormMessage/tokens.css +0 -0
- package/dist/design-system/FormV2/tokens.css +0 -0
- package/dist/design-system/Header/tokens.css +10 -0
- package/dist/design-system/Hint/tokens.css +0 -0
- package/dist/design-system/HoverCard/tokens.css +26 -0
- package/dist/design-system/Icon/NativeIcon.css +97 -0
- package/dist/design-system/Icon/generator/CalendarRangeIcon.png +0 -0
- package/dist/design-system/Icon/tokens.css +12 -0
- package/dist/design-system/Input/NativeInput.css +111 -0
- package/dist/design-system/Input/group/NativeGroup.css +51 -0
- package/dist/design-system/Input/textarea/NativeTextArea.css +27 -0
- package/dist/design-system/Label/tokens.css +0 -0
- package/dist/design-system/LegacyNotification/notification.less +45 -0
- package/dist/design-system/Listbox/tokens.css +15 -0
- package/dist/design-system/Modal/tokens.css +42 -0
- package/dist/design-system/NavigationMenu/tokens.css +23 -0
- package/dist/design-system/Notification/tokens.css +35 -0
- package/dist/design-system/Overflow/tokens.css +11 -0
- package/dist/design-system/PageWrapper/tokens.css +14 -0
- package/dist/design-system/PillControl/tokens.css +73 -0
- package/dist/design-system/Popover/tokens.css +29 -0
- package/dist/design-system/PreviewCard/tokens.css +46 -0
- package/dist/design-system/Progress/tokens.css +17 -0
- package/dist/design-system/Radio/NativeRadio.css +323 -0
- package/dist/design-system/Radio/tokens.css +37 -0
- package/dist/design-system/ResourceStatusIndicator/tokens.css +5 -0
- package/dist/design-system/Select/tokens.css +0 -0
- package/dist/design-system/Sidebar/tokens.css +36 -0
- package/dist/design-system/Skeleton/tokens.css +0 -0
- package/dist/design-system/Slider/tokens.css +22 -0
- package/dist/design-system/SnackBar/tokens.css +37 -0
- package/dist/design-system/Spacer/tokens.css +11 -0
- package/dist/design-system/Spinner/tokens.css +0 -0
- package/dist/design-system/Stepper/tokens.css +0 -0
- package/dist/design-system/Switch/NativeSwitch.css +172 -0
- package/dist/design-system/Switch/switch.less +93 -0
- package/dist/design-system/Switch/tokens.css +38 -0
- package/dist/design-system/Tabs/tokens.css +52 -0
- package/dist/design-system/Tag/tokens.css +0 -0
- package/dist/design-system/ToggleButton/tokens.css +36 -0
- package/dist/design-system/Toolbar/tokens.css +23 -0
- package/dist/design-system/Tooltip/tokens.css +44 -0
- package/dist/design-system/_shared_/Menu/tokens.css +42 -0
- package/dist/design-system/general-overrides.less +33 -0
- package/dist/design-system/utils/debug.less +4 -0
- package/dist/design-tokens/family-tokens/actions-tokens.css +29 -0
- package/dist/design-tokens/family-tokens/cards-tokens.css +10 -0
- package/dist/design-tokens/family-tokens/inputs-tokens.css +43 -0
- package/dist/design-tokens/family-tokens/lists-tokens.css +26 -0
- package/dist/design-tokens/family-tokens/popups-tokens.css +13 -0
- package/dist/design-tokens/family-tokens/selection-toggles-tokens.css +34 -0
- package/dist/design-tokens/system-tokens/colors-dark-tokens.css +103 -0
- package/dist/design-tokens/system-tokens/colors-light-tokens.css +103 -0
- package/dist/design-tokens/system-tokens/density-tokens.css +28 -0
- package/dist/design-tokens/system-tokens/elevation-tokens.css +6 -0
- package/dist/design-tokens/system-tokens/focus-ring-tokens.css +5 -0
- package/dist/design-tokens/system-tokens/shape-tokens.css +8 -0
- package/dist/design-tokens/system-tokens/typography-tokens.css +24 -0
- package/dist/dubois-colors.less +2 -0
- package/dist/icon-metadata.json +8 -0
- package/dist/{index-CUzS-Vjx.js → index-CKurXbfF.js} +339 -204
- package/dist/index-CKurXbfF.js.map +1 -0
- package/dist/index-dark.css +578 -51
- package/dist/index-dark.mitigated.css +578 -51
- package/dist/index.css +819 -51
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mitigated.css +819 -51
- package/dist/mcp.mjs +23232 -0
- package/dist/mortar/action.css +93 -0
- package/dist/mortar/input.css +86 -0
- package/dist/mortar/layout.css +57 -0
- package/dist/mortar/typography.css +72 -0
- package/dist/patterns.js +2 -1
- package/dist/patterns.js.map +1 -1
- package/dist/rollup/noop.less +0 -0
- package/dist/test-utils/rtl.js +2 -2
- package/dist/test-utils/rtl.js.map +1 -1
- package/dist/tokens-groups/system-tokens.css +139 -0
- package/dist/tokens-groups/system-tokens.dark.css +126 -0
- package/dist-types/design-system/Breadcrumb/AntDBreadcrumbInternal.d.ts +5 -0
- package/dist-types/design-system/Breadcrumb/Breadcrumb.d.ts +25 -7
- package/dist-types/design-system/Breadcrumb/NativeBreadcrumb.d.ts +5 -0
- package/dist-types/design-system/Button/getBtnClassName.d.ts +1 -1
- package/dist-types/design-system/Card/Card.d.ts +1 -1
- package/dist-types/design-system/DatePicker/DatePicker.d.ts +1 -1
- package/dist-types/design-system/DatePicker/LegacyDatePicker.d.ts +1 -1
- package/dist-types/design-system/DesignSystemProvider/DesignSystemProvider.d.ts +11 -2
- package/dist-types/design-system/DesignSystemProvider/DesignTokenScopeWithEmotionTheme.d.ts +3 -1
- package/dist-types/design-system/DropdownMenu/HintColumn.d.ts +2 -3
- package/dist-types/design-system/Form/Form.d.ts +1 -1
- package/dist-types/design-system/FormV2/index.d.ts +1 -0
- package/dist-types/design-system/Grid/NativeCol.d.ts +1 -1
- package/dist-types/design-system/Grid/NativeRow.d.ts +3 -3
- package/dist-types/design-system/Grid/rowConstants.d.ts +1 -1
- package/dist-types/design-system/Grid/types.d.ts +2 -2
- package/dist-types/design-system/Header/Header.d.ts +1 -1
- package/dist-types/design-system/Icon/LegacyAntDIcon.d.ts +1 -1
- package/dist-types/design-system/Icon/__generated/icons/ChatNewTabIcon.d.ts +4 -0
- package/dist-types/design-system/Icon/__generated/icons/ChatSpinnerIcon.d.ts +4 -0
- package/dist-types/design-system/Icon/__generated/icons/index.d.ts +2 -0
- package/dist-types/design-system/Input/AntDInput.d.ts +26 -0
- package/dist-types/design-system/Input/Input.d.ts +7 -25
- package/dist-types/design-system/Input/NativeInput.d.ts +4 -0
- package/dist-types/design-system/Input/force-mode.d.ts +13 -0
- package/dist-types/design-system/Input/group/AntDGroup.d.ts +2 -0
- package/dist-types/design-system/Input/group/Group.d.ts +28 -0
- package/dist-types/design-system/Input/group/NativeGroup.d.ts +2 -0
- package/dist-types/design-system/Input/index-defs.d.ts +3 -3
- package/dist-types/design-system/Input/index.d.ts +7 -2
- package/dist-types/design-system/Input/input-container-styling.d.ts +13 -0
- package/dist-types/design-system/Input/input-focus.d.ts +8 -0
- package/dist-types/design-system/Input/input-props.d.ts +37 -0
- package/dist-types/design-system/Input/input-refs.d.ts +22 -0
- package/dist-types/design-system/Input/password/AntDPassword.d.ts +4 -0
- package/dist-types/design-system/Input/password/NativePassword.d.ts +4 -0
- package/dist-types/design-system/Input/password/Password.d.ts +15 -0
- package/dist-types/design-system/Input/testing/keyboard-input.d.ts +9 -0
- package/dist-types/design-system/Input/textarea/AntDTextArea.d.ts +4 -0
- package/dist-types/design-system/Input/textarea/NativeTextArea.d.ts +4 -0
- package/dist-types/design-system/Input/textarea/TextArea.d.ts +27 -0
- package/dist-types/design-system/Input/textarea/useTextAreaAutoSize.d.ts +22 -0
- package/dist-types/design-system/Input/useInputClearHandler.d.ts +20 -0
- package/dist-types/design-system/Input/useTextFieldAnalytics.d.ts +23 -0
- package/dist-types/design-system/Input/useTextFieldFocusHandler.d.ts +9 -0
- package/dist-types/design-system/Input/useTextFieldKeyHandlers.d.ts +31 -0
- package/dist-types/design-system/Skeleton/GenericSkeleton.d.ts +1 -2
- package/dist-types/design-system/SplitButton/SplitButton.d.ts +1 -1
- package/dist-types/design-system/TypeaheadComboboxV2/hooks/useComboboxState.d.ts +18 -1
- package/dist-types/design-system/TypeaheadComboboxV2/hooks/useComboboxStateProps.d.ts +2 -1
- package/dist-types/design-system/TypeaheadComboboxV2/providers/TypeaheadComboboxContext.d.ts +4 -0
- package/dist-types/design-system/utils/security/url-safety.d.ts +2 -5
- package/dist-types/maybe-mitigate-expensive-selectors/mitigateExpensiveSelectorsMonacoPkgrPlugins.d.ts +1 -1
- package/dist-types/mcp/server.d.ts +3 -0
- package/dist-types/test-utils/rtl/switch.d.ts +1 -1
- package/dist-types/test-utils/rtl/table.d.ts +1 -1
- package/dist-types/theme/_generated/ValidSemanticColors.d.ts +1 -0
- package/package.json +27 -6
- package/processes/process-runner.js +19 -0
- package/processes/spawn-process-runner.js +67 -0
- package/scaffold-agents.md +3 -0
- package/scaffold_tool/src/dependency-installer.js +52 -0
- package/scaffold_tool/src/file-system.js +2 -0
- package/scaffold_tool/src/get-progress-reporter.js +10 -0
- package/scaffold_tool/src/listr-progress-reporter.js +93 -0
- package/scaffold_tool/src/local-main.js +50 -0
- package/scaffold_tool/src/local-package-builder.js +101 -0
- package/scaffold_tool/src/main.js +47 -0
- package/scaffold_tool/src/node-file-system.js +33 -0
- package/scaffold_tool/src/package-manifest.js +40 -0
- package/scaffold_tool/src/progress-reporter.js +2 -0
- package/scaffold_tool/src/project-configurator.js +139 -0
- package/scaffold_tool/src/project-inspector.js +74 -0
- package/scaffold_tool/src/project-templates.js +191 -0
- package/scaffold_tool/src/readline-terminal.js +23 -0
- package/scaffold_tool/src/scaffold-config.js +18 -0
- package/scaffold_tool/src/scaffold-options.js +99 -0
- package/scaffold_tool/src/scaffold-theme.js +33 -0
- package/scaffold_tool/src/scaffold-tool.js +127 -0
- package/scaffold_tool/src/terminal-progress-reporter.js +39 -0
- package/scaffold_tool/src/terminal.js +2 -0
- package/scaffold_tool/src/theme-picker-templates.js +191 -0
- package/scaffold_tool/src/theme-templates.js +157 -0
- package/scaffold_tool/src/themes/base.js +143 -0
- package/scaffold_tool/src/themes/genie-one.js +36 -0
- package/scaffold_tool/src/themes/shadcn.js +135 -0
- package/dist/WizardStepContentWrapper-DfErft8z.js.map +0 -1
- package/dist/index-CUzS-Vjx.js.map +0 -1
- package/dist-types/design-system/Input/Group.d.ts +0 -2
- package/dist-types/design-system/Input/Password.d.ts +0 -3
- package/dist-types/design-system/Input/TextArea.d.ts +0 -4
- package/dist-types/design-system/Input/common.d.ts +0 -25
- package/setup.mjs +0 -586
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The "action" family of components includes buttons and button-like controls.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/* ⚠️ Not yet used, staged for a future button-like component. */
|
|
6
|
+
|
|
7
|
+
.db-action {
|
|
8
|
+
block-size: var(--db-action-size);
|
|
9
|
+
padding-inline: var(--db-action-padding);
|
|
10
|
+
|
|
11
|
+
border: 1px solid var(--db-action-border);
|
|
12
|
+
border-radius: var(--db-action-border-radius);
|
|
13
|
+
|
|
14
|
+
background-color: var(--db-action-surface);
|
|
15
|
+
color: var(--db-action-text);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.db-action:hover {
|
|
19
|
+
background-color: var(--db-action-surface-hover);
|
|
20
|
+
color: var(--db-action-text-hover);
|
|
21
|
+
border-color: var(--db-action-border-hover);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.db-action:active {
|
|
25
|
+
background-color: var(--db-action-surface-active);
|
|
26
|
+
color: var(--db-action-text-active);
|
|
27
|
+
border-color: var(--db-action-border-active);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.db-action:disabled {
|
|
31
|
+
background-color: var(--db-action-surface-disabled);
|
|
32
|
+
color: var(--db-action-text-disabled);
|
|
33
|
+
border-color: var(--db-action-border-disabled);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.db-action-primary {
|
|
37
|
+
--db-action-surface: var(--db-accent-surface);
|
|
38
|
+
--db-action-text: var(--db-text-on-accent-surface);
|
|
39
|
+
--db-action-border: var(--db-accent-border);
|
|
40
|
+
|
|
41
|
+
--db-action-surface-hover: var(--db-accent-surface-hover);
|
|
42
|
+
--db-action-surface-active: var(--db-accent-surface-active);
|
|
43
|
+
--db-action-surface-selected: var(--db-accent-surface-selected);
|
|
44
|
+
--db-action-surface-disabled: var(--db-surface-disabled);
|
|
45
|
+
|
|
46
|
+
--db-action-text-hover: var(--db-text-on-accent-surface);
|
|
47
|
+
--db-action-text-active: var(--db-text-on-accent-surface);
|
|
48
|
+
--db-action-text-disabled: var(--db-text-disabled);
|
|
49
|
+
|
|
50
|
+
--db-action-border-hover: var(--db-accent-border-hover);
|
|
51
|
+
--db-action-border-active: var(--db-accent-border-hover);
|
|
52
|
+
--db-action-border-disabled: var(--db-surface-disabled);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.db-action-danger {
|
|
56
|
+
--db-action-surface: var(--db-negative-surface);
|
|
57
|
+
--db-action-text: var(--db-text-on-negative-surface);
|
|
58
|
+
--db-action-border: var(--db-negative-border);
|
|
59
|
+
|
|
60
|
+
--db-action-surface-hover: var(--db-negative-surface-hover);
|
|
61
|
+
--db-action-surface-active: var(--db-negative-surface-active);
|
|
62
|
+
--db-action-surface-selected: var(--db-negative-surface-selected);
|
|
63
|
+
--db-action-surface-disabled: var(--db-surface-disabled);
|
|
64
|
+
|
|
65
|
+
--db-action-text-hover: var(--db-text-on-negative-surface);
|
|
66
|
+
--db-action-text-active: var(--db-text-on-negative-surface);
|
|
67
|
+
--db-action-text-disabled: var(--db-text-disabled);
|
|
68
|
+
|
|
69
|
+
--db-action-border-hover: var(--db-negative-border-hover);
|
|
70
|
+
--db-action-border-active: var(--db-negative-border-hover);
|
|
71
|
+
--db-action-border-disabled: var(--db-surface-disabled);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Tertiary: low-emphasis, borderless. Transparent surface and border reveal a subtle neutral
|
|
75
|
+
* background only on hover/active. */
|
|
76
|
+
.db-action-tertiary {
|
|
77
|
+
--db-action-surface: transparent;
|
|
78
|
+
--db-action-text: var(--db-text-base);
|
|
79
|
+
--db-action-border: transparent;
|
|
80
|
+
|
|
81
|
+
--db-action-surface-hover: var(--db-surface-hover);
|
|
82
|
+
--db-action-surface-active: var(--db-surface-active);
|
|
83
|
+
--db-action-surface-selected: var(--db-surface-selected);
|
|
84
|
+
--db-action-surface-disabled: transparent;
|
|
85
|
+
|
|
86
|
+
--db-action-text-hover: var(--db-text-base);
|
|
87
|
+
--db-action-text-active: var(--db-text-base);
|
|
88
|
+
--db-action-text-disabled: var(--db-text-disabled);
|
|
89
|
+
|
|
90
|
+
--db-action-border-hover: transparent;
|
|
91
|
+
--db-action-border-active: transparent;
|
|
92
|
+
--db-action-border-disabled: transparent;
|
|
93
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The shared surface for the "input" family of controls: the text Input and input-like controls
|
|
3
|
+
such as DatePicker and TypeaheadCombobox. A component applies `.db-input` to whichever element
|
|
4
|
+
carries the border (the <input> itself, or a container wrapping it) and layers its own internal
|
|
5
|
+
composition on top.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.db-input {
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
inline-size: 100%;
|
|
11
|
+
min-block-size: var(--db-input-height);
|
|
12
|
+
padding-block: var(--db-input-spacing-vertical);
|
|
13
|
+
padding-inline: var(--db-input-spacing-horizontal);
|
|
14
|
+
|
|
15
|
+
border: var(--db-input-border-width) solid var(--db-input-border);
|
|
16
|
+
border-radius: var(--db-input-border-radius);
|
|
17
|
+
|
|
18
|
+
background-color: var(--db-input-surface);
|
|
19
|
+
color: var(--db-input-text);
|
|
20
|
+
|
|
21
|
+
font-size: var(--db-input-font-size);
|
|
22
|
+
line-height: var(--db-input-line-height);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.db-input::placeholder {
|
|
26
|
+
color: var(--db-input-text-placeholder);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.db-input:hover {
|
|
30
|
+
border-color: var(--db-input-border-hover);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Focus swaps the border for an inset ring so the box does not shift by a pixel. `:focus-within`
|
|
34
|
+
covers composite controls, where focus lands on an inner element rather than the bordered box. */
|
|
35
|
+
.db-input:focus,
|
|
36
|
+
.db-input:focus-within {
|
|
37
|
+
border-color: transparent;
|
|
38
|
+
outline: var(--db-focus-ring-width) solid var(--db-input-border-focus);
|
|
39
|
+
outline-offset: calc(-1 * var(--db-focus-ring-width));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.db-input:disabled {
|
|
43
|
+
background-color: var(--db-input-surface-disabled);
|
|
44
|
+
color: var(--db-input-text-disabled);
|
|
45
|
+
border-color: var(--db-input-border-disabled);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Locked: read-only, kept legible on a subtle fill (unlike the greyed-out disabled state). */
|
|
49
|
+
.db-input-locked {
|
|
50
|
+
background-color: var(--db-input-surface-locked);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Small: a fixed shorter height with tighter horizontal padding. */
|
|
54
|
+
.db-input-small {
|
|
55
|
+
min-block-size: auto;
|
|
56
|
+
block-size: var(--db-input-height-small);
|
|
57
|
+
padding-block: var(--db-input-spacing-vertical-small);
|
|
58
|
+
padding-inline: var(--db-input-spacing-horizontal-small);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Validation state colors the border (and the focus ring) instead of the resting/hover color. */
|
|
62
|
+
.db-input-error,
|
|
63
|
+
.db-input-error:hover {
|
|
64
|
+
border-color: var(--db-input-border-error);
|
|
65
|
+
}
|
|
66
|
+
.db-input-warning,
|
|
67
|
+
.db-input-warning:hover {
|
|
68
|
+
border-color: var(--db-input-border-warning);
|
|
69
|
+
}
|
|
70
|
+
.db-input-success,
|
|
71
|
+
.db-input-success:hover {
|
|
72
|
+
border-color: var(--db-input-border-success);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.db-input-error:focus,
|
|
76
|
+
.db-input-error:focus-within {
|
|
77
|
+
outline-color: var(--db-input-border-error);
|
|
78
|
+
}
|
|
79
|
+
.db-input-warning:focus,
|
|
80
|
+
.db-input-warning:focus-within {
|
|
81
|
+
outline-color: var(--db-input-border-warning);
|
|
82
|
+
}
|
|
83
|
+
.db-input-success:focus,
|
|
84
|
+
.db-input-success:focus-within {
|
|
85
|
+
outline-color: var(--db-input-border-success);
|
|
86
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Vertical "stack" of elements.
|
|
3
|
+
Use this for any layout where items are laid out vertically.
|
|
4
|
+
|
|
5
|
+
<!-- Basic: default gap between each child -->
|
|
6
|
+
<div class="db-stack">
|
|
7
|
+
<h2>Title</h2>
|
|
8
|
+
<p>Body</p>
|
|
9
|
+
<button>Action</button>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<!-- Wider gap for this instance -->
|
|
13
|
+
<div class="db-stack" style="--db-stack-gap: var(--db-spacing-lg)">…</div>
|
|
14
|
+
|
|
15
|
+
<!-- Don't stretch children to full width (e.g. left-aligned buttons) -->
|
|
16
|
+
<div class="db-stack" style="--db-stack-align: flex-start">…</div>
|
|
17
|
+
*/
|
|
18
|
+
.db-stack {
|
|
19
|
+
/* These variables act as the *parameters* for the stack instance. */
|
|
20
|
+
--db-stack-gap: var(--db-space-4);
|
|
21
|
+
--db-stack-align: stretch;
|
|
22
|
+
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-direction: column;
|
|
25
|
+
align-items: var(--db-stack-align);
|
|
26
|
+
gap: var(--db-stack-gap);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
Responsive, horizontal "cluster" of elements.
|
|
31
|
+
Use this for any layout where items are laid out horizontally and should wrap on smaller viewport sizes.
|
|
32
|
+
|
|
33
|
+
<!-- Basic: items wrap as needed -->
|
|
34
|
+
<div class="db-cluster">
|
|
35
|
+
<span>one</span>
|
|
36
|
+
<span>two</span>
|
|
37
|
+
<span>three</span>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<!-- Push children apart (e.g. title left, actions right) -->
|
|
41
|
+
<div class="db-cluster" style="--db-cluster-justify: space-between">…</div>
|
|
42
|
+
|
|
43
|
+
<!-- Looser gap for this instance -->
|
|
44
|
+
<div class="db-cluster" style="--db-cluster-gap: var(--db-spacing-sm)">…</div>
|
|
45
|
+
*/
|
|
46
|
+
.db-cluster {
|
|
47
|
+
/* These variables act as the *parameters* for the cluster instance. */
|
|
48
|
+
--db-cluster-gap: var(--db-space-2);
|
|
49
|
+
--db-cluster-align: center;
|
|
50
|
+
--db-cluster-justify: flex-start;
|
|
51
|
+
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-wrap: wrap;
|
|
54
|
+
align-items: var(--db-cluster-align);
|
|
55
|
+
justify-content: var(--db-cluster-justify);
|
|
56
|
+
gap: var(--db-cluster-gap);
|
|
57
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/* ⚠️ Not yet used, staged for future use. */
|
|
2
|
+
|
|
3
|
+
.db-eyebrow {
|
|
4
|
+
font-size: var(--db-font-size-xs); /* 11 / 16 */
|
|
5
|
+
line-height: calc(var(--db-layout-unit) * 4);
|
|
6
|
+
font-weight: var(--db-font-weight-semibold);
|
|
7
|
+
letter-spacing: 0.04em;
|
|
8
|
+
text-transform: uppercase;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.db-hint {
|
|
12
|
+
font-size: var(--db-font-size-sm); /* 12 / 16 */
|
|
13
|
+
line-height: calc(var(--db-layout-unit) * 4);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.db-label {
|
|
17
|
+
font-size: var(--db-font-size-base); /* 13 / 16 */
|
|
18
|
+
line-height: calc(var(--db-layout-unit) * 4);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.db-body {
|
|
22
|
+
font-size: var(--db-font-size-base); /* 13 / 20 */
|
|
23
|
+
line-height: calc(var(--db-layout-unit) * 5);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.db-code-inline {
|
|
27
|
+
font-family: var(--db-mono-font-family), monospace;
|
|
28
|
+
font-size: var(--db-font-size-base); /* 13 / 20 */
|
|
29
|
+
line-height: calc(var(--db-layout-unit) * 5);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Reading */
|
|
33
|
+
.db-code-block {
|
|
34
|
+
font-family: var(--db-mono-font-family), monospace;
|
|
35
|
+
font-size: var(--db-font-size-md); /* 14 / 22 */
|
|
36
|
+
line-height: calc(var(--db-layout-unit) * 5.5);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.db-paragraph {
|
|
40
|
+
font-size: var(--db-font-size-lg); /* 15 / 22 */
|
|
41
|
+
line-height: calc(var(--db-layout-unit) * 5.5);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Display */
|
|
45
|
+
.db-title-4 {
|
|
46
|
+
font-size: var(--db-font-size-xl); /* 16 / 24 */
|
|
47
|
+
line-height: calc(var(--db-layout-unit) * 6);
|
|
48
|
+
font-weight: var(--db-font-weight-semibold);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.db-title-3 {
|
|
52
|
+
font-size: var(--db-font-size-2xl); /* 20 / 28 */
|
|
53
|
+
line-height: calc(var(--db-layout-unit) * 7);
|
|
54
|
+
font-weight: var(--db-font-weight-semibold);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.db-title-2 {
|
|
58
|
+
font-size: var(--db-font-size-3xl); /* 24 / 32 */
|
|
59
|
+
line-height: calc(var(--db-layout-unit) * 8);
|
|
60
|
+
font-weight: var(--db-font-weight-semibold);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.db-title-1 {
|
|
64
|
+
font-size: var(--db-font-size-4xl); /* 32 / 40 */
|
|
65
|
+
line-height: calc(var(--db-layout-unit) * 10);
|
|
66
|
+
font-weight: var(--db-font-weight-semibold);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Declare font-weight modifiers after levels so that these have, ahem, greater weight. */
|
|
70
|
+
.db-semibold {
|
|
71
|
+
font-weight: var(--db-font-weight-semibold);
|
|
72
|
+
}
|
package/dist/patterns.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { D as DocumentationSidebar, F as FIXED_VERTICAL_STEPPER_WIDTH, M as MAX_VERTICAL_WIZARD_CONTENT_WIDTH, W as Wizard, a as WizardControlled, b as WizardModal, c as WizardStepContentWrapper, d as WizardStepNavigationProvider, u as useWizardCurrentStep, e as useWizardStepNavigation } from './WizardStepContentWrapper-
|
|
1
|
+
export { D as DocumentationSidebar, F as FIXED_VERTICAL_STEPPER_WIDTH, M as MAX_VERTICAL_WIZARD_CONTENT_WIDTH, W as Wizard, a as WizardControlled, b as WizardModal, c as WizardStepContentWrapper, d as WizardStepNavigationProvider, u as useWizardCurrentStep, e as useWizardStepNavigation } from './WizardStepContentWrapper-D_OEwjUE.js';
|
|
2
2
|
import '@emotion/react/jsx-runtime';
|
|
3
3
|
import 'lodash/isUndefined';
|
|
4
4
|
import 'react';
|
|
@@ -7,6 +7,7 @@ import 'antd';
|
|
|
7
7
|
import 'classnames';
|
|
8
8
|
import '@floating-ui/react';
|
|
9
9
|
import 'lodash/uniqueId';
|
|
10
|
+
import '@react-aria/breadcrumbs';
|
|
10
11
|
import 'date-fns';
|
|
11
12
|
import '@radix-ui/react-popover';
|
|
12
13
|
import '@radix-ui/react-dialog';
|
package/dist/patterns.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"patterns.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
File without changes
|
package/dist/test-utils/rtl.js
CHANGED
|
@@ -423,7 +423,7 @@ const isAccordionPanelExpanded = (name, options)=>getAccordionTrigger(name, opti
|
|
|
423
423
|
};
|
|
424
424
|
|
|
425
425
|
/**
|
|
426
|
-
* Reads the checked state of a
|
|
426
|
+
* Reads the checked state of a dbui Switch regardless of the rendering engine.
|
|
427
427
|
*
|
|
428
428
|
* The AntD implementation renders the toggle as a `<button role="switch" aria-checked>`, so the
|
|
429
429
|
* checked state lives in the `aria-checked` attribute. The native implementation renders an
|
|
@@ -475,7 +475,7 @@ function getColumnHeaderIndex(tableElement, columnHeaderName) {
|
|
|
475
475
|
return matchingRows[0];
|
|
476
476
|
}
|
|
477
477
|
/**
|
|
478
|
-
* Converts a
|
|
478
|
+
* Converts a dbui table to a markdown table string. This means that each cell
|
|
479
479
|
* is separated by a pipe (including the edges), the header row is on its own line
|
|
480
480
|
* at the top, each data row is on its own line below, and the header row is separated
|
|
481
481
|
* by a row of dashes from the data rows. This is useful for checking table contents
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rtl.js","sources":["../../src/test-utils/rtl/select.ts","../../src/test-utils/common.ts","../../src/test-utils/rtl/selectEvent.ts","../../src/test-utils/rtl/simpleSelect.utils.ts","../../src/test-utils/rtl/accordion.ts","../../src/test-utils/rtl/switch.ts","../../src/test-utils/rtl/table.ts","../../src/test-utils/rtl/openDropdownMenu.ts"],"sourcesContent":["import { computeAccessibleName } from 'dom-accessibility-api';\n\nimport { queryHelpers, within } from '@databricks/testing-library';\n\nfunction normalizeText(text: string): string {\n return text.replace(/\\s+/g, ' ').trim();\n}\n\n/**\n * Extracts the display label from a combobox — equivalent to the selected\n * option's label.\n */\nexport function getDisplayLabel(combobox: HTMLElement): string {\n return normalizeText(combobox.textContent ?? '');\n}\n\n/**\n * Finds the associated listbox for a combobox.\n *\n * @usage\n *\n * ```tsx\n * const combobox = screen.getByRole('combobox', { name: '…' });\n * await userEvent.click(combobox);\n * const listbox = select.getListbox(combobox);\n * await userEvent.click(within(listbox).getByRole('option', { name: '…' }));\n * ```\n */\nexport function getListbox(combobox: HTMLElement): HTMLElement {\n const id = combobox.getAttribute('aria-controls');\n if (!id) {\n throw queryHelpers.getElementError(\n \"This doesn't appear to be a combobox. Make sure you're querying the right element: `ByRole('combobox', { name: '…' })`\",\n combobox,\n );\n }\n const listbox = combobox.ownerDocument.getElementById(id);\n if (!listbox) {\n throw queryHelpers.getElementError(\n \"Can't find the listbox. Are you sure the select has been opened? `await userEvent.click(combobox)`\",\n combobox.ownerDocument.body,\n );\n }\n return listbox;\n}\n\n/**\n * Returns all options associated with a combobox (requires the select to have\n * been opened).\n */\nexport function getOptions(combobox: HTMLElement): HTMLElement[] {\n const listbox = getListbox(combobox);\n return within(listbox).getAllByRole('option');\n}\n\n/**\n * Returns the accessible name for each option in a combobox.\n */\nexport function getOptionNames(combobox: HTMLElement): string[] {\n const options = getOptions(combobox);\n return options.map((option) => computeAccessibleName(option));\n}\n","const duBoisClassPrefix = 'du-bois-light';\n\n/**\n * Used with the `selectEvent` utils for both Enzyme and RTL.\n */\nexport const selectClasses = {\n clear: `${duBoisClassPrefix}-select-clear`,\n item: `${duBoisClassPrefix}-select-selection-item`,\n list: 'rc-virtual-list',\n open: `${duBoisClassPrefix}-select-open`,\n option: `${duBoisClassPrefix}-select-item-option-content`,\n removeItem: `${duBoisClassPrefix}-select-selection-item-remove`,\n selector: `${duBoisClassPrefix}-select-selector`,\n};\n\nexport interface GetTableRowByCellTextOptions {\n columnHeaderName?: string | RegExp;\n}\n\nexport interface RowIdentifier {\n /** Text in a cell that uniquely identifies a row. */\n cellText: string;\n /** Name of the column to use when searching for `cellText`. */\n columnHeaderName?: string | RegExp;\n}\n\nexport interface TableRows<T> {\n bodyRows: T[];\n headerRow: T;\n}\n\n/**\n * @param columns List of column names\n * @param rows List of rows, where each row is a list of cell texts\n * @returns Markdown formatted string representing the data\n *\n * @example\n * // returns the string:\n * // | Name | Fruit |\n * // | --- | --- |\n * // | Alice | Apple |\n * // | Brady | Banana |\n * createMarkdownTable(['Name', 'Age'], [['Alice', 'Apple'], ['Brady', 'Banana']])\n */\nexport function createMarkdownTable(columns: string[], rows: string[][]): string {\n const headerRow = `| ${columns.join(' | ')} |`;\n const separatorRow = `| ${columns.fill('---').join(' | ')} |`;\n const dataRows = `${rows.map((row) => `| ${row.join(' | ')} |`).join('\\n')}`;\n const markdownTable = `${headerRow}\\n${separatorRow}\\n${dataRows}`;\n return markdownTable;\n}\n","import userEvent from '@testing-library/user-event';\n\nimport { queryHelpers, waitFor, within } from '@databricks/testing-library';\n\nimport { selectClasses } from '../common';\n\n/**\n * Allows the helpers in this module to be used when the select element is\n * queried _semantically_ (as if it were a native <select> element) - i.e.\n * `ByRole('combobox', { name: '...' })`, rather than by test ID.\n *\n * Also checks if <DesignSystemProvider> was used, because many of the helpers\n * in this module query by class name starting with \"du-bois-\", which requires\n * the provider.\n */\nfunction getRootElement(element: HTMLElement): HTMLElement {\n if (element.getAttribute('role') === 'combobox') {\n element = element.closest(`.${selectClasses.selector}`)!.parentElement!;\n }\n if (element.classList.contains('ant-select')) {\n throw new Error('Component must be wrapped by <DesignSystemProvider>');\n }\n return element;\n}\n\nfunction getOptionsList(select: HTMLElement): HTMLElement {\n const body = select.ownerDocument.body;\n const input = within(select).getByRole('combobox');\n const listId = input.getAttribute('aria-owns') || input.getAttribute('aria-controls');\n if (!listId) {\n throw queryHelpers.getElementError('Options input does not control an options list', body);\n }\n\n const listbox = select.ownerDocument.getElementById(listId);\n if (!listbox?.parentElement) {\n throw queryHelpers.getElementError('Options listbox does not have a parent', body);\n }\n\n const optionsList = listbox.parentElement.querySelector<HTMLElement>(`.${selectClasses.list}`);\n if (!optionsList) {\n throw queryHelpers.getElementError('Options list not found', body);\n }\n\n return optionsList;\n}\n\n/**\n * Opens the dropdown menu for the <Select/> by clicking. Will throw an error if\n * the menu is already opened or if the menu is unable to be opened.\n */\nexport async function openMenu(select: HTMLElement): Promise<void> {\n select = getRootElement(select);\n if (select.classList.contains(selectClasses.open)) {\n throw queryHelpers.getElementError('Select is already open', select);\n }\n const selector = select.querySelector(`.${selectClasses.selector}`);\n if (!selector) {\n throw queryHelpers.getElementError('Selector not found', select);\n }\n await userEvent.click(selector, { pointerEventsCheck: 0 });\n await waitFor(() => {\n if (!select.classList.contains(selectClasses.open)) {\n throw queryHelpers.getElementError('Select did not open', select);\n }\n });\n}\n\n/**\n * Closes the dropdown menu for the <Select/> by clicking. Will throw an error if\n * the menu is already closed or if the menu is unable to be closed.\n */\nexport async function closeMenu(select: HTMLElement): Promise<void> {\n select = getRootElement(select);\n if (!select.classList.contains(selectClasses.open)) {\n throw queryHelpers.getElementError('Select is already closed', select);\n }\n const selector = select.querySelector(`.${selectClasses.selector}`);\n if (!selector) {\n throw queryHelpers.getElementError('Selector not found', select);\n }\n await userEvent.click(selector, { pointerEventsCheck: 0 });\n await waitFor(() => {\n if (select.classList.contains(selectClasses.open)) {\n throw queryHelpers.getElementError('Select did not close', select);\n }\n });\n}\n\n/**\n * Returns a string concatenating the labels for all selected options.\n */\nexport function getLabelText(select: HTMLElement): string {\n select = getRootElement(select);\n const selector = select.querySelector(`.${selectClasses.selector}`);\n if (!selector) {\n throw queryHelpers.getElementError('Selector not found', select);\n }\n // Trim the text to avoid weird whitespace issues non-label elements being added.\n // For example, the input mirror is an empty span with some whitespace that is\n // nested under the selector but does not show up in the label text.\n return selector.textContent?.trim() ?? '';\n}\n\n/**\n * Removes the `option` by clicking its \"X\" button. Can only be used with a <Select/>\n * component with `mode=\"multiple\"`. The provided strings must match the option label\n * exactly.\n */\nexport async function removeMultiSelectOption(select: HTMLElement, option: string): Promise<void> {\n select = getRootElement(select);\n const selector = select.querySelector<HTMLElement>(`.${selectClasses.selector}`);\n if (!selector) {\n throw queryHelpers.getElementError('Selector not found', select);\n }\n const optionItem = within(selector).getByText(option).closest(`.${selectClasses.item}`);\n if (optionItem === null) {\n throw queryHelpers.getElementError(`Option \"${option}\" not found`, select);\n }\n const removeItem = optionItem.querySelector(`.${selectClasses.removeItem}`);\n if (removeItem === null) {\n throw queryHelpers.getElementError(`Remove button for option \"${option}\" not found`, optionItem as HTMLElement);\n }\n await userEvent.click(removeItem);\n}\n\n/**\n * Selects options from the dropdown menu for a <Select/> component with `mode=\"multiple\"`.\n * The provided strings must match the option labels exactly. There is a known\n * limitation for lists that are extremely long because AntD virtualizes the\n * options so not all may options may be rendered in the DOM. If this is causing\n * you issues, please let #help-frontend know.\n */\nexport async function multiSelect(select: HTMLElement, options: (string | RegExp)[]): Promise<void> {\n select = getRootElement(select);\n await openMenu(select);\n const optionsList = getOptionsList(select);\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n const optionItem = within(optionsList).getByText(option);\n await userEvent.click(optionItem, { pointerEventsCheck: 0 });\n }\n // Close the menu to indicate that selection has finished\n await closeMenu(select);\n}\n\n/**\n * Selects options from the dropdown menu for a <Select/> component without a\n * mode. The provided string must match an option label exactly. There is a known\n * limitation for lists that are extremely long because AntD virtualizes the\n * options so not all may options may be rendered in the DOM. If this is causing\n * you issues, please let #help-frontend know.\n */\nexport async function singleSelect(select: HTMLElement, option: string | RegExp): Promise<void> {\n select = getRootElement(select);\n await openMenu(select);\n const optionsList = getOptionsList(select);\n const optionItem = within(optionsList).getByText(option);\n await userEvent.click(optionItem, { pointerEventsCheck: 0 });\n // Menu automatically closes for a single <Select/> (no mode=\"multiple\")\n}\n\n/**\n * Clicks on the \"Clear\" button. In order for this function to work properly,\n * the `allowClear` prop must be set to `true`.\n */\nexport async function clearAll(select: HTMLElement): Promise<void> {\n select = getRootElement(select);\n const clearBtn = select.querySelector(`.${selectClasses.clear}`);\n if (!clearBtn) {\n throw queryHelpers.getElementError('Select not clearable', select);\n }\n await userEvent.click(clearBtn);\n}\n\n/**\n * Opens the dropdown menu, finds all of the options in the dropdown, closes\n * the menu, and returns a list of the text of each option in order.\n */\nexport async function getAllOptions(select: HTMLElement): Promise<string[]> {\n select = getRootElement(select);\n await openMenu(select);\n const optionsList = getOptionsList(select);\n const options: string[] = [];\n optionsList.querySelectorAll(`.${selectClasses.option}`).forEach((option) => {\n if (option.textContent === null) {\n throw queryHelpers.getElementError('Option had no text content', option as HTMLElement);\n }\n options.push(option.textContent);\n });\n await closeMenu(select);\n return options;\n}\n\n/**\n * Creates a new option for a Select with `mode=\"tags\"` by typing it into the input,\n * clicking on the option in the options list, and then closing the menu.\n */\nexport async function createNewOption(select: HTMLElement, option: string): Promise<void> {\n select = getRootElement(select);\n const selectInput = within(select).getByRole<HTMLInputElement>('combobox');\n // eslint-disable-next-line @databricks/no-userevent-type\n await userEvent.type(selectInput, option);\n const optionsList = getOptionsList(select);\n const optionItem = within(optionsList).getByText(option);\n await userEvent.click(optionItem);\n await closeMenu(select);\n}\n","import { expect } from '@jest/globals';\n\nimport { fireEvent, screen } from '@databricks/testing-library';\n\n// Helpers to get the selected option from the trigger\nconst getSelectedOptionLabelFromTrigger = (name?: string | RegExp): string | null => {\n return screen.getByRole('combobox', { name }).textContent;\n};\n\nconst getSelectedOptionValueFromTrigger = (name?: string | RegExp): string | null => {\n return screen.getByRole('combobox', { name }).getAttribute('value');\n};\n\nconst getSelectedOptionFromTrigger = (name?: string | RegExp): { label: string | null; value: string | null } => {\n const label = getSelectedOptionLabelFromTrigger(name);\n const value = getSelectedOptionValueFromTrigger(name);\n return { label, value };\n};\n\nconst expectSelectedOptionFromTriggerToBe = (label: string | RegExp, name?: string | RegExp): void => {\n expect(getSelectedOptionLabelFromTrigger(name)).toBe(label);\n};\n\nconst toggleSelect = (name?: string | RegExp): void => {\n fireEvent.click(screen.getByRole('combobox', { name }));\n};\n\nconst expectSelectToBeOpen = (): void => {\n expect(screen.queryAllByRole('option')).not.toHaveLength(0);\n};\n\nconst expectSelectToBeClosed = (): void => {\n expect(screen.queryAllByRole('option')).toHaveLength(0);\n};\n\n// Generic helpers for when the select is open\nconst getOptionsLength = (): number => {\n return screen.getAllByRole('option').length;\n};\n\nconst getAllOptions = (): (string | null)[] => {\n return screen.getAllByRole('option').flatMap((option) => option.textContent);\n};\n\nconst expectOptionsLengthToBe = (length: number): void => {\n expect(getOptionsLength()).toBe(length);\n};\n\nconst getUnselectedOption = (label: string | RegExp): HTMLElement => {\n return screen.getByRole('option', { name: label, selected: false });\n};\n\nconst getSelectedOption = (label: string | RegExp): HTMLElement => {\n return screen.getByRole('option', { name: label, selected: false });\n};\n\nconst getOption = (label: string | RegExp): HTMLElement => {\n return screen.getByRole('option', { name: label });\n};\n\nconst selectOption = (label: string | RegExp): void => {\n fireEvent.click(screen.getByRole('option', { name: label }));\n};\n\nconst expectSelectedOptionToBe = (label: string | RegExp): void => {\n const options = screen.getAllByRole('option');\n const selectedOption = options.find((option) => option.getAttribute('aria-selected') === 'true');\n expect(selectedOption).toHaveTextContent(label);\n};\n\nexport const simpleSelectTestUtils: {\n getSelectedOptionLabelFromTrigger: typeof getSelectedOptionLabelFromTrigger;\n getSelectedOptionValueFromTrigger: typeof getSelectedOptionValueFromTrigger;\n getSelectedOptionFromTrigger: typeof getSelectedOptionFromTrigger;\n expectSelectedOptionFromTriggerToBe: typeof expectSelectedOptionFromTriggerToBe;\n toggleSelect: typeof toggleSelect;\n expectSelectToBeOpen: typeof expectSelectToBeOpen;\n expectSelectToBeClosed: typeof expectSelectToBeClosed;\n getOptionsLength: typeof getOptionsLength;\n getAllOptions: typeof getAllOptions;\n expectOptionsLengthToBe: typeof expectOptionsLengthToBe;\n getUnselectedOption: typeof getUnselectedOption;\n getSelectedOption: typeof getSelectedOption;\n getOption: typeof getOption;\n selectOption: typeof selectOption;\n expectSelectedOptionToBe: typeof expectSelectedOptionToBe;\n} = {\n getSelectedOptionLabelFromTrigger,\n getSelectedOptionValueFromTrigger,\n getSelectedOptionFromTrigger,\n expectSelectedOptionFromTriggerToBe,\n toggleSelect,\n expectSelectToBeOpen,\n expectSelectToBeClosed,\n getOptionsLength,\n getAllOptions,\n expectOptionsLengthToBe,\n getUnselectedOption,\n getSelectedOption,\n getOption,\n selectOption,\n expectSelectedOptionToBe,\n};\n","import type { UserEvent } from '@testing-library/user-event';\n\nimport { screen, within } from '@databricks/testing-library';\n\n/**\n * Variant of the Accordion component under test.\n *\n * The AntD implementation renders the trigger as `role=\"tab\"` in single-display mode\n * and `role=\"button\"` in multiple-display mode. The Radix implementation always\n * renders a native `<button>` and a `role=\"region\"` panel per the WAI-ARIA APG\n * accordion pattern (https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n *\n * Tests that need to run identically against both variants pass the variant in;\n * Radix-only tests can pass `'radix'` and ignore `displayMode`.\n */\nexport type AccordionVariant = 'antd' | 'radix';\n\nexport type AccordionDisplayMode = 'single' | 'multiple';\n\nexport interface AccordionQueryOptions {\n variant: AccordionVariant;\n /** Only affects AntD trigger role lookup. Defaults to `'multiple'`. */\n displayMode?: AccordionDisplayMode;\n /** Scope queries to a subtree instead of the document. */\n container?: HTMLElement;\n}\n\nconst getTriggerRole = ({ variant, displayMode = 'multiple' }: AccordionQueryOptions): 'tab' | 'button' =>\n variant === 'antd' && displayMode === 'single' ? 'tab' : 'button';\n\nconst getScope = (container: HTMLElement | undefined) => (container ? within(container) : screen);\n\n/**\n * Find an accordion trigger by its accessible name. Throws if missing.\n */\nexport const getAccordionTrigger = (name: RegExp | string, options: AccordionQueryOptions): HTMLElement =>\n getScope(options.container).getByRole(getTriggerRole(options), { name });\n\n/**\n * Like {@link getAccordionTrigger} but returns `null` when not found, mirroring RTL's `queryByRole`.\n */\nexport const queryAccordionTrigger = (name: RegExp | string, options: AccordionQueryOptions): HTMLElement | null =>\n getScope(options.container).queryByRole(getTriggerRole(options), { name });\n\n/**\n * Find the panel/region associated with a trigger by accessible name.\n *\n * Radix wires `aria-labelledby` from the panel back to the trigger, so this works.\n * AntD does not assign `role=\"region\"`, so this only works for the Radix variant —\n * tests asserting on panel content under AntD must query the content directly.\n */\nexport const getAccordionRegion = (name: RegExp | string, options: { container?: HTMLElement } = {}): HTMLElement =>\n getScope(options.container).getByRole('region', { name });\n\nexport const queryAccordionRegion = (\n name: RegExp | string,\n options: { container?: HTMLElement } = {},\n): HTMLElement | null => getScope(options.container).queryByRole('region', { name });\n\nexport const isAccordionPanelExpanded = (name: RegExp | string, options: AccordionQueryOptions): boolean =>\n getAccordionTrigger(name, options).getAttribute('aria-expanded') === 'true';\n\n/**\n * Expand a panel by clicking its trigger if not already expanded. No-op if already open.\n * Returns the trigger element so callers can chain assertions.\n */\nexport const expandAccordionPanel = async (\n user: UserEvent,\n name: RegExp | string,\n options: AccordionQueryOptions,\n): Promise<HTMLElement> => {\n const trigger = getAccordionTrigger(name, options);\n if (trigger.getAttribute('aria-expanded') !== 'true') {\n await user.click(trigger);\n }\n return trigger;\n};\n\n/**\n * Collapse a panel by clicking its trigger if currently expanded. No-op if already closed.\n * Returns the trigger element so callers can chain assertions.\n */\nexport const collapseAccordionPanel = async (\n user: UserEvent,\n name: RegExp | string,\n options: AccordionQueryOptions,\n): Promise<HTMLElement> => {\n const trigger = getAccordionTrigger(name, options);\n if (trigger.getAttribute('aria-expanded') === 'true') {\n await user.click(trigger);\n }\n return trigger;\n};\n","/**\n * Reads the checked state of a Du Bois Switch regardless of the rendering engine.\n *\n * The AntD implementation renders the toggle as a `<button role=\"switch\" aria-checked>`, so the\n * checked state lives in the `aria-checked` attribute. The native implementation renders an\n * `<input type=\"checkbox\" role=\"switch\">`, where the checked state is the element's `checked`\n * property and ARIA maps it implicitly (there is no `aria-checked` attribute). This helper reads\n * whichever representation is present so a test asserts identically against both engines.\n *\n * TODO(DUBOIS-471): transitional — delete once `databricks.fe.designsystem.useNativeSwitch` is at\n * 100% and `AntDSwitchInternal` is gone, at which point tests can use `toBeChecked()` directly.\n * https://databricks.atlassian.net/browse/DUBOIS-471\n */\nexport function isSwitchChecked(toggle: Element): boolean {\n return toggle.getAttribute('aria-checked') === 'true' || (toggle as HTMLInputElement).checked === true;\n}\n","import { queryHelpers, within } from '@databricks/testing-library';\n\nimport type { GetTableRowByCellTextOptions, RowIdentifier, TableRows } from '../common';\nimport { createMarkdownTable } from '../common';\n\nfunction getColumnHeaderIndex(tableElement: HTMLElement, columnHeaderName: string | RegExp): number {\n const columnHeader = within(tableElement).getByRole('columnheader', { name: columnHeaderName });\n const columnHeaderIndex = Array.from(columnHeader.parentElement?.children ?? []).indexOf(columnHeader);\n return columnHeaderIndex;\n}\n\n/**\n * Returns the table row that contains the specified `cellText`. The `cellText`\n * must be in the column with name `columnHeaderName` if it is specified. Otherwise,\n * the `cellText` must be in the first column. Throws an error if either multiple\n * rows or no rows can be found that match the given options. Also throws an error\n * if the column with name `columnHeaderName` cannot be found.\n *\n * @param tableElement The HTMLElement representing the table to query in. This is likely\n * a `<div role=\"table\">` element, so it can be queried by `screen.getByRole('table')`.\n * @param cellText The cell text that uniquely identifies the row.\n * @param columnHeaderName The name of the column to search the text for. If not provided,\n * the first column will be used.\n */\nexport function getTableRowByCellText(\n tableElement: HTMLElement,\n cellText: string,\n { columnHeaderName }: GetTableRowByCellTextOptions = {},\n): HTMLElement {\n const columnHeaderIndex = columnHeaderName === undefined ? 0 : getColumnHeaderIndex(tableElement, columnHeaderName);\n\n const matchingRows = within(tableElement)\n .getAllByRole('row')\n // Skip first row (table header)\n .slice(1)\n .filter((row) => {\n const cells = within(row).getAllByRole('cell');\n const cell = cells[columnHeaderIndex];\n const cellContainsText = within(cell).queryByText(cellText) !== null;\n return cellContainsText;\n });\n\n if (matchingRows.length === 0) {\n throw queryHelpers.getElementError(\n `Unable to find a table row with text \"${cellText}\" in the column \"${columnHeaderName}\"`,\n tableElement,\n );\n }\n\n if (matchingRows.length > 1) {\n throw queryHelpers.getElementError(\n `Found multiple table rows with text \"${cellText}\" in the column \"${columnHeaderName}\"`,\n tableElement,\n );\n }\n\n return matchingRows[0];\n}\n\n/**\n * Converts a Du Bois table to a markdown table string. This means that each cell\n * is separated by a pipe (including the edges), the header row is on its own line\n * at the top, each data row is on its own line below, and the header row is separated\n * by a row of dashes from the data rows. This is useful for checking table contents\n * in tests.\n *\n * @param tableElement The HTMLElement representing the table to query in. This is likely\n * a `<div role=\"table\">` element, so it can be queried by `screen.getByRole('table')`.\n *\n * @example\n * The HTML table:\n * ```jsx\n * <Table>\n * <TableRow isHeader>\n * <TableHeader>Name</TableHeader>\n * <TableHeader>Fruit</TableHeader>\n * </TableRow>\n * <TableRow>\n * <TableCell>Alice</TableCell>\n * <TableCell>Apple</TableCell>\n * </TableRow>\n * <TableRow>\n * <TableCell>Brady</TableCell>\n * <TableCell>Banana</TableCell>\n * </TableRow>\n * </Table>\n * ```\n *\n * The Markdown table:\n * ```md\n * | Name | Fruit |\n * | --- | --- |\n * | Alice | Apple |\n * | Brady | Banana |\n * ```\n */\nexport function toMarkdownTable(tableElement: HTMLElement): string {\n const { bodyRows, headerRow } = getTableRows(tableElement);\n const columns = within(headerRow)\n .getAllByRole('columnheader')\n .map((column) => column.textContent ?? '');\n const rows = bodyRows.map((row) =>\n within(row)\n .getAllByRole('cell')\n .map((cell) => cell.textContent ?? ''),\n );\n return createMarkdownTable(columns, rows);\n}\n\n/**\n * Returns the header row and all body rows (non-header rows) in order. Assumes that the\n * `tableElement` has a single header row (as the first row) and the rest of the rows are\n * body rows.\n *\n * @param tableElement The HTMLElement representing the table to query in. This is likely\n * a `<div role=\"table\">` element, so it can be queried by `screen.getByRole('table')`.\n */\nexport function getTableRows(tableElement: HTMLElement): TableRows<HTMLElement> {\n const [firstRow, ...restRows] = within(tableElement).getAllByRole('row');\n return {\n bodyRows: restRows,\n headerRow: firstRow,\n };\n}\n\n/**\n * Returns the table cell in the specified table row corresponding to the given\n * `columnHeaderName`. This is useful for checking that a row has a particular value\n * for a given column, especially when there are duplicate values in the column.\n *\n * @example\n * The HTML table:\n * ```jsx\n * <Table>\n * <TableRow isHeader>\n * <TableHeader>Name</TableHeader>\n * <TableHeader>Age</TableHeader>\n * </TableRow>\n * <TableRow>\n * <TableCell>Alex</TableCell>\n * <TableCell>25</TableCell>\n * </TableRow>\n * <TableRow>\n * <TableCell>Brenda</TableCell>\n * <TableCell>39</TableCell>\n * </TableRow>\n * <TableRow>\n * <TableCell>Carlos</TableCell>\n * <TableCell>39</TableCell>\n * </TableRow>\n * </Table>\n * ```\n *\n * ```js\n * const table = screen.getByRole('table');\n * const result = getTableCellInRow(table, { cellText: 'Carlos' }, 'Age');\n * expect(result.textContent).toEqual('39');\n * ```\n */\nexport function getTableCellInRow(\n tableElement: HTMLElement,\n row: RowIdentifier,\n columnHeaderName: string | RegExp,\n): HTMLElement {\n const tableRowElement = getTableRowByCellText(tableElement, row.cellText, { columnHeaderName: row.columnHeaderName });\n const columnHeaderIndex = getColumnHeaderIndex(tableElement, columnHeaderName);\n const cells = within(tableRowElement).getAllByRole('cell');\n const cell = cells[columnHeaderIndex];\n return cell;\n}\n","import userEvent from '@testing-library/user-event';\n\n/**\n * Opens the dropdown menu by clicking on the dropdown button.\n *\n * @param dropdownButton - The Dropdown Trigger button that opens the menu when clicked.\n */\nexport const openDropdownMenu = async (dropdownButton: HTMLElement): Promise<void> => {\n // eslint-disable-next-line @databricks/no-userevent-type\n await userEvent.type(dropdownButton, '{arrowdown}');\n};\n"],"names":["normalizeText","text","replace","trim","getDisplayLabel","combobox","textContent","getListbox","id","getAttribute","queryHelpers","getElementError","listbox","ownerDocument","getElementById","body","getOptions","within","getAllByRole","getOptionNames","options","map","option","computeAccessibleName","duBoisClassPrefix","selectClasses","clear","item","list","open","removeItem","selector","createMarkdownTable","columns","rows","headerRow","join","separatorRow","fill","dataRows","row","markdownTable","getRootElement","element","closest","parentElement","classList","contains","Error","getOptionsList","select","input","getByRole","listId","optionsList","querySelector","openMenu","userEvent","click","pointerEventsCheck","waitFor","closeMenu","getLabelText","removeMultiSelectOption","optionItem","getByText","multiSelect","i","length","singleSelect","clearAll","clearBtn","getAllOptions","querySelectorAll","forEach","push","createNewOption","selectInput","type","getSelectedOptionLabelFromTrigger","name","screen","getSelectedOptionValueFromTrigger","getSelectedOptionFromTrigger","label","value","expectSelectedOptionFromTriggerToBe","expect","toBe","toggleSelect","fireEvent","expectSelectToBeOpen","queryAllByRole","not","toHaveLength","expectSelectToBeClosed","getOptionsLength","flatMap","expectOptionsLengthToBe","getUnselectedOption","selected","getSelectedOption","getOption","selectOption","expectSelectedOptionToBe","selectedOption","find","toHaveTextContent","simpleSelectTestUtils","getTriggerRole","variant","displayMode","getScope","container","getAccordionTrigger","queryAccordionTrigger","queryByRole","getAccordionRegion","queryAccordionRegion","isAccordionPanelExpanded","expandAccordionPanel","user","trigger","collapseAccordionPanel","isSwitchChecked","toggle","checked","getColumnHeaderIndex","tableElement","columnHeaderName","columnHeader","columnHeaderIndex","Array","from","children","indexOf","getTableRowByCellText","cellText","undefined","matchingRows","slice","filter","cells","cell","cellContainsText","queryByText","toMarkdownTable","bodyRows","getTableRows","column","firstRow","restRows","getTableCellInRow","tableRowElement","openDropdownMenu","dropdownButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rtl.js","sources":["../../src/test-utils/rtl/select.ts","../../src/test-utils/common.ts","../../src/test-utils/rtl/selectEvent.ts","../../src/test-utils/rtl/simpleSelect.utils.ts","../../src/test-utils/rtl/accordion.ts","../../src/test-utils/rtl/switch.ts","../../src/test-utils/rtl/table.ts","../../src/test-utils/rtl/openDropdownMenu.ts"],"sourcesContent":["import { computeAccessibleName } from 'dom-accessibility-api';\n\nimport { queryHelpers, within } from '@databricks/testing-library';\n\nfunction normalizeText(text: string): string {\n return text.replace(/\\s+/g, ' ').trim();\n}\n\n/**\n * Extracts the display label from a combobox — equivalent to the selected\n * option's label.\n */\nexport function getDisplayLabel(combobox: HTMLElement): string {\n return normalizeText(combobox.textContent ?? '');\n}\n\n/**\n * Finds the associated listbox for a combobox.\n *\n * @usage\n *\n * ```tsx\n * const combobox = screen.getByRole('combobox', { name: '…' });\n * await userEvent.click(combobox);\n * const listbox = select.getListbox(combobox);\n * await userEvent.click(within(listbox).getByRole('option', { name: '…' }));\n * ```\n */\nexport function getListbox(combobox: HTMLElement): HTMLElement {\n const id = combobox.getAttribute('aria-controls');\n if (!id) {\n throw queryHelpers.getElementError(\n \"This doesn't appear to be a combobox. Make sure you're querying the right element: `ByRole('combobox', { name: '…' })`\",\n combobox,\n );\n }\n const listbox = combobox.ownerDocument.getElementById(id);\n if (!listbox) {\n throw queryHelpers.getElementError(\n \"Can't find the listbox. Are you sure the select has been opened? `await userEvent.click(combobox)`\",\n combobox.ownerDocument.body,\n );\n }\n return listbox;\n}\n\n/**\n * Returns all options associated with a combobox (requires the select to have\n * been opened).\n */\nexport function getOptions(combobox: HTMLElement): HTMLElement[] {\n const listbox = getListbox(combobox);\n return within(listbox).getAllByRole('option');\n}\n\n/**\n * Returns the accessible name for each option in a combobox.\n */\nexport function getOptionNames(combobox: HTMLElement): string[] {\n const options = getOptions(combobox);\n return options.map((option) => computeAccessibleName(option));\n}\n","const duBoisClassPrefix = 'du-bois-light';\n\n/**\n * Used with the `selectEvent` utils for both Enzyme and RTL.\n */\nexport const selectClasses = {\n clear: `${duBoisClassPrefix}-select-clear`,\n item: `${duBoisClassPrefix}-select-selection-item`,\n list: 'rc-virtual-list',\n open: `${duBoisClassPrefix}-select-open`,\n option: `${duBoisClassPrefix}-select-item-option-content`,\n removeItem: `${duBoisClassPrefix}-select-selection-item-remove`,\n selector: `${duBoisClassPrefix}-select-selector`,\n};\n\nexport interface GetTableRowByCellTextOptions {\n columnHeaderName?: string | RegExp;\n}\n\nexport interface RowIdentifier {\n /** Text in a cell that uniquely identifies a row. */\n cellText: string;\n /** Name of the column to use when searching for `cellText`. */\n columnHeaderName?: string | RegExp;\n}\n\nexport interface TableRows<T> {\n bodyRows: T[];\n headerRow: T;\n}\n\n/**\n * @param columns List of column names\n * @param rows List of rows, where each row is a list of cell texts\n * @returns Markdown formatted string representing the data\n *\n * @example\n * // returns the string:\n * // | Name | Fruit |\n * // | --- | --- |\n * // | Alice | Apple |\n * // | Brady | Banana |\n * createMarkdownTable(['Name', 'Age'], [['Alice', 'Apple'], ['Brady', 'Banana']])\n */\nexport function createMarkdownTable(columns: string[], rows: string[][]): string {\n const headerRow = `| ${columns.join(' | ')} |`;\n const separatorRow = `| ${columns.fill('---').join(' | ')} |`;\n const dataRows = `${rows.map((row) => `| ${row.join(' | ')} |`).join('\\n')}`;\n const markdownTable = `${headerRow}\\n${separatorRow}\\n${dataRows}`;\n return markdownTable;\n}\n","import userEvent from '@testing-library/user-event';\n\nimport { queryHelpers, waitFor, within } from '@databricks/testing-library';\n\nimport { selectClasses } from '../common';\n\n/**\n * Allows the helpers in this module to be used when the select element is\n * queried _semantically_ (as if it were a native <select> element) - i.e.\n * `ByRole('combobox', { name: '...' })`, rather than by test ID.\n *\n * Also checks if <DesignSystemProvider> was used, because many of the helpers\n * in this module query by class name starting with \"du-bois-\", which requires\n * the provider.\n */\nfunction getRootElement(element: HTMLElement): HTMLElement {\n if (element.getAttribute('role') === 'combobox') {\n element = element.closest(`.${selectClasses.selector}`)!.parentElement!;\n }\n if (element.classList.contains('ant-select')) {\n throw new Error('Component must be wrapped by <DesignSystemProvider>');\n }\n return element;\n}\n\nfunction getOptionsList(select: HTMLElement): HTMLElement {\n const body = select.ownerDocument.body;\n const input = within(select).getByRole('combobox');\n const listId = input.getAttribute('aria-owns') || input.getAttribute('aria-controls');\n if (!listId) {\n throw queryHelpers.getElementError('Options input does not control an options list', body);\n }\n\n const listbox = select.ownerDocument.getElementById(listId);\n if (!listbox?.parentElement) {\n throw queryHelpers.getElementError('Options listbox does not have a parent', body);\n }\n\n const optionsList = listbox.parentElement.querySelector<HTMLElement>(`.${selectClasses.list}`);\n if (!optionsList) {\n throw queryHelpers.getElementError('Options list not found', body);\n }\n\n return optionsList;\n}\n\n/**\n * Opens the dropdown menu for the <Select/> by clicking. Will throw an error if\n * the menu is already opened or if the menu is unable to be opened.\n */\nexport async function openMenu(select: HTMLElement): Promise<void> {\n select = getRootElement(select);\n if (select.classList.contains(selectClasses.open)) {\n throw queryHelpers.getElementError('Select is already open', select);\n }\n const selector = select.querySelector(`.${selectClasses.selector}`);\n if (!selector) {\n throw queryHelpers.getElementError('Selector not found', select);\n }\n await userEvent.click(selector, { pointerEventsCheck: 0 });\n await waitFor(() => {\n if (!select.classList.contains(selectClasses.open)) {\n throw queryHelpers.getElementError('Select did not open', select);\n }\n });\n}\n\n/**\n * Closes the dropdown menu for the <Select/> by clicking. Will throw an error if\n * the menu is already closed or if the menu is unable to be closed.\n */\nexport async function closeMenu(select: HTMLElement): Promise<void> {\n select = getRootElement(select);\n if (!select.classList.contains(selectClasses.open)) {\n throw queryHelpers.getElementError('Select is already closed', select);\n }\n const selector = select.querySelector(`.${selectClasses.selector}`);\n if (!selector) {\n throw queryHelpers.getElementError('Selector not found', select);\n }\n await userEvent.click(selector, { pointerEventsCheck: 0 });\n await waitFor(() => {\n if (select.classList.contains(selectClasses.open)) {\n throw queryHelpers.getElementError('Select did not close', select);\n }\n });\n}\n\n/**\n * Returns a string concatenating the labels for all selected options.\n */\nexport function getLabelText(select: HTMLElement): string {\n select = getRootElement(select);\n const selector = select.querySelector(`.${selectClasses.selector}`);\n if (!selector) {\n throw queryHelpers.getElementError('Selector not found', select);\n }\n // Trim the text to avoid weird whitespace issues non-label elements being added.\n // For example, the input mirror is an empty span with some whitespace that is\n // nested under the selector but does not show up in the label text.\n return selector.textContent?.trim() ?? '';\n}\n\n/**\n * Removes the `option` by clicking its \"X\" button. Can only be used with a <Select/>\n * component with `mode=\"multiple\"`. The provided strings must match the option label\n * exactly.\n */\nexport async function removeMultiSelectOption(select: HTMLElement, option: string): Promise<void> {\n select = getRootElement(select);\n const selector = select.querySelector<HTMLElement>(`.${selectClasses.selector}`);\n if (!selector) {\n throw queryHelpers.getElementError('Selector not found', select);\n }\n const optionItem = within(selector).getByText(option).closest(`.${selectClasses.item}`);\n if (optionItem === null) {\n throw queryHelpers.getElementError(`Option \"${option}\" not found`, select);\n }\n const removeItem = optionItem.querySelector(`.${selectClasses.removeItem}`);\n if (removeItem === null) {\n throw queryHelpers.getElementError(`Remove button for option \"${option}\" not found`, optionItem as HTMLElement);\n }\n await userEvent.click(removeItem);\n}\n\n/**\n * Selects options from the dropdown menu for a <Select/> component with `mode=\"multiple\"`.\n * The provided strings must match the option labels exactly. There is a known\n * limitation for lists that are extremely long because AntD virtualizes the\n * options so not all may options may be rendered in the DOM. If this is causing\n * you issues, please let #help-frontend know.\n */\nexport async function multiSelect(select: HTMLElement, options: (string | RegExp)[]): Promise<void> {\n select = getRootElement(select);\n await openMenu(select);\n const optionsList = getOptionsList(select);\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n const optionItem = within(optionsList).getByText(option);\n await userEvent.click(optionItem, { pointerEventsCheck: 0 });\n }\n // Close the menu to indicate that selection has finished\n await closeMenu(select);\n}\n\n/**\n * Selects options from the dropdown menu for a <Select/> component without a\n * mode. The provided string must match an option label exactly. There is a known\n * limitation for lists that are extremely long because AntD virtualizes the\n * options so not all may options may be rendered in the DOM. If this is causing\n * you issues, please let #help-frontend know.\n */\nexport async function singleSelect(select: HTMLElement, option: string | RegExp): Promise<void> {\n select = getRootElement(select);\n await openMenu(select);\n const optionsList = getOptionsList(select);\n const optionItem = within(optionsList).getByText(option);\n await userEvent.click(optionItem, { pointerEventsCheck: 0 });\n // Menu automatically closes for a single <Select/> (no mode=\"multiple\")\n}\n\n/**\n * Clicks on the \"Clear\" button. In order for this function to work properly,\n * the `allowClear` prop must be set to `true`.\n */\nexport async function clearAll(select: HTMLElement): Promise<void> {\n select = getRootElement(select);\n const clearBtn = select.querySelector(`.${selectClasses.clear}`);\n if (!clearBtn) {\n throw queryHelpers.getElementError('Select not clearable', select);\n }\n await userEvent.click(clearBtn);\n}\n\n/**\n * Opens the dropdown menu, finds all of the options in the dropdown, closes\n * the menu, and returns a list of the text of each option in order.\n */\nexport async function getAllOptions(select: HTMLElement): Promise<string[]> {\n select = getRootElement(select);\n await openMenu(select);\n const optionsList = getOptionsList(select);\n const options: string[] = [];\n optionsList.querySelectorAll(`.${selectClasses.option}`).forEach((option) => {\n if (option.textContent === null) {\n throw queryHelpers.getElementError('Option had no text content', option as HTMLElement);\n }\n options.push(option.textContent);\n });\n await closeMenu(select);\n return options;\n}\n\n/**\n * Creates a new option for a Select with `mode=\"tags\"` by typing it into the input,\n * clicking on the option in the options list, and then closing the menu.\n */\nexport async function createNewOption(select: HTMLElement, option: string): Promise<void> {\n select = getRootElement(select);\n const selectInput = within(select).getByRole<HTMLInputElement>('combobox');\n // eslint-disable-next-line @databricks/no-userevent-type\n await userEvent.type(selectInput, option);\n const optionsList = getOptionsList(select);\n const optionItem = within(optionsList).getByText(option);\n await userEvent.click(optionItem);\n await closeMenu(select);\n}\n","import { expect } from '@jest/globals';\n\nimport { fireEvent, screen } from '@databricks/testing-library';\n\n// Helpers to get the selected option from the trigger\nconst getSelectedOptionLabelFromTrigger = (name?: string | RegExp): string | null => {\n return screen.getByRole('combobox', { name }).textContent;\n};\n\nconst getSelectedOptionValueFromTrigger = (name?: string | RegExp): string | null => {\n return screen.getByRole('combobox', { name }).getAttribute('value');\n};\n\nconst getSelectedOptionFromTrigger = (name?: string | RegExp): { label: string | null; value: string | null } => {\n const label = getSelectedOptionLabelFromTrigger(name);\n const value = getSelectedOptionValueFromTrigger(name);\n return { label, value };\n};\n\nconst expectSelectedOptionFromTriggerToBe = (label: string | RegExp, name?: string | RegExp): void => {\n expect(getSelectedOptionLabelFromTrigger(name)).toBe(label);\n};\n\nconst toggleSelect = (name?: string | RegExp): void => {\n fireEvent.click(screen.getByRole('combobox', { name }));\n};\n\nconst expectSelectToBeOpen = (): void => {\n expect(screen.queryAllByRole('option')).not.toHaveLength(0);\n};\n\nconst expectSelectToBeClosed = (): void => {\n expect(screen.queryAllByRole('option')).toHaveLength(0);\n};\n\n// Generic helpers for when the select is open\nconst getOptionsLength = (): number => {\n return screen.getAllByRole('option').length;\n};\n\nconst getAllOptions = (): (string | null)[] => {\n return screen.getAllByRole('option').flatMap((option) => option.textContent);\n};\n\nconst expectOptionsLengthToBe = (length: number): void => {\n expect(getOptionsLength()).toBe(length);\n};\n\nconst getUnselectedOption = (label: string | RegExp): HTMLElement => {\n return screen.getByRole('option', { name: label, selected: false });\n};\n\nconst getSelectedOption = (label: string | RegExp): HTMLElement => {\n return screen.getByRole('option', { name: label, selected: false });\n};\n\nconst getOption = (label: string | RegExp): HTMLElement => {\n return screen.getByRole('option', { name: label });\n};\n\nconst selectOption = (label: string | RegExp): void => {\n fireEvent.click(screen.getByRole('option', { name: label }));\n};\n\nconst expectSelectedOptionToBe = (label: string | RegExp): void => {\n const options = screen.getAllByRole('option');\n const selectedOption = options.find((option) => option.getAttribute('aria-selected') === 'true');\n expect(selectedOption).toHaveTextContent(label);\n};\n\nexport const simpleSelectTestUtils: {\n getSelectedOptionLabelFromTrigger: typeof getSelectedOptionLabelFromTrigger;\n getSelectedOptionValueFromTrigger: typeof getSelectedOptionValueFromTrigger;\n getSelectedOptionFromTrigger: typeof getSelectedOptionFromTrigger;\n expectSelectedOptionFromTriggerToBe: typeof expectSelectedOptionFromTriggerToBe;\n toggleSelect: typeof toggleSelect;\n expectSelectToBeOpen: typeof expectSelectToBeOpen;\n expectSelectToBeClosed: typeof expectSelectToBeClosed;\n getOptionsLength: typeof getOptionsLength;\n getAllOptions: typeof getAllOptions;\n expectOptionsLengthToBe: typeof expectOptionsLengthToBe;\n getUnselectedOption: typeof getUnselectedOption;\n getSelectedOption: typeof getSelectedOption;\n getOption: typeof getOption;\n selectOption: typeof selectOption;\n expectSelectedOptionToBe: typeof expectSelectedOptionToBe;\n} = {\n getSelectedOptionLabelFromTrigger,\n getSelectedOptionValueFromTrigger,\n getSelectedOptionFromTrigger,\n expectSelectedOptionFromTriggerToBe,\n toggleSelect,\n expectSelectToBeOpen,\n expectSelectToBeClosed,\n getOptionsLength,\n getAllOptions,\n expectOptionsLengthToBe,\n getUnselectedOption,\n getSelectedOption,\n getOption,\n selectOption,\n expectSelectedOptionToBe,\n};\n","import type { UserEvent } from '@testing-library/user-event';\n\nimport { screen, within } from '@databricks/testing-library';\n\n/**\n * Variant of the Accordion component under test.\n *\n * The AntD implementation renders the trigger as `role=\"tab\"` in single-display mode\n * and `role=\"button\"` in multiple-display mode. The Radix implementation always\n * renders a native `<button>` and a `role=\"region\"` panel per the WAI-ARIA APG\n * accordion pattern (https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n *\n * Tests that need to run identically against both variants pass the variant in;\n * Radix-only tests can pass `'radix'` and ignore `displayMode`.\n */\nexport type AccordionVariant = 'antd' | 'radix';\n\nexport type AccordionDisplayMode = 'single' | 'multiple';\n\nexport interface AccordionQueryOptions {\n variant: AccordionVariant;\n /** Only affects AntD trigger role lookup. Defaults to `'multiple'`. */\n displayMode?: AccordionDisplayMode;\n /** Scope queries to a subtree instead of the document. */\n container?: HTMLElement;\n}\n\nconst getTriggerRole = ({ variant, displayMode = 'multiple' }: AccordionQueryOptions): 'tab' | 'button' =>\n variant === 'antd' && displayMode === 'single' ? 'tab' : 'button';\n\nconst getScope = (container: HTMLElement | undefined) => (container ? within(container) : screen);\n\n/**\n * Find an accordion trigger by its accessible name. Throws if missing.\n */\nexport const getAccordionTrigger = (name: RegExp | string, options: AccordionQueryOptions): HTMLElement =>\n getScope(options.container).getByRole(getTriggerRole(options), { name });\n\n/**\n * Like {@link getAccordionTrigger} but returns `null` when not found, mirroring RTL's `queryByRole`.\n */\nexport const queryAccordionTrigger = (name: RegExp | string, options: AccordionQueryOptions): HTMLElement | null =>\n getScope(options.container).queryByRole(getTriggerRole(options), { name });\n\n/**\n * Find the panel/region associated with a trigger by accessible name.\n *\n * Radix wires `aria-labelledby` from the panel back to the trigger, so this works.\n * AntD does not assign `role=\"region\"`, so this only works for the Radix variant —\n * tests asserting on panel content under AntD must query the content directly.\n */\nexport const getAccordionRegion = (name: RegExp | string, options: { container?: HTMLElement } = {}): HTMLElement =>\n getScope(options.container).getByRole('region', { name });\n\nexport const queryAccordionRegion = (\n name: RegExp | string,\n options: { container?: HTMLElement } = {},\n): HTMLElement | null => getScope(options.container).queryByRole('region', { name });\n\nexport const isAccordionPanelExpanded = (name: RegExp | string, options: AccordionQueryOptions): boolean =>\n getAccordionTrigger(name, options).getAttribute('aria-expanded') === 'true';\n\n/**\n * Expand a panel by clicking its trigger if not already expanded. No-op if already open.\n * Returns the trigger element so callers can chain assertions.\n */\nexport const expandAccordionPanel = async (\n user: UserEvent,\n name: RegExp | string,\n options: AccordionQueryOptions,\n): Promise<HTMLElement> => {\n const trigger = getAccordionTrigger(name, options);\n if (trigger.getAttribute('aria-expanded') !== 'true') {\n await user.click(trigger);\n }\n return trigger;\n};\n\n/**\n * Collapse a panel by clicking its trigger if currently expanded. No-op if already closed.\n * Returns the trigger element so callers can chain assertions.\n */\nexport const collapseAccordionPanel = async (\n user: UserEvent,\n name: RegExp | string,\n options: AccordionQueryOptions,\n): Promise<HTMLElement> => {\n const trigger = getAccordionTrigger(name, options);\n if (trigger.getAttribute('aria-expanded') === 'true') {\n await user.click(trigger);\n }\n return trigger;\n};\n","/**\n * Reads the checked state of a dbui Switch regardless of the rendering engine.\n *\n * The AntD implementation renders the toggle as a `<button role=\"switch\" aria-checked>`, so the\n * checked state lives in the `aria-checked` attribute. The native implementation renders an\n * `<input type=\"checkbox\" role=\"switch\">`, where the checked state is the element's `checked`\n * property and ARIA maps it implicitly (there is no `aria-checked` attribute). This helper reads\n * whichever representation is present so a test asserts identically against both engines.\n *\n * TODO(DUBOIS-471): transitional — delete once `databricks.fe.designsystem.useNativeSwitch` is at\n * 100% and `AntDSwitchInternal` is gone, at which point tests can use `toBeChecked()` directly.\n * https://databricks.atlassian.net/browse/DUBOIS-471\n */\nexport function isSwitchChecked(toggle: Element): boolean {\n return toggle.getAttribute('aria-checked') === 'true' || (toggle as HTMLInputElement).checked === true;\n}\n","import { queryHelpers, within } from '@databricks/testing-library';\n\nimport type { GetTableRowByCellTextOptions, RowIdentifier, TableRows } from '../common';\nimport { createMarkdownTable } from '../common';\n\nfunction getColumnHeaderIndex(tableElement: HTMLElement, columnHeaderName: string | RegExp): number {\n const columnHeader = within(tableElement).getByRole('columnheader', { name: columnHeaderName });\n const columnHeaderIndex = Array.from(columnHeader.parentElement?.children ?? []).indexOf(columnHeader);\n return columnHeaderIndex;\n}\n\n/**\n * Returns the table row that contains the specified `cellText`. The `cellText`\n * must be in the column with name `columnHeaderName` if it is specified. Otherwise,\n * the `cellText` must be in the first column. Throws an error if either multiple\n * rows or no rows can be found that match the given options. Also throws an error\n * if the column with name `columnHeaderName` cannot be found.\n *\n * @param tableElement The HTMLElement representing the table to query in. This is likely\n * a `<div role=\"table\">` element, so it can be queried by `screen.getByRole('table')`.\n * @param cellText The cell text that uniquely identifies the row.\n * @param columnHeaderName The name of the column to search the text for. If not provided,\n * the first column will be used.\n */\nexport function getTableRowByCellText(\n tableElement: HTMLElement,\n cellText: string,\n { columnHeaderName }: GetTableRowByCellTextOptions = {},\n): HTMLElement {\n const columnHeaderIndex = columnHeaderName === undefined ? 0 : getColumnHeaderIndex(tableElement, columnHeaderName);\n\n const matchingRows = within(tableElement)\n .getAllByRole('row')\n // Skip first row (table header)\n .slice(1)\n .filter((row) => {\n const cells = within(row).getAllByRole('cell');\n const cell = cells[columnHeaderIndex];\n const cellContainsText = within(cell).queryByText(cellText) !== null;\n return cellContainsText;\n });\n\n if (matchingRows.length === 0) {\n throw queryHelpers.getElementError(\n `Unable to find a table row with text \"${cellText}\" in the column \"${columnHeaderName}\"`,\n tableElement,\n );\n }\n\n if (matchingRows.length > 1) {\n throw queryHelpers.getElementError(\n `Found multiple table rows with text \"${cellText}\" in the column \"${columnHeaderName}\"`,\n tableElement,\n );\n }\n\n return matchingRows[0];\n}\n\n/**\n * Converts a dbui table to a markdown table string. This means that each cell\n * is separated by a pipe (including the edges), the header row is on its own line\n * at the top, each data row is on its own line below, and the header row is separated\n * by a row of dashes from the data rows. This is useful for checking table contents\n * in tests.\n *\n * @param tableElement The HTMLElement representing the table to query in. This is likely\n * a `<div role=\"table\">` element, so it can be queried by `screen.getByRole('table')`.\n *\n * @example\n * The HTML table:\n * ```jsx\n * <Table>\n * <TableRow isHeader>\n * <TableHeader>Name</TableHeader>\n * <TableHeader>Fruit</TableHeader>\n * </TableRow>\n * <TableRow>\n * <TableCell>Alice</TableCell>\n * <TableCell>Apple</TableCell>\n * </TableRow>\n * <TableRow>\n * <TableCell>Brady</TableCell>\n * <TableCell>Banana</TableCell>\n * </TableRow>\n * </Table>\n * ```\n *\n * The Markdown table:\n * ```md\n * | Name | Fruit |\n * | --- | --- |\n * | Alice | Apple |\n * | Brady | Banana |\n * ```\n */\nexport function toMarkdownTable(tableElement: HTMLElement): string {\n const { bodyRows, headerRow } = getTableRows(tableElement);\n const columns = within(headerRow)\n .getAllByRole('columnheader')\n .map((column) => column.textContent ?? '');\n const rows = bodyRows.map((row) =>\n within(row)\n .getAllByRole('cell')\n .map((cell) => cell.textContent ?? ''),\n );\n return createMarkdownTable(columns, rows);\n}\n\n/**\n * Returns the header row and all body rows (non-header rows) in order. Assumes that the\n * `tableElement` has a single header row (as the first row) and the rest of the rows are\n * body rows.\n *\n * @param tableElement The HTMLElement representing the table to query in. This is likely\n * a `<div role=\"table\">` element, so it can be queried by `screen.getByRole('table')`.\n */\nexport function getTableRows(tableElement: HTMLElement): TableRows<HTMLElement> {\n const [firstRow, ...restRows] = within(tableElement).getAllByRole('row');\n return {\n bodyRows: restRows,\n headerRow: firstRow,\n };\n}\n\n/**\n * Returns the table cell in the specified table row corresponding to the given\n * `columnHeaderName`. This is useful for checking that a row has a particular value\n * for a given column, especially when there are duplicate values in the column.\n *\n * @example\n * The HTML table:\n * ```jsx\n * <Table>\n * <TableRow isHeader>\n * <TableHeader>Name</TableHeader>\n * <TableHeader>Age</TableHeader>\n * </TableRow>\n * <TableRow>\n * <TableCell>Alex</TableCell>\n * <TableCell>25</TableCell>\n * </TableRow>\n * <TableRow>\n * <TableCell>Brenda</TableCell>\n * <TableCell>39</TableCell>\n * </TableRow>\n * <TableRow>\n * <TableCell>Carlos</TableCell>\n * <TableCell>39</TableCell>\n * </TableRow>\n * </Table>\n * ```\n *\n * ```js\n * const table = screen.getByRole('table');\n * const result = getTableCellInRow(table, { cellText: 'Carlos' }, 'Age');\n * expect(result.textContent).toEqual('39');\n * ```\n */\nexport function getTableCellInRow(\n tableElement: HTMLElement,\n row: RowIdentifier,\n columnHeaderName: string | RegExp,\n): HTMLElement {\n const tableRowElement = getTableRowByCellText(tableElement, row.cellText, { columnHeaderName: row.columnHeaderName });\n const columnHeaderIndex = getColumnHeaderIndex(tableElement, columnHeaderName);\n const cells = within(tableRowElement).getAllByRole('cell');\n const cell = cells[columnHeaderIndex];\n return cell;\n}\n","import userEvent from '@testing-library/user-event';\n\n/**\n * Opens the dropdown menu by clicking on the dropdown button.\n *\n * @param dropdownButton - The Dropdown Trigger button that opens the menu when clicked.\n */\nexport const openDropdownMenu = async (dropdownButton: HTMLElement): Promise<void> => {\n // eslint-disable-next-line @databricks/no-userevent-type\n await userEvent.type(dropdownButton, '{arrowdown}');\n};\n"],"names":["normalizeText","text","replace","trim","getDisplayLabel","combobox","textContent","getListbox","id","getAttribute","queryHelpers","getElementError","listbox","ownerDocument","getElementById","body","getOptions","within","getAllByRole","getOptionNames","options","map","option","computeAccessibleName","duBoisClassPrefix","selectClasses","clear","item","list","open","removeItem","selector","createMarkdownTable","columns","rows","headerRow","join","separatorRow","fill","dataRows","row","markdownTable","getRootElement","element","closest","parentElement","classList","contains","Error","getOptionsList","select","input","getByRole","listId","optionsList","querySelector","openMenu","userEvent","click","pointerEventsCheck","waitFor","closeMenu","getLabelText","removeMultiSelectOption","optionItem","getByText","multiSelect","i","length","singleSelect","clearAll","clearBtn","getAllOptions","querySelectorAll","forEach","push","createNewOption","selectInput","type","getSelectedOptionLabelFromTrigger","name","screen","getSelectedOptionValueFromTrigger","getSelectedOptionFromTrigger","label","value","expectSelectedOptionFromTriggerToBe","expect","toBe","toggleSelect","fireEvent","expectSelectToBeOpen","queryAllByRole","not","toHaveLength","expectSelectToBeClosed","getOptionsLength","flatMap","expectOptionsLengthToBe","getUnselectedOption","selected","getSelectedOption","getOption","selectOption","expectSelectedOptionToBe","selectedOption","find","toHaveTextContent","simpleSelectTestUtils","getTriggerRole","variant","displayMode","getScope","container","getAccordionTrigger","queryAccordionTrigger","queryByRole","getAccordionRegion","queryAccordionRegion","isAccordionPanelExpanded","expandAccordionPanel","user","trigger","collapseAccordionPanel","isSwitchChecked","toggle","checked","getColumnHeaderIndex","tableElement","columnHeaderName","columnHeader","columnHeaderIndex","Array","from","children","indexOf","getTableRowByCellText","cellText","undefined","matchingRows","slice","filter","cells","cell","cellContainsText","queryByText","toMarkdownTable","bodyRows","getTableRows","column","firstRow","restRows","getTableCellInRow","tableRowElement","openDropdownMenu","dropdownButton"],"mappings":";;;;;AAIA,SAASA,cAAcC,IAAY,EAAA;AACjC,IAAA,OAAOA,IAAAA,CAAKC,OAAO,CAAC,MAAA,EAAQ,KAAKC,IAAI,EAAA;AACvC;AAEA;;;IAIO,SAASC,eAAAA,CAAgBC,QAAqB,EAAA;IACnD,OAAOL,aAAAA,CAAcK,QAAAA,CAASC,WAAW,IAAI,EAAA,CAAA;AAC/C;AAEA;;;;;;;;;;;IAYO,SAASC,UAAAA,CAAWF,QAAqB,EAAA;IAC9C,MAAMG,EAAAA,GAAKH,QAAAA,CAASI,YAAY,CAAC,eAAA,CAAA;AACjC,IAAA,IAAI,CAACD,EAAAA,EAAI;QACP,MAAME,YAAAA,CAAaC,eAAe,CAChC,wHAAA,EACAN,QAAAA,CAAAA;AAEJ,IAAA;AACA,IAAA,MAAMO,OAAAA,GAAUP,QAAAA,CAASQ,aAAa,CAACC,cAAc,CAACN,EAAAA,CAAAA;AACtD,IAAA,IAAI,CAACI,OAAAA,EAAS;AACZ,QAAA,MAAMF,aAAaC,eAAe,CAChC,sGACAN,QAAAA,CAASQ,aAAa,CAACE,IAAI,CAAA;AAE/B,IAAA;IACA,OAAOH,OAAAA;AACT;AAEA;;;IAIO,SAASI,UAAAA,CAAWX,QAAqB,EAAA;AAC9C,IAAA,MAAMO,UAAUL,UAAAA,CAAWF,QAAAA,CAAAA;IAC3B,OAAOY,MAAAA,CAAOL,OAAAA,CAAAA,CAASM,YAAY,CAAC,QAAA,CAAA;AACtC;AAEA;;IAGO,SAASC,cAAAA,CAAed,QAAqB,EAAA;AAClD,IAAA,MAAMe,UAAUJ,UAAAA,CAAWX,QAAAA,CAAAA;AAC3B,IAAA,OAAOe,OAAAA,CAAQC,GAAG,CAAC,CAACC,SAAWC,qBAAAA,CAAsBD,MAAAA,CAAAA,CAAAA;AACvD;;;;;;;;;;AC7DA,MAAME,iBAAAA,GAAoB,eAAA;AAE1B;;IAGO,MAAMC,aAAAA,GAAgB;IAC3BC,KAAAA,EAAO,CAAA,EAAGF,iBAAAA,CAAkB,aAAa,CAAC;IAC1CG,IAAAA,EAAM,CAAA,EAAGH,iBAAAA,CAAkB,sBAAsB,CAAC;IAClDI,IAAAA,EAAM,iBAAA;IACNC,IAAAA,EAAM,CAAA,EAAGL,iBAAAA,CAAkB,YAAY,CAAC;IACxCF,MAAAA,EAAQ,CAAA,EAAGE,iBAAAA,CAAkB,2BAA2B,CAAC;IACzDM,UAAAA,EAAY,CAAA,EAAGN,iBAAAA,CAAkB,6BAA6B,CAAC;IAC/DO,QAAAA,EAAU,CAAA,EAAGP,iBAAAA,CAAkB,gBAAgB;AACjD,CAAA;AAkBA;;;;;;;;;;;;AAYC,IACM,SAASQ,mBAAAA,CAAoBC,OAAiB,EAAEC,IAAgB,EAAA;IACrE,MAAMC,SAAAA,GAAY,CAAC,EAAE,EAAEF,QAAQG,IAAI,CAAC,KAAA,CAAA,CAAO,EAAE,CAAC;AAC9C,IAAA,MAAMC,YAAAA,GAAe,CAAC,EAAE,EAAEJ,OAAAA,CAAQK,IAAI,CAAC,KAAA,CAAA,CAAOF,IAAI,CAAC,KAAA,CAAA,CAAO,EAAE,CAAC;AAC7D,IAAA,MAAMG,WAAW,CAAA,EAAGL,IAAAA,CAAKb,GAAG,CAAC,CAACmB,MAAQ,CAAC,EAAE,EAAEA,GAAAA,CAAIJ,IAAI,CAAC,KAAA,CAAA,CAAO,EAAE,CAAC,CAAA,CAAEA,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO;IAC5E,MAAMK,aAAAA,GAAgB,GAAGN,SAAAA,CAAU,EAAE,EAAEE,YAAAA,CAAa,EAAE,EAAEE,QAAAA,CAAAA,CAAU;IAClE,OAAOE,aAAAA;AACT;;AC5CA;;;;;;;;IASA,SAASC,eAAeC,OAAoB,EAAA;AAC1C,IAAA,IAAIA,OAAAA,CAAQlC,YAAY,CAAC,MAAA,CAAA,KAAY,UAAA,EAAY;QAC/CkC,OAAAA,GAAUA,OAAAA,CAAQC,OAAO,CAAC,CAAC,CAAC,EAAEnB,aAAAA,CAAcM,QAAQ,CAAA,CAAE,CAAA,CAAGc,aAAa;AACxE,IAAA;AACA,IAAA,IAAIF,OAAAA,CAAQG,SAAS,CAACC,QAAQ,CAAC,YAAA,CAAA,EAAe;AAC5C,QAAA,MAAM,IAAIC,KAAAA,CAAM,qDAAA,CAAA;AAClB,IAAA;IACA,OAAOL,OAAAA;AACT;AAEA,SAASM,eAAeC,MAAmB,EAAA;AACzC,IAAA,MAAMnC,IAAAA,GAAOmC,MAAAA,CAAOrC,aAAa,CAACE,IAAI;AACtC,IAAA,MAAMoC,KAAAA,GAAQlC,MAAAA,CAAOiC,MAAAA,CAAAA,CAAQE,SAAS,CAAC,UAAA,CAAA;AACvC,IAAA,MAAMC,SAASF,KAAAA,CAAM1C,YAAY,CAAC,WAAA,CAAA,IAAgB0C,KAAAA,CAAM1C,YAAY,CAAC,eAAA,CAAA;AACrE,IAAA,IAAI,CAAC4C,MAAAA,EAAQ;QACX,MAAM3C,YAAAA,CAAaC,eAAe,CAAC,gDAAA,EAAkDI,IAAAA,CAAAA;AACvF,IAAA;AAEA,IAAA,MAAMH,OAAAA,GAAUsC,MAAAA,CAAOrC,aAAa,CAACC,cAAc,CAACuC,MAAAA,CAAAA;IACpD,IAAI,CAACzC,SAASiC,aAAAA,EAAe;QAC3B,MAAMnC,YAAAA,CAAaC,eAAe,CAAC,wCAAA,EAA0CI,IAAAA,CAAAA;AAC/E,IAAA;IAEA,MAAMuC,WAAAA,GAAc1C,OAAAA,CAAQiC,aAAa,CAACU,aAAa,CAAc,CAAC,CAAC,EAAE9B,aAAAA,CAAcG,IAAI,CAAA,CAAE,CAAA;AAC7F,IAAA,IAAI,CAAC0B,WAAAA,EAAa;QAChB,MAAM5C,YAAAA,CAAaC,eAAe,CAAC,wBAAA,EAA0BI,IAAAA,CAAAA;AAC/D,IAAA;IAEA,OAAOuC,WAAAA;AACT;AAEA;;;IAIO,eAAeE,QAAAA,CAASN,MAAmB,EAAA;AAChDA,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;AACxB,IAAA,IAAIA,OAAOJ,SAAS,CAACC,QAAQ,CAACtB,aAAAA,CAAcI,IAAI,CAAA,EAAG;QACjD,MAAMnB,YAAAA,CAAaC,eAAe,CAAC,wBAAA,EAA0BuC,MAAAA,CAAAA;AAC/D,IAAA;IACA,MAAMnB,QAAAA,GAAWmB,OAAOK,aAAa,CAAC,CAAC,CAAC,EAAE9B,aAAAA,CAAcM,QAAQ,CAAA,CAAE,CAAA;AAClE,IAAA,IAAI,CAACA,QAAAA,EAAU;QACb,MAAMrB,YAAAA,CAAaC,eAAe,CAAC,oBAAA,EAAsBuC,MAAAA,CAAAA;AAC3D,IAAA;IACA,MAAMO,SAAAA,CAAUC,KAAK,CAAC3B,QAAAA,EAAU;QAAE4B,kBAAAA,EAAoB;AAAE,KAAA,CAAA;AACxD,IAAA,MAAMC,OAAAA,CAAQ,IAAA;QACZ,IAAI,CAACV,OAAOJ,SAAS,CAACC,QAAQ,CAACtB,aAAAA,CAAcI,IAAI,CAAA,EAAG;YAClD,MAAMnB,YAAAA,CAAaC,eAAe,CAAC,qBAAA,EAAuBuC,MAAAA,CAAAA;AAC5D,QAAA;AACF,IAAA,CAAA,CAAA;AACF;AAEA;;;IAIO,eAAeW,SAAAA,CAAUX,MAAmB,EAAA;AACjDA,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;IACxB,IAAI,CAACA,OAAOJ,SAAS,CAACC,QAAQ,CAACtB,aAAAA,CAAcI,IAAI,CAAA,EAAG;QAClD,MAAMnB,YAAAA,CAAaC,eAAe,CAAC,0BAAA,EAA4BuC,MAAAA,CAAAA;AACjE,IAAA;IACA,MAAMnB,QAAAA,GAAWmB,OAAOK,aAAa,CAAC,CAAC,CAAC,EAAE9B,aAAAA,CAAcM,QAAQ,CAAA,CAAE,CAAA;AAClE,IAAA,IAAI,CAACA,QAAAA,EAAU;QACb,MAAMrB,YAAAA,CAAaC,eAAe,CAAC,oBAAA,EAAsBuC,MAAAA,CAAAA;AAC3D,IAAA;IACA,MAAMO,SAAAA,CAAUC,KAAK,CAAC3B,QAAAA,EAAU;QAAE4B,kBAAAA,EAAoB;AAAE,KAAA,CAAA;AACxD,IAAA,MAAMC,OAAAA,CAAQ,IAAA;AACZ,QAAA,IAAIV,OAAOJ,SAAS,CAACC,QAAQ,CAACtB,aAAAA,CAAcI,IAAI,CAAA,EAAG;YACjD,MAAMnB,YAAAA,CAAaC,eAAe,CAAC,sBAAA,EAAwBuC,MAAAA,CAAAA;AAC7D,QAAA;AACF,IAAA,CAAA,CAAA;AACF;AAEA;;IAGO,SAASY,YAAAA,CAAaZ,MAAmB,EAAA;AAC9CA,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;IACxB,MAAMnB,QAAAA,GAAWmB,OAAOK,aAAa,CAAC,CAAC,CAAC,EAAE9B,aAAAA,CAAcM,QAAQ,CAAA,CAAE,CAAA;AAClE,IAAA,IAAI,CAACA,QAAAA,EAAU;QACb,MAAMrB,YAAAA,CAAaC,eAAe,CAAC,oBAAA,EAAsBuC,MAAAA,CAAAA;AAC3D,IAAA;;;;IAIA,OAAOnB,QAAAA,CAASzB,WAAW,EAAEH,IAAAA,EAAAA,IAAU,EAAA;AACzC;AAEA;;;;AAIC,IACM,eAAe4D,uBAAAA,CAAwBb,MAAmB,EAAE5B,MAAc,EAAA;AAC/E4B,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;IACxB,MAAMnB,QAAAA,GAAWmB,OAAOK,aAAa,CAAc,CAAC,CAAC,EAAE9B,aAAAA,CAAcM,QAAQ,CAAA,CAAE,CAAA;AAC/E,IAAA,IAAI,CAACA,QAAAA,EAAU;QACb,MAAMrB,YAAAA,CAAaC,eAAe,CAAC,oBAAA,EAAsBuC,MAAAA,CAAAA;AAC3D,IAAA;AACA,IAAA,MAAMc,UAAAA,GAAa/C,MAAAA,CAAOc,QAAAA,CAAAA,CAAUkC,SAAS,CAAC3C,MAAAA,CAAAA,CAAQsB,OAAO,CAAC,CAAC,CAAC,EAAEnB,aAAAA,CAAcE,IAAI,CAAA,CAAE,CAAA;AACtF,IAAA,IAAIqC,eAAe,IAAA,EAAM;QACvB,MAAMtD,YAAAA,CAAaC,eAAe,CAAC,CAAC,QAAQ,EAAEW,MAAAA,CAAO,WAAW,CAAC,EAAE4B,MAAAA,CAAAA;AACrE,IAAA;IACA,MAAMpB,UAAAA,GAAakC,WAAWT,aAAa,CAAC,CAAC,CAAC,EAAE9B,aAAAA,CAAcK,UAAU,CAAA,CAAE,CAAA;AAC1E,IAAA,IAAIA,eAAe,IAAA,EAAM;QACvB,MAAMpB,YAAAA,CAAaC,eAAe,CAAC,CAAC,0BAA0B,EAAEW,MAAAA,CAAO,WAAW,CAAC,EAAE0C,UAAAA,CAAAA;AACvF,IAAA;IACA,MAAMP,SAAAA,CAAUC,KAAK,CAAC5B,UAAAA,CAAAA;AACxB;AAEA;;;;;;AAMC,IACM,eAAeoC,WAAAA,CAAYhB,MAAmB,EAAE9B,OAA4B,EAAA;AACjF8B,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;AACxB,IAAA,MAAMM,QAAAA,CAASN,MAAAA,CAAAA;AACf,IAAA,MAAMI,cAAcL,cAAAA,CAAeC,MAAAA,CAAAA;AACnC,IAAA,IAAK,IAAIiB,CAAAA,GAAI,CAAA,EAAGA,IAAI/C,OAAAA,CAAQgD,MAAM,EAAED,CAAAA,EAAAA,CAAK;QACvC,MAAM7C,MAAAA,GAASF,OAAO,CAAC+C,CAAAA,CAAE;AACzB,QAAA,MAAMH,UAAAA,GAAa/C,MAAAA,CAAOqC,WAAAA,CAAAA,CAAaW,SAAS,CAAC3C,MAAAA,CAAAA;QACjD,MAAMmC,SAAAA,CAAUC,KAAK,CAACM,UAAAA,EAAY;YAAEL,kBAAAA,EAAoB;AAAE,SAAA,CAAA;AAC5D,IAAA;;AAEA,IAAA,MAAME,SAAAA,CAAUX,MAAAA,CAAAA;AAClB;AAEA;;;;;;AAMC,IACM,eAAemB,YAAAA,CAAanB,MAAmB,EAAE5B,MAAuB,EAAA;AAC7E4B,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;AACxB,IAAA,MAAMM,QAAAA,CAASN,MAAAA,CAAAA;AACf,IAAA,MAAMI,cAAcL,cAAAA,CAAeC,MAAAA,CAAAA;AACnC,IAAA,MAAMc,UAAAA,GAAa/C,MAAAA,CAAOqC,WAAAA,CAAAA,CAAaW,SAAS,CAAC3C,MAAAA,CAAAA;IACjD,MAAMmC,SAAAA,CAAUC,KAAK,CAACM,UAAAA,EAAY;QAAEL,kBAAAA,EAAoB;AAAE,KAAA,CAAA;AAC1D;AACF;AAEA;;;IAIO,eAAeW,QAAAA,CAASpB,MAAmB,EAAA;AAChDA,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;IACxB,MAAMqB,QAAAA,GAAWrB,OAAOK,aAAa,CAAC,CAAC,CAAC,EAAE9B,aAAAA,CAAcC,KAAK,CAAA,CAAE,CAAA;AAC/D,IAAA,IAAI,CAAC6C,QAAAA,EAAU;QACb,MAAM7D,YAAAA,CAAaC,eAAe,CAAC,sBAAA,EAAwBuC,MAAAA,CAAAA;AAC7D,IAAA;IACA,MAAMO,SAAAA,CAAUC,KAAK,CAACa,QAAAA,CAAAA;AACxB;AAEA;;;IAIO,eAAeC,eAAAA,CAActB,MAAmB,EAAA;AACrDA,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;AACxB,IAAA,MAAMM,QAAAA,CAASN,MAAAA,CAAAA;AACf,IAAA,MAAMI,cAAcL,cAAAA,CAAeC,MAAAA,CAAAA;AACnC,IAAA,MAAM9B,UAAoB,EAAE;IAC5BkC,WAAAA,CAAYmB,gBAAgB,CAAC,CAAC,CAAC,EAAEhD,aAAAA,CAAcH,MAAM,CAAA,CAAE,CAAA,CAAEoD,OAAO,CAAC,CAACpD,MAAAA,GAAAA;QAChE,IAAIA,MAAAA,CAAOhB,WAAW,KAAK,IAAA,EAAM;YAC/B,MAAMI,YAAAA,CAAaC,eAAe,CAAC,4BAAA,EAA8BW,MAAAA,CAAAA;AACnE,QAAA;QACAF,OAAAA,CAAQuD,IAAI,CAACrD,MAAAA,CAAOhB,WAAW,CAAA;AACjC,IAAA,CAAA,CAAA;AACA,IAAA,MAAMuD,SAAAA,CAAUX,MAAAA,CAAAA;IAChB,OAAO9B,OAAAA;AACT;AAEA;;;AAGC,IACM,eAAewD,eAAAA,CAAgB1B,MAAmB,EAAE5B,MAAc,EAAA;AACvE4B,IAAAA,MAAAA,GAASR,cAAAA,CAAeQ,MAAAA,CAAAA;AACxB,IAAA,MAAM2B,WAAAA,GAAc5D,MAAAA,CAAOiC,MAAAA,CAAAA,CAAQE,SAAS,CAAmB,UAAA,CAAA;;IAE/D,MAAMK,SAAAA,CAAUqB,IAAI,CAACD,WAAAA,EAAavD,MAAAA,CAAAA;AAClC,IAAA,MAAMgC,cAAcL,cAAAA,CAAeC,MAAAA,CAAAA;AACnC,IAAA,MAAMc,UAAAA,GAAa/C,MAAAA,CAAOqC,WAAAA,CAAAA,CAAaW,SAAS,CAAC3C,MAAAA,CAAAA;IACjD,MAAMmC,SAAAA,CAAUC,KAAK,CAACM,UAAAA,CAAAA;AACtB,IAAA,MAAMH,SAAAA,CAAUX,MAAAA,CAAAA;AAClB;;;;;;;;;;;;;;;AC1MA;AACA,MAAM6B,oCAAoC,CAACC,IAAAA,GAAAA;IACzC,OAAOC,MAAAA,CAAO7B,SAAS,CAAC,UAAA,EAAY;AAAE4B,QAAAA;AAAK,KAAA,CAAA,CAAG1E,WAAW;AAC3D,CAAA;AAEA,MAAM4E,oCAAoC,CAACF,IAAAA,GAAAA;IACzC,OAAOC,MAAAA,CAAO7B,SAAS,CAAC,UAAA,EAAY;AAAE4B,QAAAA;AAAK,KAAA,CAAA,CAAGvE,YAAY,CAAC,OAAA,CAAA;AAC7D,CAAA;AAEA,MAAM0E,+BAA+B,CAACH,IAAAA,GAAAA;AACpC,IAAA,MAAMI,QAAQL,iCAAAA,CAAkCC,IAAAA,CAAAA;AAChD,IAAA,MAAMK,QAAQH,iCAAAA,CAAkCF,IAAAA,CAAAA;IAChD,OAAO;AAAEI,QAAAA,KAAAA;AAAOC,QAAAA;AAAM,KAAA;AACxB,CAAA;AAEA,MAAMC,mCAAAA,GAAsC,CAACF,KAAAA,EAAwBJ,IAAAA,GAAAA;IACnEO,MAAAA,CAAOR,iCAAAA,CAAkCC,IAAAA,CAAAA,CAAAA,CAAOQ,IAAI,CAACJ,KAAAA,CAAAA;AACvD,CAAA;AAEA,MAAMK,eAAe,CAACT,IAAAA,GAAAA;AACpBU,IAAAA,SAAAA,CAAUhC,KAAK,CAACuB,MAAAA,CAAO7B,SAAS,CAAC,UAAA,EAAY;AAAE4B,QAAAA;AAAK,KAAA,CAAA,CAAA;AACtD,CAAA;AAEA,MAAMW,oBAAAA,GAAuB,IAAA;AAC3BJ,IAAAA,MAAAA,CAAON,OAAOW,cAAc,CAAC,WAAWC,GAAG,CAACC,YAAY,CAAC,CAAA,CAAA;AAC3D,CAAA;AAEA,MAAMC,sBAAAA,GAAyB,IAAA;AAC7BR,IAAAA,MAAAA,CAAON,MAAAA,CAAOW,cAAc,CAAC,QAAA,CAAA,CAAA,CAAWE,YAAY,CAAC,CAAA,CAAA;AACvD,CAAA;AAEA;AACA,MAAME,gBAAAA,GAAmB,IAAA;AACvB,IAAA,OAAOf,MAAAA,CAAO/D,YAAY,CAAC,QAAA,CAAA,CAAUkD,MAAM;AAC7C,CAAA;AAEA,MAAMI,aAAAA,GAAgB,IAAA;IACpB,OAAOS,MAAAA,CAAO/D,YAAY,CAAC,QAAA,CAAA,CAAU+E,OAAO,CAAC,CAAC3E,MAAAA,GAAWA,MAAAA,CAAOhB,WAAW,CAAA;AAC7E,CAAA;AAEA,MAAM4F,0BAA0B,CAAC9B,MAAAA,GAAAA;IAC/BmB,MAAAA,CAAOS,gBAAAA,EAAAA,CAAAA,CAAoBR,IAAI,CAACpB,MAAAA,CAAAA;AAClC,CAAA;AAEA,MAAM+B,sBAAsB,CAACf,KAAAA,GAAAA;IAC3B,OAAOH,MAAAA,CAAO7B,SAAS,CAAC,QAAA,EAAU;QAAE4B,IAAAA,EAAMI,KAAAA;QAAOgB,QAAAA,EAAU;AAAM,KAAA,CAAA;AACnE,CAAA;AAEA,MAAMC,oBAAoB,CAACjB,KAAAA,GAAAA;IACzB,OAAOH,MAAAA,CAAO7B,SAAS,CAAC,QAAA,EAAU;QAAE4B,IAAAA,EAAMI,KAAAA;QAAOgB,QAAAA,EAAU;AAAM,KAAA,CAAA;AACnE,CAAA;AAEA,MAAME,YAAY,CAAClB,KAAAA,GAAAA;IACjB,OAAOH,MAAAA,CAAO7B,SAAS,CAAC,QAAA,EAAU;QAAE4B,IAAAA,EAAMI;AAAM,KAAA,CAAA;AAClD,CAAA;AAEA,MAAMmB,eAAe,CAACnB,KAAAA,GAAAA;AACpBM,IAAAA,SAAAA,CAAUhC,KAAK,CAACuB,MAAAA,CAAO7B,SAAS,CAAC,QAAA,EAAU;QAAE4B,IAAAA,EAAMI;AAAM,KAAA,CAAA,CAAA;AAC3D,CAAA;AAEA,MAAMoB,2BAA2B,CAACpB,KAAAA,GAAAA;IAChC,MAAMhE,OAAAA,GAAU6D,MAAAA,CAAO/D,YAAY,CAAC,QAAA,CAAA;IACpC,MAAMuF,cAAAA,GAAiBrF,QAAQsF,IAAI,CAAC,CAACpF,MAAAA,GAAWA,MAAAA,CAAOb,YAAY,CAAC,eAAA,CAAA,KAAqB,MAAA,CAAA;IACzF8E,MAAAA,CAAOkB,cAAAA,CAAAA,CAAgBE,iBAAiB,CAACvB,KAAAA,CAAAA;AAC3C,CAAA;MAEawB,qBAAAA,GAgBT;AACF7B,IAAAA,iCAAAA;AACAG,IAAAA,iCAAAA;AACAC,IAAAA,4BAAAA;AACAG,IAAAA,mCAAAA;AACAG,IAAAA,YAAAA;AACAE,IAAAA,oBAAAA;AACAI,IAAAA,sBAAAA;AACAC,IAAAA,gBAAAA;AACAxB,IAAAA,aAAAA;AACA0B,IAAAA,uBAAAA;AACAC,IAAAA,mBAAAA;AACAE,IAAAA,iBAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,YAAAA;AACAC,IAAAA;AACF;;AC3EA,MAAMK,cAAAA,GAAiB,CAAC,EAAEC,OAAO,EAAEC,WAAAA,GAAc,UAAU,EAAyB,GAClFD,OAAAA,KAAY,MAAA,IAAUC,WAAAA,KAAgB,WAAW,KAAA,GAAQ,QAAA;AAE3D,MAAMC,QAAAA,GAAW,CAACC,SAAAA,GAAwCA,SAAAA,GAAYhG,OAAOgG,SAAAA,CAAAA,GAAahC,MAAAA;AAE1F;;AAEC,IACM,MAAMiC,mBAAAA,GAAsB,CAAClC,IAAAA,EAAuB5D,OAAAA,GACzD4F,QAAAA,CAAS5F,OAAAA,CAAQ6F,SAAS,CAAA,CAAE7D,SAAS,CAACyD,eAAezF,OAAAA,CAAAA,EAAU;AAAE4D,QAAAA;KAAK;AAExE;;AAEC,IACM,MAAMmC,qBAAAA,GAAwB,CAACnC,IAAAA,EAAuB5D,OAAAA,GAC3D4F,QAAAA,CAAS5F,OAAAA,CAAQ6F,SAAS,CAAA,CAAEG,WAAW,CAACP,eAAezF,OAAAA,CAAAA,EAAU;AAAE4D,QAAAA;KAAK;AAE1E;;;;;;AAMC,IACM,MAAMqC,kBAAAA,GAAqB,CAACrC,MAAuB5D,OAAAA,GAAuC,EAAE,GACjG4F,SAAS5F,OAAAA,CAAQ6F,SAAS,CAAA,CAAE7D,SAAS,CAAC,QAAA,EAAU;AAAE4B,QAAAA;KAAK;AAElD,MAAMsC,oBAAAA,GAAuB,CAClCtC,IAAAA,EACA5D,UAAuC,EAAE,GAClB4F,QAAAA,CAAS5F,OAAAA,CAAQ6F,SAAS,CAAA,CAAEG,WAAW,CAAC,QAAA,EAAU;AAAEpC,QAAAA;KAAK;AAE3E,MAAMuC,wBAAAA,GAA2B,CAACvC,IAAAA,EAAuB5D,OAAAA,GAC9D8F,mBAAAA,CAAoBlC,IAAAA,EAAM5D,OAAAA,CAAAA,CAASX,YAAY,CAAC,eAAA,CAAA,KAAqB;AAEvE;;;AAGC,IACM,MAAM+G,oBAAAA,GAAuB,OAClCC,MACAzC,IAAAA,EACA5D,OAAAA,GAAAA;IAEA,MAAMsG,OAAAA,GAAUR,oBAAoBlC,IAAAA,EAAM5D,OAAAA,CAAAA;AAC1C,IAAA,IAAIsG,OAAAA,CAAQjH,YAAY,CAAC,eAAA,CAAA,KAAqB,MAAA,EAAQ;QACpD,MAAMgH,IAAAA,CAAK/D,KAAK,CAACgE,OAAAA,CAAAA;AACnB,IAAA;IACA,OAAOA,OAAAA;AACT;AAEA;;;AAGC,IACM,MAAMC,sBAAAA,GAAyB,OACpCF,MACAzC,IAAAA,EACA5D,OAAAA,GAAAA;IAEA,MAAMsG,OAAAA,GAAUR,oBAAoBlC,IAAAA,EAAM5D,OAAAA,CAAAA;AAC1C,IAAA,IAAIsG,OAAAA,CAAQjH,YAAY,CAAC,eAAA,CAAA,KAAqB,MAAA,EAAQ;QACpD,MAAMgH,IAAAA,CAAK/D,KAAK,CAACgE,OAAAA,CAAAA;AACnB,IAAA;IACA,OAAOA,OAAAA;AACT;;AC5FA;;;;;;;;;;;;IAaO,SAASE,eAAAA,CAAgBC,MAAe,EAAA;IAC7C,OAAOA,MAAAA,CAAOpH,YAAY,CAAC,cAAA,CAAA,KAAoB,UAAU,MAACoH,CAA4BC,OAAO,KAAK,IAAA;AACpG;;ACVA,SAASC,oBAAAA,CAAqBC,YAAyB,EAAEC,gBAAiC,EAAA;AACxF,IAAA,MAAMC,YAAAA,GAAejH,MAAAA,CAAO+G,YAAAA,CAAAA,CAAc5E,SAAS,CAAC,cAAA,EAAgB;QAAE4B,IAAAA,EAAMiD;AAAiB,KAAA,CAAA;IAC7F,MAAME,iBAAAA,GAAoBC,KAAAA,CAAMC,IAAI,CAACH,YAAAA,CAAarF,aAAa,EAAEyF,QAAAA,IAAY,EAAE,CAAA,CAAEC,OAAO,CAACL,YAAAA,CAAAA;IACzF,OAAOC,iBAAAA;AACT;AAEA;;;;;;;;;;;;AAYC,IACM,SAASK,qBAAAA,CACdR,YAAyB,EACzBS,QAAgB,EAChB,EAAER,gBAAgB,EAAgC,GAAG,EAAE,EAAA;AAEvD,IAAA,MAAME,iBAAAA,GAAoBF,gBAAAA,KAAqBS,SAAAA,GAAY,CAAA,GAAIX,qBAAqBC,YAAAA,EAAcC,gBAAAA,CAAAA;AAElG,IAAA,MAAMU,eAAe1H,MAAAA,CAAO+G,YAAAA,CAAAA,CACzB9G,YAAY,CAAC,MACd;AACC0H,KAAAA,KAAK,CAAC,CAAA,CAAA,CACNC,MAAM,CAAC,CAACrG,GAAAA,GAAAA;AACP,QAAA,MAAMsG,KAAAA,GAAQ7H,MAAAA,CAAOuB,GAAAA,CAAAA,CAAKtB,YAAY,CAAC,MAAA,CAAA;QACvC,MAAM6H,IAAAA,GAAOD,KAAK,CAACX,iBAAAA,CAAkB;AACrC,QAAA,MAAMa,gBAAAA,GAAmB/H,MAAAA,CAAO8H,IAAAA,CAAAA,CAAME,WAAW,CAACR,QAAAA,CAAAA,KAAc,IAAA;QAChE,OAAOO,gBAAAA;AACT,IAAA,CAAA,CAAA;IAEF,IAAIL,YAAAA,CAAavE,MAAM,KAAK,CAAA,EAAG;AAC7B,QAAA,MAAM1D,YAAAA,CAAaC,eAAe,CAChC,CAAC,sCAAsC,EAAE8H,QAAAA,CAAS,iBAAiB,EAAER,gBAAAA,CAAiB,CAAC,CAAC,EACxFD,YAAAA,CAAAA;AAEJ,IAAA;IAEA,IAAIW,YAAAA,CAAavE,MAAM,GAAG,CAAA,EAAG;AAC3B,QAAA,MAAM1D,YAAAA,CAAaC,eAAe,CAChC,CAAC,qCAAqC,EAAE8H,QAAAA,CAAS,iBAAiB,EAAER,gBAAAA,CAAiB,CAAC,CAAC,EACvFD,YAAAA,CAAAA;AAEJ,IAAA;IAEA,OAAOW,YAAY,CAAC,CAAA,CAAE;AACxB;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqCO,SAASO,eAAAA,CAAgBlB,YAAyB,EAAA;AACvD,IAAA,MAAM,EAAEmB,QAAQ,EAAEhH,SAAS,EAAE,GAAGiH,YAAAA,CAAapB,YAAAA,CAAAA;AAC7C,IAAA,MAAM/F,OAAAA,GAAUhB,MAAAA,CAAOkB,SAAAA,CAAAA,CACpBjB,YAAY,CAAC,cAAA,CAAA,CACbG,GAAG,CAAC,CAACgI,MAAAA,GAAWA,MAAAA,CAAO/I,WAAW,IAAI,EAAA,CAAA;AACzC,IAAA,MAAM4B,OAAOiH,QAAAA,CAAS9H,GAAG,CAAC,CAACmB,MACzBvB,MAAAA,CAAOuB,GAAAA,CAAAA,CACJtB,YAAY,CAAC,QACbG,GAAG,CAAC,CAAC0H,IAAAA,GAASA,IAAAA,CAAKzI,WAAW,IAAI,EAAA,CAAA,CAAA;AAEvC,IAAA,OAAO0B,oBAAoBC,OAAAA,EAASC,IAAAA,CAAAA;AACtC;AAEA;;;;;;;IAQO,SAASkH,YAAAA,CAAapB,YAAyB,EAAA;IACpD,MAAM,CAACsB,UAAU,GAAGC,QAAAA,CAAS,GAAGtI,MAAAA,CAAO+G,YAAAA,CAAAA,CAAc9G,YAAY,CAAC,KAAA,CAAA;IAClE,OAAO;QACLiI,QAAAA,EAAUI,QAAAA;QACVpH,SAAAA,EAAWmH;AACb,KAAA;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCC,IACM,SAASE,iBAAAA,CACdxB,YAAyB,EACzBxF,GAAkB,EAClByF,gBAAiC,EAAA;AAEjC,IAAA,MAAMwB,eAAAA,GAAkBjB,qBAAAA,CAAsBR,YAAAA,EAAcxF,GAAAA,CAAIiG,QAAQ,EAAE;AAAER,QAAAA,gBAAAA,EAAkBzF,IAAIyF;AAAiB,KAAA,CAAA;IACnH,MAAME,iBAAAA,GAAoBJ,qBAAqBC,YAAAA,EAAcC,gBAAAA,CAAAA;AAC7D,IAAA,MAAMa,KAAAA,GAAQ7H,MAAAA,CAAOwI,eAAAA,CAAAA,CAAiBvI,YAAY,CAAC,MAAA,CAAA;IACnD,MAAM6H,IAAAA,GAAOD,KAAK,CAACX,iBAAAA,CAAkB;IACrC,OAAOY,IAAAA;AACT;;ACvKA;;;;IAKO,MAAMW,gBAAAA,GAAmB,OAAOC,cAAAA,GAAAA;;IAErC,MAAMlG,SAAAA,CAAUqB,IAAI,CAAC6E,cAAAA,EAAgB,aAAA,CAAA;AACvC;;;;"}
|