diff --git a/datahub-web-react/src/app/browse/BrowseResultCard.tsx b/datahub-web-react/src/app/browse/BrowseResultCard.tsx index 990e0b6031..1ba54a30ab 100644 --- a/datahub-web-react/src/app/browse/BrowseResultCard.tsx +++ b/datahub-web-react/src/app/browse/BrowseResultCard.tsx @@ -2,6 +2,22 @@ import React from 'react'; import { Card, Row, Space, Typography } from 'antd'; import { Link } from 'react-router-dom'; import { ArrowRightOutlined, FolderOutlined } from '@ant-design/icons'; +import styled from 'styled-components'; + +const styles = { + row: { padding: 8 }, + title: { margin: 0 }, +}; + +const ResultCard = styled(Card)` + && { + border-color: ${(props) => props.theme.styles['border-color-base']}; + box-shadow: ${(props) => props.theme.styles['box-shadow']}; + } + &&:hover { + box-shadow: ${(props) => props.theme.styles['box-shadow-hover']}; + } +`; export interface BrowseResultProps { url: string; @@ -13,11 +29,11 @@ export interface BrowseResultProps { export default function BrowseResultCard({ url, count, name, type }: BrowseResultProps) { return ( - - + + - + {name} @@ -30,7 +46,7 @@ export default function BrowseResultCard({ url, count, name, type }: BrowseResul - + ); } diff --git a/datahub-web-react/src/app/browse/BrowseResults.tsx b/datahub-web-react/src/app/browse/BrowseResults.tsx index 7647284aeb..93ffbb2091 100644 --- a/datahub-web-react/src/app/browse/BrowseResults.tsx +++ b/datahub-web-react/src/app/browse/BrowseResults.tsx @@ -1,13 +1,20 @@ import React from 'react'; -import { Col, Divider, Pagination, Row } from 'antd'; +import styled from 'styled-components'; +import { Col, Divider, List, Pagination, Row } from 'antd'; import { Content } from 'antd/lib/layout/layout'; import { BrowseResultGroup, EntityType, Entity } from '../../types.generated'; import BrowseResultCard from './BrowseResultCard'; import { useEntityRegistry } from '../useEntityRegistry'; -const styles = { - browseCard: { marginTop: 20 }, -}; +const EntityList = styled(List)` + && { + width: 100%; + margin-top: 12px; + padding: 16px 32px; + border-color: ${(props) => props.theme.styles['border-color-base']}; + box-shadow: ${(props) => props.theme.styles['box-shadow']}; + } +`; interface Props { type: EntityType; @@ -51,12 +58,19 @@ export const BrowseResults = ({ /> ))} - {entities.map((entity) => ( - - {entityRegistry.renderBrowse(type, entity)} - - - ))} + {entities.length > 0 && ( + ( + <> + {entityRegistry.renderBrowse(type, item)} + {index < entities.length - 1 && } + + )} + bordered + /> + )} props.theme.styles['homepage-background-upper-fade']}, + 75%, ${(props) => props.theme.styles['homepage-background-lower-fade']} ); `; diff --git a/datahub-web-react/src/app/search/AllEntitiesSearchResults.tsx b/datahub-web-react/src/app/search/AllEntitiesSearchResults.tsx index 776113b80b..7d0dbacbb9 100644 --- a/datahub-web-react/src/app/search/AllEntitiesSearchResults.tsx +++ b/datahub-web-react/src/app/search/AllEntitiesSearchResults.tsx @@ -28,7 +28,13 @@ export const AllEntitiesSearchResults = ({ query }: Props) => { ); }); - const noResultsView = ; + const noResultsView = ( + + ); return ( <> diff --git a/datahub-web-react/src/app/search/BrowseEntityCard.tsx b/datahub-web-react/src/app/search/BrowseEntityCard.tsx index 5027fb9afe..314d4e79c8 100644 --- a/datahub-web-react/src/app/search/BrowseEntityCard.tsx +++ b/datahub-web-react/src/app/search/BrowseEntityCard.tsx @@ -1,32 +1,53 @@ import React from 'react'; import { Card, Typography, Row } from 'antd'; import { Link } from 'react-router-dom'; +import styled from 'styled-components'; import { useEntityRegistry } from '../useEntityRegistry'; import { PageRoutes } from '../../conf/Global'; import { IconStyleType } from '../entity/Entity'; import { EntityType } from '../../types.generated'; const styles = { - card: { width: 360 }, + row: { width: 360 }, title: { margin: 0 }, iconFlag: { right: '32px', top: '-28px' }, icon: { padding: '16px 24px' }, }; +const EntityCard = styled(Card)` + && { + margin-top: 16px; + border-color: ${(props) => props.theme.styles['border-color-base']}; + box-shadow: ${(props) => props.theme.styles['box-shadow']}; + } + &&:hover { + box-shadow: ${(props) => props.theme.styles['box-shadow-hover']}; + } +`; + +const FlagCard = styled(Card)` + &&& { + right: 32px; + top: -28px; + position: absolute; + border-color: ${(props) => props.theme.styles['border-color-base']}; + } +`; + export const BrowseEntityCard = ({ entityType }: { entityType: EntityType }) => { const entityRegistry = useEntityRegistry(); return ( - - + + {entityRegistry.getCollectionName(entityType)} - + {entityRegistry.getIcon(entityType, 24, IconStyleType.HIGHLIGHT)} - + - + ); }; diff --git a/datahub-web-react/src/app/search/EntityGroupSearchResults.tsx b/datahub-web-react/src/app/search/EntityGroupSearchResults.tsx index 235d8d5c19..c28651edd2 100644 --- a/datahub-web-react/src/app/search/EntityGroupSearchResults.tsx +++ b/datahub-web-react/src/app/search/EntityGroupSearchResults.tsx @@ -2,6 +2,7 @@ import { ArrowRightOutlined } from '@ant-design/icons'; import { Button, Card, Divider, List, Space, Typography } from 'antd'; import * as React from 'react'; import { useHistory } from 'react-router-dom'; +import styled from 'styled-components'; import { EntityType } from '../../types.generated'; import { IconStyleType } from '../entity/Entity'; import { useEntityRegistry } from '../useEntityRegistry'; @@ -11,11 +12,20 @@ const styles = { header: { marginBottom: 20 }, resultHeaderCardBody: { padding: '16px 24px' }, resultHeaderCard: { right: '52px', top: '-40px', position: 'absolute' }, - resultList: { width: '100%', borderColor: '#f0f0f0', marginTop: '8px', padding: '16px 48px' }, seeAllButton: { fontSize: 18 }, resultsContainer: { width: '100%', padding: '40px 132px' }, }; +const ResultList = styled(List)` + &&& { + width: 100%; + border-color: ${(props) => props.theme.styles['border-color-base']}; + margin-top: 8px; + padding: 16px 48px; + box-shadow: ${(props) => props.theme.styles['box-shadow']}; + } +`; + interface Props { type: EntityType; query: string; @@ -28,7 +38,7 @@ export const EntityGroupSearchResults = ({ type, query, entities }: Props) => { return ( - {entityRegistry.getCollectionName(type)} @@ -59,7 +69,6 @@ export const EntityGroupSearchResults = ({ type, query, entities }: Props) => { ) } - style={styles.resultList} dataSource={entities} split={false} renderItem={(item, index) => ( diff --git a/datahub-web-react/src/app/search/EntitySearchResults.tsx b/datahub-web-react/src/app/search/EntitySearchResults.tsx index 1980c9852d..563ecc2485 100644 --- a/datahub-web-react/src/app/search/EntitySearchResults.tsx +++ b/datahub-web-react/src/app/search/EntitySearchResults.tsx @@ -1,5 +1,6 @@ import React, { useState, useEffect } from 'react'; import { FilterOutlined } from '@ant-design/icons'; +import styled from 'styled-components'; import { Alert, Button, Card, Divider, List, Modal, Pagination, Row, Typography } from 'antd'; import { SearchCfg } from '../../conf'; import { useGetSearchResultsQuery } from '../../graphql/search.generated'; @@ -15,11 +16,20 @@ const styles = { resultSummary: { color: 'gray', marginTop: '36px' }, resultHeaderCardBody: { padding: '16px 24px' }, resultHeaderCard: { right: '52px', top: '-40px', position: 'absolute' }, - resultList: { width: '100%', borderColor: '#f0f0f0', marginTop: '12px', padding: '16px 32px' }, paginationRow: { padding: 40 }, resultsContainer: { width: '100%', padding: '20px 132px' }, }; +const ResultList = styled(List)` + &&& { + width: 100%; + border-color: ${(props) => props.theme.styles['border-color-base']}; + margin-top: 12px; + padding: 16px 32px; + box-shadow: ${(props) => props.theme.styles['box-shadow']}; + } +`; + interface Props { type: EntityType; query: string; @@ -114,13 +124,12 @@ export const EntitySearchResults = ({ type, query, page, filters, onChangeFilter {' '} of {totalResults} results - {entityRegistry.getIcon(type, 36, IconStyleType.ACCENT)} } - style={styles.resultList} dataSource={results} split={false} renderItem={(item, index) => ( diff --git a/datahub-web-react/src/conf/theme/theme_light.config.json b/datahub-web-react/src/conf/theme/theme_light.config.json index ccdef5e051..06ff7e804a 100644 --- a/datahub-web-react/src/conf/theme/theme_light.config.json +++ b/datahub-web-react/src/conf/theme/theme_light.config.json @@ -6,7 +6,7 @@ "layout-body-background": "white", "component-background": "white", "body-background": "white", - "border-color-base": "#dbdbdb", + "border-color-base": "#ececec", "text-color": "fade(black, 85%)", "text-color-secondary": "fade(black, 45%)", "heading-color": "fade(black, 85%)", @@ -15,7 +15,9 @@ "disabled-color": "fade(black, 25%)", "steps-nav-arrow-color": "fade(black, 25%)", "homepage-background-upper-fade": "#132935", - "homepage-background-lower-fade": "#FFFFFF" + "homepage-background-lower-fade": "#FFFFFF", + "box-shadow": "0px 0px 30px 0px rgb(239 239 239)", + "box-shadow-hover": "0px 1px 0px 0.5px rgb(239 239 239)" }, "assets": { "logoUrl": "/assets/logo.png" diff --git a/datahub-web-react/src/conf/theme/types.ts b/datahub-web-react/src/conf/theme/types.ts index 9104f2135b..bbd529a0ad 100644 --- a/datahub-web-react/src/conf/theme/types.ts +++ b/datahub-web-react/src/conf/theme/types.ts @@ -16,6 +16,8 @@ export type Theme = { 'steps-nav-arrow-color': string; 'homepage-background-upper-fade': string; 'homepage-background-lower-fade': string; + 'box-shadow': string; + 'box-shadow-hover': string; }; assets: { logoUrl: string; diff --git a/docker/quickstart-ember.sh b/docker/quickstart-ember.sh index 1865b109b4..351ead0532 100755 --- a/docker/quickstart-ember.sh +++ b/docker/quickstart-ember.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Quickstarts a Ember-serving variant of DataHub by pulling all images from dockerhub and then running the containers locally. +# Quickstarts an Ember-serving variant of DataHub by pulling all images from dockerhub and then running the containers locally. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" cd $DIR && docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.ember.yml pull && docker-compose -p datahub \ -f docker-compose.yml \