Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(styles): add skeleton sass modules and stories #9423

Merged
merged 9 commits into from
Aug 19, 2021
Merged
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import React from 'react';
import { SkeletonPlaceholder, SkeletonText } from 'carbon-components-react';
import { withKnobs, select, boolean, number } from '@storybook/addon-knobs';

const classNames = {
'my--skeleton__placeholder--small': 'my--skeleton__placeholder--small',
'my--skeleton__placeholder--medium': 'my--skeleton__placeholder--medium',
'my--skeleton__placeholder--large': 'my--skeleton__placeholder--large',
};

const placeholderProps = () => ({
className: select('Classes with different sizes', classNames),
});

const widths = {
'100%': '100%',
'250px': '250px',
};

const textProps = () => ({
heading: boolean('Skeleton text at a larger size (heading)'),
paragraph: boolean('Use multiple lines of text (paragraph)'),
lineCount: number('The number of lines in a paragraph (lineCount)', 3),
width: select(
'Width (in px or %) of single line of text or max-width of paragraph lines (width)',
widths,
'100%'
),
});

export default {
title: 'Components/Skeleton',
decorators: [withKnobs],
};

export const _SkeletonPlaceholder = () => {
return (
<div style={{ height: '250px', width: '250px' }}>
<style
dangerouslySetInnerHTML={{
__html: `
.my--skeleton__placeholder--small {
height: 100px;
width: 100px;
}

.my--skeleton__placeholder--medium {
height: 150px;
width: 150px;
}

.my--skeleton__placeholder--large {
height: 250px;
width: 250px;
}
`,
}}
/>
<SkeletonPlaceholder {...placeholderProps()} />
</div>
);
};

export const _SkeletonText = () => {
return (
<div style={{ width: '300px' }}>
<SkeletonText {...textProps()} />
</div>
);
};
8 changes: 8 additions & 0 deletions packages/carbon-react/src/components/Skeleton/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/**
* Copyright IBM Corp. 2016, 2018
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

export { SkeletonPlaceholder, SkeletonText } from 'carbon-components-react';
26 changes: 26 additions & 0 deletions packages/styles/scss/components/__tests__/skeleton-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* Copyright IBM Corp. 2018, 2018
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*
* @jest-environment node
*/

'use strict';

const { SassRenderer } = require('@carbon/test-utils/scss');

const { render } = SassRenderer.create(__dirname);

describe('scss/components/skeleton', () => {
test('Public API', async () => {
const { unwrap } = await render(`
@use 'sass:meta';
@use '../skeleton';

$_: get('mixin', meta.mixin-exists('skeleton', 'skeleton'));
`);
expect(unwrap('mixin')).toBe(true);
});
});
1 change: 1 addition & 0 deletions packages/styles/scss/components/_index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
@use 'radio-button';
@use 'search';
@use 'select';
@use 'skeleton' as skeleton-styles;
jnm2377 marked this conversation as resolved.
Show resolved Hide resolved
@use 'slider';
@use 'structured-list';
@use 'tabs';
Expand Down
11 changes: 11 additions & 0 deletions packages/styles/scss/components/skeleton/_index.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//
// Copyright IBM Corp. 2018, 2018
//
// This source code is licensed under the Apache-2.0 license found in the
// LICENSE file in the root directory of this source tree.
//

@forward 'skeleton';
@use 'skeleton';

@include skeleton.skeleton-styles;
47 changes: 47 additions & 0 deletions packages/styles/scss/components/skeleton/_skeleton.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//
// Copyright IBM Corp. 2016, 2018
//
// This source code is licensed under the Apache-2.0 license found in the
// LICENSE file in the root directory of this source tree.
//

@use '../../config' as *;
@use '../../utilities/skeleton' as *;
@use '../../utilities/convert' as *;
@use '../../spacing' as *;

/// Skeleton styles
/// @access public
/// @group skeleton
@mixin skeleton-styles {
//skeleton icon
.#{$prefix}--icon--skeleton {
@include skeleton;

display: inline-block;
width: rem(16px);
height: rem(16px);
}

//skeleton placeholder
.#{$prefix}--skeleton__placeholder {
@include skeleton;

width: rem(100px);

height: rem(100px);
}

//skeleton text
.#{$prefix}--skeleton__text {
@include skeleton;

width: 100%;
height: 1rem;
margin-bottom: $spacing-03;
}

.#{$prefix}--skeleton__heading {
height: 1.5rem;
}
}