@galaxy-io/dls 1.0.3
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/README.md +42 -0
- package/dist/accordion/Accordion.d.ts +30 -0
- package/dist/accordion/Accordion.js +147 -0
- package/dist/animations/Fade.d.ts +6 -0
- package/dist/animations/Fade.js +22 -0
- package/dist/animations/Flashing.d.ts +3 -0
- package/dist/animations/Flashing.js +14 -0
- package/dist/animations/RotateWithTransition.d.ts +8 -0
- package/dist/animations/RotateWithTransition.js +28 -0
- package/dist/animations/ScaleFade.d.ts +6 -0
- package/dist/animations/ScaleFade.js +31 -0
- package/dist/animations/SpinAnimation.d.ts +7 -0
- package/dist/animations/SpinAnimation.js +20 -0
- package/dist/animations/SpinVerticalAnimation.d.ts +6 -0
- package/dist/animations/SpinVerticalAnimation.js +19 -0
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +3 -0
- package/dist/assets/components/GalaxyLogomarkDark.js +11 -0
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +3 -0
- package/dist/assets/components/GalaxyLogomarkLight.js +17 -0
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +3 -0
- package/dist/assets/components/GalaxyWordmarkDark.js +15 -0
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +3 -0
- package/dist/assets/components/GalaxyWordmarkLight.js +28 -0
- package/dist/assets/components/enrichment/PerplexityIcon.d.ts +3 -0
- package/dist/assets/components/enrichment/PerplexityIcon.js +35 -0
- package/dist/assets/components/enrichment/TavilyIcon.d.ts +3 -0
- package/dist/assets/components/enrichment/TavilyIcon.js +15 -0
- package/dist/assets/components/onboarding/TenantSetupDark.d.ts +3 -0
- package/dist/assets/components/onboarding/TenantSetupDark.js +498 -0
- package/dist/assets/components/onboarding/TenantSetupLight.d.ts +3 -0
- package/dist/assets/components/onboarding/TenantSetupLight.js +482 -0
- package/dist/assets/components/onboarding/UserSetupDark.d.ts +3 -0
- package/dist/assets/components/onboarding/UserSetupDark.js +1086 -0
- package/dist/assets/components/onboarding/UserSetupLight.d.ts +3 -0
- package/dist/assets/components/onboarding/UserSetupLight.js +1024 -0
- package/dist/assets/components/onboarding/WorkspaceSetupBuildDark.d.ts +3 -0
- package/dist/assets/components/onboarding/WorkspaceSetupBuildDark.js +466 -0
- package/dist/assets/components/onboarding/WorkspaceSetupBuildLight.d.ts +3 -0
- package/dist/assets/components/onboarding/WorkspaceSetupBuildLight.js +460 -0
- package/dist/assets/components/onboarding/WorkspaceSetupConnectDark.d.ts +3 -0
- package/dist/assets/components/onboarding/WorkspaceSetupConnectDark.js +336 -0
- package/dist/assets/components/onboarding/WorkspaceSetupConnectLight.d.ts +3 -0
- package/dist/assets/components/onboarding/WorkspaceSetupConnectLight.js +336 -0
- package/dist/assets/components/onboarding/WorkspaceSetupIntegrateDark.d.ts +3 -0
- package/dist/assets/components/onboarding/WorkspaceSetupIntegrateDark.js +153 -0
- package/dist/assets/components/onboarding/WorkspaceSetupIntegrateLight.d.ts +3 -0
- package/dist/assets/components/onboarding/WorkspaceSetupIntegrateLight.js +153 -0
- package/dist/assets/components/projects/MappingMethodAutoIntrospectDark.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodAutoIntrospectDark.js +117 -0
- package/dist/assets/components/projects/MappingMethodAutoIntrospectLight.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodAutoIntrospectLight.js +117 -0
- package/dist/assets/components/projects/MappingMethodBlankDark.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodBlankDark.js +150 -0
- package/dist/assets/components/projects/MappingMethodBlankDarkHovered.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodBlankDarkHovered.js +150 -0
- package/dist/assets/components/projects/MappingMethodBlankLight.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodBlankLight.js +150 -0
- package/dist/assets/components/projects/MappingMethodBlankLightHovered.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodBlankLightHovered.js +150 -0
- package/dist/assets/components/projects/MappingMethodJsonDark.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodJsonDark.js +90 -0
- package/dist/assets/components/projects/MappingMethodJsonDarkHovered.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodJsonDarkHovered.js +90 -0
- package/dist/assets/components/projects/MappingMethodJsonLight.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodJsonLight.js +90 -0
- package/dist/assets/components/projects/MappingMethodJsonLightHovered.d.ts +3 -0
- package/dist/assets/components/projects/MappingMethodJsonLightHovered.js +90 -0
- package/dist/assets/components/projects/ProjectsEmptyStateDark.d.ts +3 -0
- package/dist/assets/components/projects/ProjectsEmptyStateDark.js +454 -0
- package/dist/assets/components/projects/ProjectsEmptyStateLight.d.ts +3 -0
- package/dist/assets/components/projects/ProjectsEmptyStateLight.js +456 -0
- package/dist/assets/components/root/CreateProjectActionCardDark.d.ts +3 -0
- package/dist/assets/components/root/CreateProjectActionCardDark.js +1796 -0
- package/dist/assets/components/root/CreateProjectActionCardDarkHovered.d.ts +3 -0
- package/dist/assets/components/root/CreateProjectActionCardDarkHovered.js +1796 -0
- package/dist/assets/components/root/CreateProjectActionCardLight.d.ts +3 -0
- package/dist/assets/components/root/CreateProjectActionCardLight.js +1786 -0
- package/dist/assets/components/root/CreateProjectActionCardLightHovered.d.ts +3 -0
- package/dist/assets/components/root/CreateProjectActionCardLightHovered.js +1786 -0
- package/dist/assets/components/root/CreateSourceActionCardDark.d.ts +3 -0
- package/dist/assets/components/root/CreateSourceActionCardDark.js +879 -0
- package/dist/assets/components/root/CreateSourceActionCardDarkHovered.d.ts +3 -0
- package/dist/assets/components/root/CreateSourceActionCardDarkHovered.js +879 -0
- package/dist/assets/components/root/CreateSourceActionCardLight.d.ts +3 -0
- package/dist/assets/components/root/CreateSourceActionCardLight.js +889 -0
- package/dist/assets/components/root/CreateSourceActionCardLightHovered.d.ts +3 -0
- package/dist/assets/components/root/CreateSourceActionCardLightHovered.js +889 -0
- package/dist/assets/components/sources/AttioIcon.d.ts +3 -0
- package/dist/assets/components/sources/AttioIcon.js +11 -0
- package/dist/assets/components/sources/BigquerySourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/BigquerySourceIcon.js +39 -0
- package/dist/assets/components/sources/BrowserbaseSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/BrowserbaseSourceIcon.js +35 -0
- package/dist/assets/components/sources/ClickhouseLogoSourceIconDark.d.ts +3 -0
- package/dist/assets/components/sources/ClickhouseLogoSourceIconDark.js +13 -0
- package/dist/assets/components/sources/ClickhouseLogoSourceIconLight.d.ts +3 -0
- package/dist/assets/components/sources/ClickhouseLogoSourceIconLight.js +13 -0
- package/dist/assets/components/sources/ConfluenceSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/ConfluenceSourceIcon.js +30 -0
- package/dist/assets/components/sources/GalaxyFileUploadSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/GalaxyFileUploadSourceIcon.js +16 -0
- package/dist/assets/components/sources/GalaxyTextSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/GalaxyTextSourceIcon.js +16 -0
- package/dist/assets/components/sources/GalaxyWebhookSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/GalaxyWebhookSourceIcon.js +16 -0
- package/dist/assets/components/sources/GithubSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/GithubSourceIcon.js +27 -0
- package/dist/assets/components/sources/GoogleDriveIcon.d.ts +3 -0
- package/dist/assets/components/sources/GoogleDriveIcon.js +45 -0
- package/dist/assets/components/sources/HubspotSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/HubspotSourceIcon.js +14 -0
- package/dist/assets/components/sources/JiraSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/JiraSourceIcon.js +54 -0
- package/dist/assets/components/sources/LinearSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/LinearSourceIcon.js +14 -0
- package/dist/assets/components/sources/MysqlLogoSourceIconDark.d.ts +3 -0
- package/dist/assets/components/sources/MysqlLogoSourceIconDark.js +17 -0
- package/dist/assets/components/sources/MysqlLogoSourceIconLight.d.ts +3 -0
- package/dist/assets/components/sources/MysqlLogoSourceIconLight.js +17 -0
- package/dist/assets/components/sources/NetsuiteSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/NetsuiteSourceIcon.js +32 -0
- package/dist/assets/components/sources/NotionIcon.d.ts +3 -0
- package/dist/assets/components/sources/NotionIcon.js +20 -0
- package/dist/assets/components/sources/NotionLogoSourceIconDark.d.ts +3 -0
- package/dist/assets/components/sources/NotionLogoSourceIconDark.js +10 -0
- package/dist/assets/components/sources/NotionLogoSourceIconLight.d.ts +3 -0
- package/dist/assets/components/sources/NotionLogoSourceIconLight.js +13 -0
- package/dist/assets/components/sources/PostgresLogoSourceIconDark.d.ts +3 -0
- package/dist/assets/components/sources/PostgresLogoSourceIconDark.js +28 -0
- package/dist/assets/components/sources/PostgresLogoSourceIconLight.d.ts +3 -0
- package/dist/assets/components/sources/PostgresLogoSourceIconLight.js +28 -0
- package/dist/assets/components/sources/PostgresqlIcon.d.ts +3 -0
- package/dist/assets/components/sources/PostgresqlIcon.js +61 -0
- package/dist/assets/components/sources/PostgresqlLogoSourceIconDark.d.ts +3 -0
- package/dist/assets/components/sources/PostgresqlLogoSourceIconDark.js +10 -0
- package/dist/assets/components/sources/PostgresqlLogoSourceIconLight.d.ts +3 -0
- package/dist/assets/components/sources/PostgresqlLogoSourceIconLight.js +13 -0
- package/dist/assets/components/sources/S3Icon.d.ts +3 -0
- package/dist/assets/components/sources/S3Icon.js +76 -0
- package/dist/assets/components/sources/S3LogoSourceIconDark.d.ts +3 -0
- package/dist/assets/components/sources/S3LogoSourceIconDark.js +10 -0
- package/dist/assets/components/sources/S3LogoSourceIconLight.d.ts +3 -0
- package/dist/assets/components/sources/S3LogoSourceIconLight.js +13 -0
- package/dist/assets/components/sources/SalesforceSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/SalesforceSourceIcon.js +23 -0
- package/dist/assets/components/sources/SlackIcon.d.ts +3 -0
- package/dist/assets/components/sources/SlackIcon.js +32 -0
- package/dist/assets/components/sources/SlackLogoSourceIconDark.d.ts +3 -0
- package/dist/assets/components/sources/SlackLogoSourceIconDark.js +15 -0
- package/dist/assets/components/sources/SlackLogoSourceIconLight.d.ts +3 -0
- package/dist/assets/components/sources/SlackLogoSourceIconLight.js +15 -0
- package/dist/assets/components/sources/SnowflakeLogoSourceIconDark.d.ts +3 -0
- package/dist/assets/components/sources/SnowflakeLogoSourceIconDark.js +14 -0
- package/dist/assets/components/sources/SnowflakeLogoSourceIconLight.d.ts +3 -0
- package/dist/assets/components/sources/SnowflakeLogoSourceIconLight.js +14 -0
- package/dist/assets/components/sources/SourcesEmptyStateDark.d.ts +3 -0
- package/dist/assets/components/sources/SourcesEmptyStateDark.js +432 -0
- package/dist/assets/components/sources/SourcesEmptyStateLight.d.ts +3 -0
- package/dist/assets/components/sources/SourcesEmptyStateLight.js +434 -0
- package/dist/assets/components/sources/WikipediaSourceIcon.d.ts +3 -0
- package/dist/assets/components/sources/WikipediaSourceIcon.js +1490 -0
- package/dist/assets/models/galaxy-logomark.js +4 -0
- package/dist/avatar/Avatar.d.ts +9 -0
- package/dist/avatar/Avatar.js +52 -0
- package/dist/avatar/AvatarEmpty.d.ts +36 -0
- package/dist/avatar/AvatarEmpty.js +43 -0
- package/dist/avatar/AvatarShimmer.d.ts +28 -0
- package/dist/avatar/AvatarShimmer.js +21 -0
- package/dist/avatar/GalaxyAvatar.d.ts +6 -0
- package/dist/avatar/GalaxyAvatar.js +36 -0
- package/dist/avatar/types.d.ts +5 -0
- package/dist/avatar/types.js +9 -0
- package/dist/backgrounds/CellGridBackground.d.ts +13 -0
- package/dist/backgrounds/CellGridBackground.js +39 -0
- package/dist/backgrounds/CrossGridBackground.d.ts +14 -0
- package/dist/backgrounds/CrossGridBackground.js +45 -0
- package/dist/backgrounds/DotGridBackground.d.ts +13 -0
- package/dist/backgrounds/DotGridBackground.js +43 -0
- package/dist/badge/Badge.d.ts +30 -0
- package/dist/badge/Badge.js +92 -0
- package/dist/beacons/Beacon.d.ts +43 -0
- package/dist/beacons/Beacon.js +68 -0
- package/dist/buttons/Button.d.ts +30 -0
- package/dist/buttons/Button.js +173 -0
- package/dist/charts/BarChart.d.ts +21 -0
- package/dist/charts/BarChart.js +264 -0
- package/dist/charts/ChartAxis.d.ts +28 -0
- package/dist/charts/ChartAxis.js +94 -0
- package/dist/charts/ChartLegend.d.ts +7 -0
- package/dist/charts/ChartLegend.js +30 -0
- package/dist/charts/ChartTooltip.d.ts +7 -0
- package/dist/charts/ChartTooltip.js +66 -0
- package/dist/charts/LineChart.d.ts +22 -0
- package/dist/charts/LineChart.js +250 -0
- package/dist/charts/PieChart.d.ts +35 -0
- package/dist/charts/PieChart.js +183 -0
- package/dist/charts/constants.d.ts +22 -0
- package/dist/charts/constants.js +38 -0
- package/dist/charts/types.d.ts +80 -0
- package/dist/charts/types.js +0 -0
- package/dist/charts/utils.d.ts +29 -0
- package/dist/charts/utils.js +62 -0
- package/dist/chips/Chip.d.ts +39 -0
- package/dist/chips/Chip.js +185 -0
- package/dist/containers/FlexItem.d.ts +28 -0
- package/dist/containers/FlexItem.js +93 -0
- package/dist/containers/FlexWrapper.d.ts +147 -0
- package/dist/containers/FlexWrapper.js +122 -0
- package/dist/containers/GridWrapper.d.ts +120 -0
- package/dist/containers/GridWrapper.js +117 -0
- package/dist/containers/Spacing.d.ts +13 -0
- package/dist/containers/Spacing.js +52 -0
- package/dist/containers/Wrapper.d.ts +16 -0
- package/dist/containers/Wrapper.js +50 -0
- package/dist/dividers/HorizontalDivider.d.ts +2 -0
- package/dist/dividers/HorizontalDivider.js +17 -0
- package/dist/dividers/VerticalDivider.d.ts +2 -0
- package/dist/dividers/VerticalDivider.js +17 -0
- package/dist/drawer/Drawer.d.ts +13 -0
- package/dist/drawer/Drawer.js +70 -0
- package/dist/dropdown/Dropdown.d.ts +51 -0
- package/dist/dropdown/Dropdown.js +136 -0
- package/dist/dropdown/DropdownButton.d.ts +18 -0
- package/dist/dropdown/DropdownButton.js +179 -0
- package/dist/dropdown/DropdownFooter.d.ts +10 -0
- package/dist/dropdown/DropdownFooter.js +35 -0
- package/dist/dropdown/DropdownItem.d.ts +10 -0
- package/dist/dropdown/DropdownItem.js +38 -0
- package/dist/editor/CodeEditor.d.ts +68 -0
- package/dist/editor/CodeEditor.js +435 -0
- package/dist/editor/CodeEditorReactWidget.d.ts +35 -0
- package/dist/editor/CodeEditorReactWidget.js +47 -0
- package/dist/hooks/useDismiss.d.ts +27 -0
- package/dist/hooks/useDismiss.js +37 -0
- package/dist/hooks/useElementWidth.d.ts +22 -0
- package/dist/hooks/useElementWidth.js +44 -0
- package/dist/hooks/useResize.d.ts +83 -0
- package/dist/hooks/useResize.js +114 -0
- package/dist/hotkeys/HotKeyBindings.d.ts +7 -0
- package/dist/hotkeys/HotKeyBindings.js +23 -0
- package/dist/hotkeys/HotKeySymbol.d.ts +13 -0
- package/dist/hotkeys/HotKeySymbol.js +49 -0
- package/dist/icons/BackIcon.d.ts +3 -0
- package/dist/icons/BackIcon.js +13 -0
- package/dist/icons/CloseIcon.d.ts +3 -0
- package/dist/icons/CloseIcon.js +13 -0
- package/dist/icons/CreateIcon.d.ts +3 -0
- package/dist/icons/CreateIcon.js +13 -0
- package/dist/icons/ForwardIcon.d.ts +3 -0
- package/dist/icons/ForwardIcon.js +13 -0
- package/dist/icons/GalaxyLogomark.d.ts +5 -0
- package/dist/icons/GalaxyLogomark.js +21 -0
- package/dist/icons/GalaxyLogomark3D.d.ts +41 -0
- package/dist/icons/GalaxyLogomark3D.js +310 -0
- package/dist/icons/GalaxyWordmark.d.ts +5 -0
- package/dist/icons/GalaxyWordmark.js +21 -0
- package/dist/icons/HelpIcon.d.ts +3 -0
- package/dist/icons/HelpIcon.js +14 -0
- package/dist/icons/Icon.d.ts +41 -0
- package/dist/icons/Icon.js +51 -0
- package/dist/icons/ProjectsIcon.d.ts +3 -0
- package/dist/icons/ProjectsIcon.js +12 -0
- package/dist/icons/SearchIcon.d.ts +3 -0
- package/dist/icons/SearchIcon.js +12 -0
- package/dist/icons/SourcesIcon.d.ts +3 -0
- package/dist/icons/SourcesIcon.js +12 -0
- package/dist/icons/TextIcon.d.ts +4 -0
- package/dist/icons/TextIcon.js +22 -0
- package/dist/icons/WebScrapeIcon.d.ts +4 -0
- package/dist/icons/WebScrapeIcon.js +22 -0
- package/dist/icons/WebhookIcon.d.ts +4 -0
- package/dist/icons/WebhookIcon.js +22 -0
- package/dist/icons/sources/AttioLogomark.d.ts +4 -0
- package/dist/icons/sources/AttioLogomark.js +8 -0
- package/dist/icons/sources/BrowserbaseLogomark.d.ts +4 -0
- package/dist/icons/sources/BrowserbaseLogomark.js +8 -0
- package/dist/icons/sources/ClickhouseLogomark.d.ts +4 -0
- package/dist/icons/sources/ClickhouseLogomark.js +16 -0
- package/dist/icons/sources/ConfluenceLogomark.d.ts +4 -0
- package/dist/icons/sources/ConfluenceLogomark.js +8 -0
- package/dist/icons/sources/GithubLogomark.d.ts +4 -0
- package/dist/icons/sources/GithubLogomark.js +8 -0
- package/dist/icons/sources/GoogleBigqueryLogomark.d.ts +4 -0
- package/dist/icons/sources/GoogleBigqueryLogomark.js +8 -0
- package/dist/icons/sources/GoogleDriveLogomark.d.ts +4 -0
- package/dist/icons/sources/GoogleDriveLogomark.js +8 -0
- package/dist/icons/sources/HubspotLogomark.d.ts +4 -0
- package/dist/icons/sources/HubspotLogomark.js +8 -0
- package/dist/icons/sources/JiraLogomark.d.ts +4 -0
- package/dist/icons/sources/JiraLogomark.js +8 -0
- package/dist/icons/sources/LinearLogomark.d.ts +4 -0
- package/dist/icons/sources/LinearLogomark.js +8 -0
- package/dist/icons/sources/MySQLLogomark.d.ts +4 -0
- package/dist/icons/sources/MySQLLogomark.js +8 -0
- package/dist/icons/sources/NetsuiteLogomark.d.ts +4 -0
- package/dist/icons/sources/NetsuiteLogomark.js +8 -0
- package/dist/icons/sources/NotionLogomark.d.ts +4 -0
- package/dist/icons/sources/NotionLogomark.js +8 -0
- package/dist/icons/sources/PostgresLogomark.d.ts +4 -0
- package/dist/icons/sources/PostgresLogomark.js +8 -0
- package/dist/icons/sources/S3Logomark.d.ts +4 -0
- package/dist/icons/sources/S3Logomark.js +8 -0
- package/dist/icons/sources/SalesforceLogomark.d.ts +4 -0
- package/dist/icons/sources/SalesforceLogomark.js +8 -0
- package/dist/icons/sources/SlackLogoIconmark.d.ts +4 -0
- package/dist/icons/sources/SlackLogoIconmark.js +8 -0
- package/dist/icons/sources/SnowflakeLogomark.d.ts +4 -0
- package/dist/icons/sources/SnowflakeLogomark.js +16 -0
- package/dist/icons/sources/WikipediaLogomark.d.ts +4 -0
- package/dist/icons/sources/WikipediaLogomark.js +8 -0
- package/dist/inputs/CheckboxInput.d.ts +20 -0
- package/dist/inputs/CheckboxInput.js +97 -0
- package/dist/inputs/ColorInput.d.ts +20 -0
- package/dist/inputs/ColorInput.js +368 -0
- package/dist/inputs/CopyInput.d.ts +15 -0
- package/dist/inputs/CopyInput.js +46 -0
- package/dist/inputs/DateInput.d.ts +19 -0
- package/dist/inputs/DateInput.js +498 -0
- package/dist/inputs/Input.d.ts +91 -0
- package/dist/inputs/Input.js +205 -0
- package/dist/inputs/MultiSelectInput.d.ts +38 -0
- package/dist/inputs/MultiSelectInput.js +566 -0
- package/dist/inputs/MultiTextInput.d.ts +27 -0
- package/dist/inputs/MultiTextInput.js +178 -0
- package/dist/inputs/NumberInput.d.ts +4 -0
- package/dist/inputs/NumberInput.js +34 -0
- package/dist/inputs/PasswordInput.d.ts +4 -0
- package/dist/inputs/PasswordInput.js +40 -0
- package/dist/inputs/RadioInput.d.ts +20 -0
- package/dist/inputs/RadioInput.js +108 -0
- package/dist/inputs/SelectInput.d.ts +51 -0
- package/dist/inputs/SelectInput.js +528 -0
- package/dist/inputs/SliderInput.d.ts +16 -0
- package/dist/inputs/SliderInput.js +172 -0
- package/dist/inputs/TextAreaInput.d.ts +40 -0
- package/dist/inputs/TextAreaInput.js +238 -0
- package/dist/inputs/TextInput.d.ts +4 -0
- package/dist/inputs/TextInput.js +53 -0
- package/dist/inputs/ToggleInput.d.ts +11 -0
- package/dist/inputs/ToggleInput.js +100 -0
- package/dist/inputs/hooks.d.ts +10 -0
- package/dist/inputs/hooks.js +22 -0
- package/dist/links/Link.d.ts +2 -0
- package/dist/links/Link.js +10 -0
- package/dist/lists/BulletedList.d.ts +11 -0
- package/dist/lists/BulletedList.js +41 -0
- package/dist/metrics/MetricItem.d.ts +15 -0
- package/dist/metrics/MetricItem.js +53 -0
- package/dist/metrics/ProgressBar.d.ts +15 -0
- package/dist/metrics/ProgressBar.js +60 -0
- package/dist/modal/Modal.d.ts +7 -0
- package/dist/modal/Modal.js +52 -0
- package/dist/overlay/OverlayProvider.d.ts +26 -0
- package/dist/overlay/OverlayProvider.js +92 -0
- package/dist/overlay/constants.d.ts +27 -0
- package/dist/overlay/constants.js +36 -0
- package/dist/overlay/useOverlay.d.ts +7 -0
- package/dist/overlay/useOverlay.js +46 -0
- package/dist/resizable/HorizontalResizeHandle.d.ts +10 -0
- package/dist/resizable/HorizontalResizeHandle.js +32 -0
- package/dist/resizable/VerticalResizeHandle.d.ts +11 -0
- package/dist/resizable/VerticalResizeHandle.js +33 -0
- package/dist/shapes/Circle.d.ts +6 -0
- package/dist/shapes/Circle.js +25 -0
- package/dist/spreadsheet/InfiniteSpreadsheet.d.ts +3 -0
- package/dist/spreadsheet/InfiniteSpreadsheet.js +265 -0
- package/dist/spreadsheet/SpreadsheetAddColumnButton.d.ts +6 -0
- package/dist/spreadsheet/SpreadsheetAddColumnButton.js +32 -0
- package/dist/spreadsheet/SpreadsheetCell.d.ts +19 -0
- package/dist/spreadsheet/SpreadsheetCell.js +115 -0
- package/dist/spreadsheet/SpreadsheetCellEditor.d.ts +11 -0
- package/dist/spreadsheet/SpreadsheetCellEditor.js +95 -0
- package/dist/spreadsheet/SpreadsheetHeaderCell.d.ts +13 -0
- package/dist/spreadsheet/SpreadsheetHeaderCell.js +125 -0
- package/dist/spreadsheet/SpreadsheetRow.d.ts +21 -0
- package/dist/spreadsheet/SpreadsheetRow.js +68 -0
- package/dist/spreadsheet/SpreadsheetRowActionCell.d.ts +11 -0
- package/dist/spreadsheet/SpreadsheetRowActionCell.js +60 -0
- package/dist/spreadsheet/hooks/useColumnResize.d.ts +6 -0
- package/dist/spreadsheet/hooks/useColumnResize.js +46 -0
- package/dist/spreadsheet/hooks/useSpreadsheetEditing.d.ts +13 -0
- package/dist/spreadsheet/hooks/useSpreadsheetEditing.js +41 -0
- package/dist/spreadsheet/types.d.ts +92 -0
- package/dist/spreadsheet/types.js +21 -0
- package/dist/styles.css +213 -0
- package/dist/switcher/Switcher.d.ts +11 -0
- package/dist/switcher/Switcher.js +41 -0
- package/dist/table/InfiniteTable.d.ts +83 -0
- package/dist/table/InfiniteTable.js +711 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +28 -0
- package/dist/table/VirtualizedInfiniteTable.js +359 -0
- package/dist/text/Bold.d.ts +3 -0
- package/dist/text/Bold.js +17 -0
- package/dist/text/Code.d.ts +3 -0
- package/dist/text/Code.js +27 -0
- package/dist/text/EditableText.d.ts +7 -0
- package/dist/text/EditableText.js +141 -0
- package/dist/text/Ellipsis.d.ts +10 -0
- package/dist/text/Ellipsis.js +28 -0
- package/dist/text/MarkdownText.d.ts +7 -0
- package/dist/text/MarkdownText.js +295 -0
- package/dist/text/Paragraph.d.ts +16 -0
- package/dist/text/Paragraph.js +76 -0
- package/dist/text/RequiredMarker.d.ts +6 -0
- package/dist/text/RequiredMarker.js +44 -0
- package/dist/text/Selectable.d.ts +3 -0
- package/dist/text/Selectable.js +15 -0
- package/dist/text/Text.d.ts +47 -0
- package/dist/text/Text.js +104 -0
- package/dist/text/TextShimmer.d.ts +7 -0
- package/dist/text/TextShimmer.js +30 -0
- package/dist/theme/GalaxyTheme.d.ts +36 -0
- package/dist/theme/GalaxyTheme.js +107 -0
- package/dist/theme/constants.d.ts +13 -0
- package/dist/theme/constants.js +43 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.js +6 -0
- package/dist/theme/types.d.ts +174 -0
- package/dist/theme/types.js +0 -0
- package/dist/theme/typography.d.ts +2 -0
- package/dist/theme/typography.js +73 -0
- package/dist/theme/variants/dark.d.ts +2 -0
- package/dist/theme/variants/dark.js +125 -0
- package/dist/theme/variants/light.d.ts +2 -0
- package/dist/theme/variants/light.js +125 -0
- package/dist/tooltip/Tooltip.d.ts +37 -0
- package/dist/tooltip/Tooltip.js +79 -0
- package/dist/utils/colors.d.ts +84 -0
- package/dist/utils/colors.js +323 -0
- package/dist/utils/linaria.d.ts +1 -0
- package/dist/utils/linaria.js +8 -0
- package/dist/widget/Widget.d.ts +28 -0
- package/dist/widget/Widget.js +99 -0
- package/package.json +268 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
2
|
+
import FlexWrapper, { AlignItems, FlexDirection } from "../containers/FlexWrapper.js";
|
|
3
|
+
import Circle from "../shapes/Circle.js";
|
|
4
|
+
import { resolveSeriesColor } from "./utils.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/charts/ChartLegend.tsx
|
|
7
|
+
var ChartLegend = ({ series, palette }) => {
|
|
8
|
+
return /* @__PURE__ */ jsx(FlexWrapper, {
|
|
9
|
+
direction: FlexDirection.ROW,
|
|
10
|
+
alignItems: AlignItems.CENTER,
|
|
11
|
+
gap: 16,
|
|
12
|
+
children: series.map((s, i) => {
|
|
13
|
+
const color = resolveSeriesColor(s, i, palette);
|
|
14
|
+
return /* @__PURE__ */ jsxs(FlexWrapper, {
|
|
15
|
+
alignItems: AlignItems.CENTER,
|
|
16
|
+
gap: 6,
|
|
17
|
+
children: [/* @__PURE__ */ jsx(Circle, {
|
|
18
|
+
size: 8,
|
|
19
|
+
hex: color
|
|
20
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
21
|
+
size: TextSize.CAPTION,
|
|
22
|
+
variant: TextVariant.TERTIARY,
|
|
23
|
+
children: s.name
|
|
24
|
+
})]
|
|
25
|
+
}, s.key);
|
|
26
|
+
})
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
export { ChartLegend as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ChartTooltipData, ChartValueFormatter } from "./types";
|
|
2
|
+
interface ChartTooltipProps {
|
|
3
|
+
data: ChartTooltipData | null;
|
|
4
|
+
valueFormatter?: ChartValueFormatter;
|
|
5
|
+
}
|
|
6
|
+
declare const ChartTooltip: ({ data, valueFormatter }: ChartTooltipProps) => import("react").JSX.Element | null;
|
|
7
|
+
export default ChartTooltip;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { withTheme } from "../theme/GalaxyTheme.js";
|
|
2
|
+
import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
|
|
3
|
+
import FlexWrapper, { AlignItems, FlexDirection, JustifyContent } from "../containers/FlexWrapper.js";
|
|
4
|
+
import Circle from "../shapes/Circle.js";
|
|
5
|
+
import { defaultValueFormatter } from "./utils.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
import { styled } from "@linaria/react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
//#region src/charts/ChartTooltip.tsx
|
|
10
|
+
var _exp = () => ({ $x }) => $x;
|
|
11
|
+
var _exp2 = () => ({ $y }) => $y;
|
|
12
|
+
var _exp3 = () => ({ theme }) => theme.color.background.secondary;
|
|
13
|
+
var _exp4 = () => ({ theme }) => theme.color.border.secondary;
|
|
14
|
+
var _exp5 = () => ({ $visible }) => $visible ? 1 : 0;
|
|
15
|
+
var TooltipContainer = withTheme(/*#__PURE__*/ styled("div")({
|
|
16
|
+
name: "TooltipContainer",
|
|
17
|
+
class: "ttysfji",
|
|
18
|
+
propsAsIs: false,
|
|
19
|
+
vars: {
|
|
20
|
+
"ttysfji-0": [_exp(), "px"],
|
|
21
|
+
"ttysfji-1": [_exp2(), "px"],
|
|
22
|
+
"ttysfji-2": [_exp3()],
|
|
23
|
+
"ttysfji-3": [_exp4()],
|
|
24
|
+
"ttysfji-4": [_exp5()]
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
var ChartTooltip = ({ data, valueFormatter = defaultValueFormatter }) => {
|
|
28
|
+
if (!data) return null;
|
|
29
|
+
return /* @__PURE__ */ jsx(TooltipContainer, {
|
|
30
|
+
$x: data.x,
|
|
31
|
+
$y: data.y,
|
|
32
|
+
$visible: true,
|
|
33
|
+
children: /* @__PURE__ */ jsxs(FlexWrapper, {
|
|
34
|
+
direction: FlexDirection.COLUMN,
|
|
35
|
+
gap: 6,
|
|
36
|
+
children: [/* @__PURE__ */ jsx(Text, {
|
|
37
|
+
size: TextSize.BODY_SM,
|
|
38
|
+
weight: TextWeight.MEDIUM,
|
|
39
|
+
children: data.label
|
|
40
|
+
}), data.items.map((item) => /* @__PURE__ */ jsxs(FlexWrapper, {
|
|
41
|
+
alignItems: AlignItems.CENTER,
|
|
42
|
+
justifyContent: JustifyContent.SPACE_BETWEEN,
|
|
43
|
+
gap: 32,
|
|
44
|
+
fillWidth: true,
|
|
45
|
+
children: [/* @__PURE__ */ jsxs(FlexWrapper, {
|
|
46
|
+
alignItems: AlignItems.CENTER,
|
|
47
|
+
gap: 6,
|
|
48
|
+
children: [/* @__PURE__ */ jsx(Circle, {
|
|
49
|
+
size: 8,
|
|
50
|
+
hex: item.color
|
|
51
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
52
|
+
size: TextSize.CAPTION,
|
|
53
|
+
variant: TextVariant.PRIMARY,
|
|
54
|
+
children: item.seriesName
|
|
55
|
+
})]
|
|
56
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
57
|
+
size: TextSize.CAPTION,
|
|
58
|
+
weight: TextWeight.MEDIUM,
|
|
59
|
+
children: valueFormatter(item.value)
|
|
60
|
+
})]
|
|
61
|
+
}, item.seriesKey))]
|
|
62
|
+
})
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
//#endregion
|
|
66
|
+
export { ChartTooltip as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CurveFactory } from "d3-shape";
|
|
2
|
+
import type { BaseChartProps } from "./types";
|
|
3
|
+
export declare enum LineChartMode {
|
|
4
|
+
NORMAL = "NORMAL",
|
|
5
|
+
STACKED = "STACKED"
|
|
6
|
+
}
|
|
7
|
+
export interface LineChartProps extends BaseChartProps {
|
|
8
|
+
/** Normal or stacked line mode */
|
|
9
|
+
mode?: LineChartMode;
|
|
10
|
+
/** Line stroke width in px */
|
|
11
|
+
strokeWidth?: number;
|
|
12
|
+
/** Data-point dot radius in px (0 to hide dots) */
|
|
13
|
+
dotRadius?: number;
|
|
14
|
+
/** Show grid lines */
|
|
15
|
+
showGrid?: boolean;
|
|
16
|
+
/** Fill area under lines */
|
|
17
|
+
showArea?: boolean;
|
|
18
|
+
/** D3 curve factory for line interpolation */
|
|
19
|
+
curveType?: CurveFactory;
|
|
20
|
+
}
|
|
21
|
+
declare const LineChart: ({ data, series, width, height, margin: marginOverride, fillWidth, aspectRatio, mode, strokeWidth, dotRadius, valueFormatter, labelFormatter, tooltipRenderer, noTooltip, showLegend, showGrid, showArea, curveType, ariaLabel, }: LineChartProps) => import("react").JSX.Element;
|
|
22
|
+
export default LineChart;
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { useGalaxyTheme, withTheme } from "../theme/GalaxyTheme.js";
|
|
2
|
+
import FlexWrapper, { FlexDirection } from "../containers/FlexWrapper.js";
|
|
3
|
+
import { useElementWidth } from "../hooks/useElementWidth.js";
|
|
4
|
+
import Wrapper from "../containers/Wrapper.js";
|
|
5
|
+
import { getChartPalette } from "./constants.js";
|
|
6
|
+
import { buildLinearScale, buildPointScale, defaultLabelFormatter, defaultValueFormatter, getGroupedMax, getPlotDimensions, getStackedMax, resolveMargin, resolveSeriesColor } from "./utils.js";
|
|
7
|
+
import ChartLegend from "./ChartLegend.js";
|
|
8
|
+
import ChartTooltip from "./ChartTooltip.js";
|
|
9
|
+
import { XAxisPoint, YAxis } from "./ChartAxis.js";
|
|
10
|
+
/* empty css */
|
|
11
|
+
import { styled } from "@linaria/react";
|
|
12
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
13
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
+
import { area, curveMonotoneX, line } from "d3-shape";
|
|
15
|
+
//#region src/charts/LineChart.tsx
|
|
16
|
+
var LineChartMode = /* @__PURE__ */ function(LineChartMode) {
|
|
17
|
+
LineChartMode["NORMAL"] = "NORMAL";
|
|
18
|
+
LineChartMode["STACKED"] = "STACKED";
|
|
19
|
+
return LineChartMode;
|
|
20
|
+
}({});
|
|
21
|
+
var _exp = () => ({ $fillWidth }) => $fillWidth ? "flex" : "inline-flex";
|
|
22
|
+
var _exp2 = () => ({ $fillWidth }) => $fillWidth ? "100%" : "auto";
|
|
23
|
+
var ChartWrapper = withTheme(/*#__PURE__*/ styled("div")({
|
|
24
|
+
name: "ChartWrapper",
|
|
25
|
+
class: "c8llr95",
|
|
26
|
+
propsAsIs: false,
|
|
27
|
+
vars: {
|
|
28
|
+
"c8llr95-0": [_exp()],
|
|
29
|
+
"c8llr95-1": [_exp2()]
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
var LineChart = ({ data, series, width, height, margin: marginOverride, fillWidth = false, aspectRatio, mode = "NORMAL", strokeWidth = 2, dotRadius = 4, valueFormatter = defaultValueFormatter, labelFormatter = defaultLabelFormatter, tooltipRenderer, noTooltip = false, showLegend = true, showGrid = true, showArea = false, curveType = curveMonotoneX, ariaLabel }) => {
|
|
33
|
+
const { theme } = useGalaxyTheme();
|
|
34
|
+
const containerRef = useRef(null);
|
|
35
|
+
const svgRef = useRef(null);
|
|
36
|
+
const [tooltip, setTooltip] = useState(null);
|
|
37
|
+
const [hoveredDatumIndex, setHoveredDatumIndex] = useState(null);
|
|
38
|
+
const measuredWidth = useElementWidth(containerRef);
|
|
39
|
+
const resolvedWidth = fillWidth ? measuredWidth ?? 0 : width ?? 0;
|
|
40
|
+
const resolvedHeight = aspectRatio ? resolvedWidth / aspectRatio : height ?? 0;
|
|
41
|
+
const palette = useMemo(() => getChartPalette(theme), [theme]);
|
|
42
|
+
const margin = useMemo(() => resolveMargin(marginOverride), [marginOverride]);
|
|
43
|
+
const { plotWidth, plotHeight } = useMemo(() => getPlotDimensions(resolvedWidth, resolvedHeight, margin), [
|
|
44
|
+
resolvedWidth,
|
|
45
|
+
resolvedHeight,
|
|
46
|
+
margin
|
|
47
|
+
]);
|
|
48
|
+
const seriesKeys = useMemo(() => series.map((s) => s.key), [series]);
|
|
49
|
+
const labels = useMemo(() => data.map((d) => d.label), [data]);
|
|
50
|
+
const xScale = useMemo(() => buildPointScale(labels, [0, plotWidth]), [labels, plotWidth]);
|
|
51
|
+
const yMax = useMemo(() => mode === "STACKED" ? getStackedMax(data, seriesKeys) : getGroupedMax(data, seriesKeys), [
|
|
52
|
+
data,
|
|
53
|
+
seriesKeys,
|
|
54
|
+
mode
|
|
55
|
+
]);
|
|
56
|
+
const yScale = useMemo(() => buildLinearScale(yMax, [plotHeight, 0]), [yMax, plotHeight]);
|
|
57
|
+
const stackedValues = useMemo(() => {
|
|
58
|
+
if (mode !== "STACKED") return null;
|
|
59
|
+
return data.map((datum) => {
|
|
60
|
+
let cumulative = 0;
|
|
61
|
+
const values = {};
|
|
62
|
+
for (const s of series) {
|
|
63
|
+
const value = datum.values[s.key] ?? 0;
|
|
64
|
+
values[s.key] = {
|
|
65
|
+
y0: cumulative,
|
|
66
|
+
y1: cumulative + value
|
|
67
|
+
};
|
|
68
|
+
cumulative += value;
|
|
69
|
+
}
|
|
70
|
+
return values;
|
|
71
|
+
});
|
|
72
|
+
}, [
|
|
73
|
+
data,
|
|
74
|
+
series,
|
|
75
|
+
mode
|
|
76
|
+
]);
|
|
77
|
+
const handlePointMouseEnter = useCallback((datumIndex, x, y) => {
|
|
78
|
+
const datum = data[datumIndex];
|
|
79
|
+
if (!datum) return;
|
|
80
|
+
setHoveredDatumIndex(datumIndex);
|
|
81
|
+
setTooltip({
|
|
82
|
+
label: datum.label,
|
|
83
|
+
items: series.map((s, i) => ({
|
|
84
|
+
seriesKey: s.key,
|
|
85
|
+
seriesName: s.name,
|
|
86
|
+
value: datum.values[s.key] ?? 0,
|
|
87
|
+
color: resolveSeriesColor(s, i, palette)
|
|
88
|
+
})),
|
|
89
|
+
x: x + margin.left,
|
|
90
|
+
y: y + margin.top
|
|
91
|
+
});
|
|
92
|
+
}, [
|
|
93
|
+
data,
|
|
94
|
+
series,
|
|
95
|
+
palette,
|
|
96
|
+
margin
|
|
97
|
+
]);
|
|
98
|
+
const handlePointMouseLeave = useCallback(() => {
|
|
99
|
+
setHoveredDatumIndex(null);
|
|
100
|
+
setTooltip(null);
|
|
101
|
+
}, []);
|
|
102
|
+
if (resolvedWidth === 0 || resolvedHeight === 0) return /* @__PURE__ */ jsx(ChartWrapper, {
|
|
103
|
+
ref: containerRef,
|
|
104
|
+
$fillWidth: fillWidth
|
|
105
|
+
});
|
|
106
|
+
const renderNormalLines = () => {
|
|
107
|
+
return series.map((s, seriesIndex) => {
|
|
108
|
+
const color = resolveSeriesColor(s, seriesIndex, palette);
|
|
109
|
+
const linePath = line().x((_, i) => xScale(data[i].label) ?? 0).y((_, i) => yScale(data[i].values[s.key] ?? 0)).curve(curveType)(data.map((_, i) => i)) ?? "";
|
|
110
|
+
const areaPath = showArea ? area().x((_, i) => xScale(data[i].label) ?? 0).y0(plotHeight).y1((_, i) => yScale(data[i].values[s.key] ?? 0)).curve(curveType)(data.map((_, i) => i)) ?? "" : "";
|
|
111
|
+
return /* @__PURE__ */ jsxs("g", { children: [
|
|
112
|
+
showArea && /* @__PURE__ */ jsx("path", {
|
|
113
|
+
d: areaPath,
|
|
114
|
+
fill: color,
|
|
115
|
+
opacity: .1,
|
|
116
|
+
style: { transition: `opacity 150ms ease-in-out` }
|
|
117
|
+
}),
|
|
118
|
+
/* @__PURE__ */ jsx("path", {
|
|
119
|
+
d: linePath,
|
|
120
|
+
fill: "none",
|
|
121
|
+
stroke: color,
|
|
122
|
+
strokeWidth,
|
|
123
|
+
style: { transition: `opacity 150ms ease-in-out` }
|
|
124
|
+
}),
|
|
125
|
+
data.map((datum, datumIndex) => {
|
|
126
|
+
const cx = xScale(datum.label) ?? 0;
|
|
127
|
+
const cy = yScale(datum.values[s.key] ?? 0);
|
|
128
|
+
return /* @__PURE__ */ jsxs("g", { children: [dotRadius > 0 && /* @__PURE__ */ jsx("circle", {
|
|
129
|
+
cx,
|
|
130
|
+
cy,
|
|
131
|
+
r: dotRadius,
|
|
132
|
+
fill: color,
|
|
133
|
+
opacity: hoveredDatumIndex !== null && hoveredDatumIndex !== datumIndex ? .3 : 1,
|
|
134
|
+
style: { transition: `opacity 150ms ease-in-out` },
|
|
135
|
+
role: "graphics-symbol",
|
|
136
|
+
"aria-roledescription": "data point",
|
|
137
|
+
"aria-label": `${s.name} for ${datum.label}: ${valueFormatter(datum.values[s.key] ?? 0)}`
|
|
138
|
+
}), /* @__PURE__ */ jsx("circle", {
|
|
139
|
+
cx,
|
|
140
|
+
cy,
|
|
141
|
+
r: dotRadius + 6,
|
|
142
|
+
fill: "transparent",
|
|
143
|
+
onMouseEnter: () => handlePointMouseEnter(datumIndex, cx, cy),
|
|
144
|
+
onMouseLeave: handlePointMouseLeave,
|
|
145
|
+
onFocus: () => handlePointMouseEnter(datumIndex, cx, cy),
|
|
146
|
+
onBlur: handlePointMouseLeave,
|
|
147
|
+
tabIndex: 0,
|
|
148
|
+
style: { cursor: "pointer" }
|
|
149
|
+
})] }, datum.label);
|
|
150
|
+
})
|
|
151
|
+
] }, s.key);
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
const renderStackedLines = () => {
|
|
155
|
+
if (!stackedValues) return null;
|
|
156
|
+
return series.map((s, seriesIndex) => {
|
|
157
|
+
const color = resolveSeriesColor(s, seriesIndex, palette);
|
|
158
|
+
const areaPath = area().x((_, i) => xScale(data[i].label) ?? 0).y0((_, i) => yScale(stackedValues[i][s.key].y0)).y1((_, i) => yScale(stackedValues[i][s.key].y1)).curve(curveType)(data.map((_, i) => i)) ?? "";
|
|
159
|
+
const linePath = line().x((_, i) => xScale(data[i].label) ?? 0).y((_, i) => yScale(stackedValues[i][s.key].y1)).curve(curveType)(data.map((_, i) => i)) ?? "";
|
|
160
|
+
return /* @__PURE__ */ jsxs("g", { children: [
|
|
161
|
+
/* @__PURE__ */ jsx("path", {
|
|
162
|
+
d: areaPath,
|
|
163
|
+
fill: color,
|
|
164
|
+
opacity: .3,
|
|
165
|
+
style: { transition: `opacity 150ms ease-in-out` }
|
|
166
|
+
}),
|
|
167
|
+
/* @__PURE__ */ jsx("path", {
|
|
168
|
+
d: linePath,
|
|
169
|
+
fill: "none",
|
|
170
|
+
stroke: color,
|
|
171
|
+
strokeWidth,
|
|
172
|
+
style: { transition: `opacity 150ms ease-in-out` }
|
|
173
|
+
}),
|
|
174
|
+
data.map((datum, datumIndex) => {
|
|
175
|
+
const cx = xScale(datum.label) ?? 0;
|
|
176
|
+
const cy = yScale(stackedValues[datumIndex][s.key].y1);
|
|
177
|
+
return /* @__PURE__ */ jsxs("g", { children: [dotRadius > 0 && /* @__PURE__ */ jsx("circle", {
|
|
178
|
+
cx,
|
|
179
|
+
cy,
|
|
180
|
+
r: dotRadius,
|
|
181
|
+
fill: color,
|
|
182
|
+
opacity: hoveredDatumIndex !== null && hoveredDatumIndex !== datumIndex ? .3 : 1,
|
|
183
|
+
style: { transition: `opacity 150ms ease-in-out` },
|
|
184
|
+
role: "graphics-symbol",
|
|
185
|
+
"aria-roledescription": "data point",
|
|
186
|
+
"aria-label": `${s.name} for ${datum.label}: ${valueFormatter(datum.values[s.key] ?? 0)}`
|
|
187
|
+
}), /* @__PURE__ */ jsx("circle", {
|
|
188
|
+
cx,
|
|
189
|
+
cy,
|
|
190
|
+
r: dotRadius + 6,
|
|
191
|
+
fill: "transparent",
|
|
192
|
+
onMouseEnter: () => handlePointMouseEnter(datumIndex, cx, cy),
|
|
193
|
+
onMouseLeave: handlePointMouseLeave,
|
|
194
|
+
onFocus: () => handlePointMouseEnter(datumIndex, cx, cy),
|
|
195
|
+
onBlur: handlePointMouseLeave,
|
|
196
|
+
tabIndex: 0,
|
|
197
|
+
style: { cursor: "pointer" }
|
|
198
|
+
})] }, datum.label);
|
|
199
|
+
})
|
|
200
|
+
] }, s.key);
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
const defaultAriaLabel = `Line chart with ${data.length} data points and ${series.length} series`;
|
|
204
|
+
return /* @__PURE__ */ jsxs(ChartWrapper, {
|
|
205
|
+
ref: containerRef,
|
|
206
|
+
$fillWidth: fillWidth,
|
|
207
|
+
children: [/* @__PURE__ */ jsxs(Wrapper, {
|
|
208
|
+
position: "relative",
|
|
209
|
+
children: [/* @__PURE__ */ jsx("svg", {
|
|
210
|
+
ref: svgRef,
|
|
211
|
+
width: resolvedWidth,
|
|
212
|
+
height: resolvedHeight,
|
|
213
|
+
role: "img",
|
|
214
|
+
"aria-label": ariaLabel ?? defaultAriaLabel,
|
|
215
|
+
children: /* @__PURE__ */ jsxs("g", {
|
|
216
|
+
transform: `translate(${margin.left}, ${margin.top})`,
|
|
217
|
+
children: [
|
|
218
|
+
/* @__PURE__ */ jsx(YAxis, {
|
|
219
|
+
scale: yScale,
|
|
220
|
+
transform: "translate(0, 0)",
|
|
221
|
+
plotWidth,
|
|
222
|
+
formatter: valueFormatter,
|
|
223
|
+
showGrid,
|
|
224
|
+
theme
|
|
225
|
+
}),
|
|
226
|
+
/* @__PURE__ */ jsx(XAxisPoint, {
|
|
227
|
+
scale: xScale,
|
|
228
|
+
transform: `translate(0, ${plotHeight})`,
|
|
229
|
+
plotWidth,
|
|
230
|
+
formatter: labelFormatter
|
|
231
|
+
}),
|
|
232
|
+
mode === "STACKED" ? renderStackedLines() : renderNormalLines()
|
|
233
|
+
]
|
|
234
|
+
})
|
|
235
|
+
}), !noTooltip && (tooltipRenderer ? tooltip && tooltipRenderer(tooltip) : /* @__PURE__ */ jsx(ChartTooltip, {
|
|
236
|
+
data: tooltip,
|
|
237
|
+
valueFormatter
|
|
238
|
+
}))]
|
|
239
|
+
}), showLegend && /* @__PURE__ */ jsxs(FlexWrapper, {
|
|
240
|
+
direction: FlexDirection.ROW,
|
|
241
|
+
gap: 0,
|
|
242
|
+
children: [/* @__PURE__ */ jsx(Wrapper, { minWidth: margin.left }), /* @__PURE__ */ jsx(ChartLegend, {
|
|
243
|
+
series,
|
|
244
|
+
palette
|
|
245
|
+
})]
|
|
246
|
+
})]
|
|
247
|
+
});
|
|
248
|
+
};
|
|
249
|
+
//#endregion
|
|
250
|
+
export { LineChartMode, LineChart as default };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ChartLabelFormatter, ChartTooltipRenderer, ChartValueFormatter, PieSlice } from "./types";
|
|
2
|
+
export interface PieChartProps {
|
|
3
|
+
/** Slice data */
|
|
4
|
+
slices: PieSlice[];
|
|
5
|
+
/** Chart width in pixels. Optional when fillWidth is true. */
|
|
6
|
+
width?: number;
|
|
7
|
+
/** Chart height in pixels. Optional when aspectRatio is provided. */
|
|
8
|
+
height?: number;
|
|
9
|
+
/** When true, chart fills container width */
|
|
10
|
+
fillWidth?: boolean;
|
|
11
|
+
/** Aspect ratio (width/height). Used to auto-calculate height when fillWidth is true. */
|
|
12
|
+
aspectRatio?: number;
|
|
13
|
+
/** Inner radius for donut charts (0 = full pie) */
|
|
14
|
+
innerRadius?: number;
|
|
15
|
+
/** Gap between slices in radians */
|
|
16
|
+
padAngle?: number;
|
|
17
|
+
/** Rounded slice corners in px */
|
|
18
|
+
cornerRadius?: number;
|
|
19
|
+
/** Format values in tooltip/labels */
|
|
20
|
+
valueFormatter?: ChartValueFormatter;
|
|
21
|
+
/** Format labels in legend/tooltip */
|
|
22
|
+
labelFormatter?: ChartLabelFormatter;
|
|
23
|
+
/** Custom tooltip renderer */
|
|
24
|
+
tooltipRenderer?: ChartTooltipRenderer;
|
|
25
|
+
/** Disable tooltip */
|
|
26
|
+
noTooltip?: boolean;
|
|
27
|
+
/** Show legend */
|
|
28
|
+
showLegend?: boolean;
|
|
29
|
+
/** Show percentage labels on slices */
|
|
30
|
+
showLabels?: boolean;
|
|
31
|
+
/** Accessible label for the chart SVG */
|
|
32
|
+
ariaLabel?: string;
|
|
33
|
+
}
|
|
34
|
+
declare const PieChart: ({ slices, width, height, fillWidth, aspectRatio, innerRadius, padAngle, cornerRadius, valueFormatter, labelFormatter, tooltipRenderer, noTooltip, showLegend, showLabels, ariaLabel, }: PieChartProps) => import("react").JSX.Element;
|
|
35
|
+
export default PieChart;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { useGalaxyTheme, withTheme } from "../theme/GalaxyTheme.js";
|
|
2
|
+
import Text, { TextSize, TextWeight } from "../text/Text.js";
|
|
3
|
+
import FlexWrapper, { AlignItems, FlexDirection, JustifyContent } from "../containers/FlexWrapper.js";
|
|
4
|
+
import { useElementWidth } from "../hooks/useElementWidth.js";
|
|
5
|
+
import Wrapper from "../containers/Wrapper.js";
|
|
6
|
+
import { getChartPalette } from "./constants.js";
|
|
7
|
+
import { defaultLabelFormatter, defaultValueFormatter } from "./utils.js";
|
|
8
|
+
import ChartLegend from "./ChartLegend.js";
|
|
9
|
+
import ChartTooltip from "./ChartTooltip.js";
|
|
10
|
+
/* empty css */
|
|
11
|
+
import { styled } from "@linaria/react";
|
|
12
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
13
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
+
import { arc, pie } from "d3-shape";
|
|
15
|
+
//#region src/charts/PieChart.tsx
|
|
16
|
+
var DEFAULT_PAD_ANGLE = .02;
|
|
17
|
+
var DEFAULT_CORNER_RADIUS = 2;
|
|
18
|
+
var PIE_MARGIN = 8;
|
|
19
|
+
var _exp = () => ({ $fillWidth }) => $fillWidth ? "flex" : "inline-flex";
|
|
20
|
+
var _exp2 = () => ({ $fillWidth }) => $fillWidth ? "100%" : "auto";
|
|
21
|
+
var ChartWrapper = withTheme(/*#__PURE__*/ styled("div")({
|
|
22
|
+
name: "ChartWrapper",
|
|
23
|
+
class: "c1ez9f1",
|
|
24
|
+
propsAsIs: false,
|
|
25
|
+
vars: {
|
|
26
|
+
"c1ez9f1-0": [_exp()],
|
|
27
|
+
"c1ez9f1-1": [_exp2()]
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
30
|
+
var resolveSliceColor = (slice, index, palette) => slice.color ?? palette[index % palette.length];
|
|
31
|
+
var PieChart = ({ slices, width, height, fillWidth = false, aspectRatio, innerRadius = 0, padAngle = DEFAULT_PAD_ANGLE, cornerRadius = DEFAULT_CORNER_RADIUS, valueFormatter = defaultValueFormatter, labelFormatter = defaultLabelFormatter, tooltipRenderer, noTooltip = false, showLegend = true, showLabels = false, ariaLabel }) => {
|
|
32
|
+
const { theme } = useGalaxyTheme();
|
|
33
|
+
const containerRef = useRef(null);
|
|
34
|
+
const svgRef = useRef(null);
|
|
35
|
+
const [tooltip, setTooltip] = useState(null);
|
|
36
|
+
const [hoveredSliceIndex, setHoveredSliceIndex] = useState(null);
|
|
37
|
+
const measuredWidth = useElementWidth(containerRef);
|
|
38
|
+
const resolvedWidth = fillWidth ? measuredWidth ?? 0 : width ?? 0;
|
|
39
|
+
const resolvedHeight = aspectRatio ? resolvedWidth / aspectRatio : height ?? 0;
|
|
40
|
+
const palette = useMemo(() => getChartPalette(theme), [theme]);
|
|
41
|
+
const outerRadius = useMemo(() => Math.min(resolvedWidth, resolvedHeight) / 2 - PIE_MARGIN, [resolvedWidth, resolvedHeight]);
|
|
42
|
+
const effectivePadAngle = innerRadius > 0 ? padAngle : 0;
|
|
43
|
+
const pieGen = useMemo(() => pie().value((d) => d.value).sort(null).padAngle(effectivePadAngle), [effectivePadAngle]);
|
|
44
|
+
const arcs = useMemo(() => pieGen(slices), [pieGen, slices]);
|
|
45
|
+
const arcGen = useMemo(() => arc().innerRadius(innerRadius).outerRadius(outerRadius).cornerRadius(cornerRadius), [
|
|
46
|
+
innerRadius,
|
|
47
|
+
outerRadius,
|
|
48
|
+
cornerRadius
|
|
49
|
+
]);
|
|
50
|
+
const labelArc = useMemo(() => {
|
|
51
|
+
const mid = innerRadius > 0 ? (innerRadius + outerRadius) / 2 : outerRadius * .65;
|
|
52
|
+
return arc().innerRadius(mid).outerRadius(mid);
|
|
53
|
+
}, [innerRadius, outerRadius]);
|
|
54
|
+
const total = useMemo(() => slices.reduce((sum, s) => sum + s.value, 0), [slices]);
|
|
55
|
+
const handleSliceMouseEnter = useCallback((sliceIndex, event) => {
|
|
56
|
+
const slice = slices[sliceIndex];
|
|
57
|
+
if (!slice) return;
|
|
58
|
+
const svgRect = svgRef.current?.getBoundingClientRect();
|
|
59
|
+
if (!svgRect) return;
|
|
60
|
+
setHoveredSliceIndex(sliceIndex);
|
|
61
|
+
setTooltip({
|
|
62
|
+
label: labelFormatter(slice.label),
|
|
63
|
+
items: [{
|
|
64
|
+
seriesKey: slice.label,
|
|
65
|
+
seriesName: labelFormatter(slice.label),
|
|
66
|
+
value: slice.value,
|
|
67
|
+
color: resolveSliceColor(slice, sliceIndex, palette)
|
|
68
|
+
}],
|
|
69
|
+
x: event.clientX - svgRect.left,
|
|
70
|
+
y: event.clientY - svgRect.top
|
|
71
|
+
});
|
|
72
|
+
}, [
|
|
73
|
+
slices,
|
|
74
|
+
palette,
|
|
75
|
+
labelFormatter
|
|
76
|
+
]);
|
|
77
|
+
const handleSliceMouseMove = useCallback((event) => {
|
|
78
|
+
if (hoveredSliceIndex === null) return;
|
|
79
|
+
const svgRect = svgRef.current?.getBoundingClientRect();
|
|
80
|
+
if (!svgRect) return;
|
|
81
|
+
setTooltip((prev) => prev ? {
|
|
82
|
+
...prev,
|
|
83
|
+
x: event.clientX - svgRect.left,
|
|
84
|
+
y: event.clientY - svgRect.top
|
|
85
|
+
} : null);
|
|
86
|
+
}, [hoveredSliceIndex]);
|
|
87
|
+
const handleSliceMouseLeave = useCallback(() => {
|
|
88
|
+
setHoveredSliceIndex(null);
|
|
89
|
+
setTooltip(null);
|
|
90
|
+
}, []);
|
|
91
|
+
const legendSeries = useMemo(() => slices.map((s, i) => ({
|
|
92
|
+
key: s.label,
|
|
93
|
+
name: labelFormatter(s.label),
|
|
94
|
+
color: resolveSliceColor(s, i, palette)
|
|
95
|
+
})), [
|
|
96
|
+
slices,
|
|
97
|
+
palette,
|
|
98
|
+
labelFormatter
|
|
99
|
+
]);
|
|
100
|
+
if (resolvedWidth === 0 || resolvedHeight === 0) return /* @__PURE__ */ jsx(ChartWrapper, {
|
|
101
|
+
ref: containerRef,
|
|
102
|
+
$fillWidth: fillWidth
|
|
103
|
+
});
|
|
104
|
+
const cx = resolvedWidth / 2;
|
|
105
|
+
const cy = resolvedHeight / 2;
|
|
106
|
+
const defaultAriaLabel = `Pie chart with ${slices.length} slices`;
|
|
107
|
+
return /* @__PURE__ */ jsxs(ChartWrapper, {
|
|
108
|
+
ref: containerRef,
|
|
109
|
+
$fillWidth: fillWidth,
|
|
110
|
+
children: [/* @__PURE__ */ jsxs(Wrapper, {
|
|
111
|
+
position: "relative",
|
|
112
|
+
children: [/* @__PURE__ */ jsx("svg", {
|
|
113
|
+
ref: svgRef,
|
|
114
|
+
width: resolvedWidth,
|
|
115
|
+
height: resolvedHeight,
|
|
116
|
+
role: "img",
|
|
117
|
+
"aria-label": ariaLabel ?? defaultAriaLabel,
|
|
118
|
+
children: /* @__PURE__ */ jsx("g", {
|
|
119
|
+
transform: `translate(${cx}, ${cy})`,
|
|
120
|
+
children: arcs.map((d, i) => {
|
|
121
|
+
const color = resolveSliceColor(d.data, i, palette);
|
|
122
|
+
const isDimmed = hoveredSliceIndex !== null && hoveredSliceIndex !== i;
|
|
123
|
+
const path = arcGen(d) ?? "";
|
|
124
|
+
const pct = total > 0 ? Math.round(d.data.value / total * 100) : 0;
|
|
125
|
+
return /* @__PURE__ */ jsxs("g", { children: [/* @__PURE__ */ jsx("path", {
|
|
126
|
+
d: path,
|
|
127
|
+
fill: color,
|
|
128
|
+
opacity: isDimmed ? .3 : 1,
|
|
129
|
+
style: {
|
|
130
|
+
transition: `opacity 150ms ease-in-out`,
|
|
131
|
+
cursor: "pointer"
|
|
132
|
+
},
|
|
133
|
+
onMouseEnter: (e) => handleSliceMouseEnter(i, e),
|
|
134
|
+
onMouseMove: handleSliceMouseMove,
|
|
135
|
+
onMouseLeave: handleSliceMouseLeave,
|
|
136
|
+
onFocus: (e) => handleSliceMouseEnter(i, e),
|
|
137
|
+
onBlur: handleSliceMouseLeave,
|
|
138
|
+
tabIndex: 0,
|
|
139
|
+
role: "graphics-symbol",
|
|
140
|
+
"aria-roledescription": "slice",
|
|
141
|
+
"aria-label": `${labelFormatter(d.data.label)}: ${valueFormatter(d.data.value)} (${pct}%)`
|
|
142
|
+
}), showLabels && pct > 5 && (() => {
|
|
143
|
+
const [lx, ly] = labelArc.centroid(d);
|
|
144
|
+
const labelW = 48;
|
|
145
|
+
const labelH = 20;
|
|
146
|
+
return /* @__PURE__ */ jsx("foreignObject", {
|
|
147
|
+
x: lx - labelW / 2,
|
|
148
|
+
y: ly - labelH / 2,
|
|
149
|
+
width: labelW,
|
|
150
|
+
height: labelH,
|
|
151
|
+
style: { pointerEvents: "none" },
|
|
152
|
+
children: /* @__PURE__ */ jsx(FlexWrapper, {
|
|
153
|
+
justifyContent: JustifyContent.CENTER,
|
|
154
|
+
alignItems: AlignItems.CENTER,
|
|
155
|
+
fillWidth: true,
|
|
156
|
+
fillHeight: true,
|
|
157
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
158
|
+
size: TextSize.CAPTION,
|
|
159
|
+
weight: TextWeight.MEDIUM,
|
|
160
|
+
hex: theme.color.text.primaryAlt,
|
|
161
|
+
children: `${pct}%`
|
|
162
|
+
})
|
|
163
|
+
})
|
|
164
|
+
});
|
|
165
|
+
})()] }, d.data.label);
|
|
166
|
+
})
|
|
167
|
+
})
|
|
168
|
+
}), !noTooltip && (tooltipRenderer ? tooltip && tooltipRenderer(tooltip) : /* @__PURE__ */ jsx(ChartTooltip, {
|
|
169
|
+
data: tooltip,
|
|
170
|
+
valueFormatter
|
|
171
|
+
}))]
|
|
172
|
+
}), showLegend && /* @__PURE__ */ jsx(FlexWrapper, {
|
|
173
|
+
direction: FlexDirection.ROW,
|
|
174
|
+
gap: 0,
|
|
175
|
+
children: /* @__PURE__ */ jsx(ChartLegend, {
|
|
176
|
+
series: legendSeries,
|
|
177
|
+
palette
|
|
178
|
+
})
|
|
179
|
+
})]
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
//#endregion
|
|
183
|
+
export { PieChart as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Theme } from "../theme/types";
|
|
2
|
+
import type { ChartMargin } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Theme-derived chart series color palette.
|
|
5
|
+
* Purple first to match Galaxy brand aesthetic.
|
|
6
|
+
*/
|
|
7
|
+
export declare const getChartPalette: (theme: Theme) => string[];
|
|
8
|
+
export declare const DEFAULT_CHART_MARGIN: ChartMargin;
|
|
9
|
+
/** Spacing between bars within a group (fraction of bandwidth, 0-1) */
|
|
10
|
+
export declare const DEFAULT_BAR_PADDING_INNER = 0.2;
|
|
11
|
+
/** Spacing around bar groups (fraction of step, 0-1) */
|
|
12
|
+
export declare const DEFAULT_BAR_PADDING_OUTER = 0.1;
|
|
13
|
+
/** Default bar top-corner radius in px */
|
|
14
|
+
export declare const DEFAULT_BAR_RADIUS = 4;
|
|
15
|
+
/** Default line stroke width in px */
|
|
16
|
+
export declare const DEFAULT_LINE_STROKE_WIDTH = 2;
|
|
17
|
+
/** Default data-point dot radius in px */
|
|
18
|
+
export declare const DEFAULT_LINE_DOT_RADIUS = 4;
|
|
19
|
+
/** Transition duration in ms for hover effects */
|
|
20
|
+
export declare const CHART_TRANSITION_MS = 150;
|
|
21
|
+
/** Default number of y-axis ticks */
|
|
22
|
+
export declare const DEFAULT_Y_TICK_COUNT = 5;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/charts/constants.ts
|
|
2
|
+
/**
|
|
3
|
+
* Theme-derived chart series color palette.
|
|
4
|
+
* Purple first to match Galaxy brand aesthetic.
|
|
5
|
+
*/
|
|
6
|
+
var getChartPalette = (theme) => [
|
|
7
|
+
theme.color.text.purple,
|
|
8
|
+
theme.color.text.pink,
|
|
9
|
+
theme.color.text.blue,
|
|
10
|
+
theme.color.text.teal,
|
|
11
|
+
theme.color.text.lime,
|
|
12
|
+
theme.color.text.orange,
|
|
13
|
+
theme.color.text.yellow,
|
|
14
|
+
theme.color.text.success,
|
|
15
|
+
theme.color.text.error
|
|
16
|
+
];
|
|
17
|
+
var DEFAULT_CHART_MARGIN = {
|
|
18
|
+
top: 16,
|
|
19
|
+
right: 16,
|
|
20
|
+
bottom: 32,
|
|
21
|
+
left: 48
|
|
22
|
+
};
|
|
23
|
+
/** Spacing between bars within a group (fraction of bandwidth, 0-1) */
|
|
24
|
+
var DEFAULT_BAR_PADDING_INNER = .2;
|
|
25
|
+
/** Spacing around bar groups (fraction of step, 0-1) */
|
|
26
|
+
var DEFAULT_BAR_PADDING_OUTER = .1;
|
|
27
|
+
/** Default bar top-corner radius in px */
|
|
28
|
+
var DEFAULT_BAR_RADIUS = 4;
|
|
29
|
+
/** Default line stroke width in px */
|
|
30
|
+
var DEFAULT_LINE_STROKE_WIDTH = 2;
|
|
31
|
+
/** Default data-point dot radius in px */
|
|
32
|
+
var DEFAULT_LINE_DOT_RADIUS = 4;
|
|
33
|
+
/** Transition duration in ms for hover effects */
|
|
34
|
+
var CHART_TRANSITION_MS = 150;
|
|
35
|
+
/** Default number of y-axis ticks */
|
|
36
|
+
var DEFAULT_Y_TICK_COUNT = 5;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { CHART_TRANSITION_MS, DEFAULT_BAR_PADDING_INNER, DEFAULT_BAR_PADDING_OUTER, DEFAULT_BAR_RADIUS, DEFAULT_CHART_MARGIN, DEFAULT_LINE_DOT_RADIUS, DEFAULT_LINE_STROKE_WIDTH, DEFAULT_Y_TICK_COUNT, getChartPalette };
|