Skip to content

brainstormforce/force-ui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Getting Started

Learn how to use @bsf/force-ui components to quickly and easily create elegant and flexible pages using Tailwind CSS.

@bsf/force-ui is working with Tailwind CSS classes and you need to have Tailwind CSS installed on your project - Tailwind CSS Installation.


  1. Install @bsf/force-ui.

Force UI library can be installed using npm package manager. Since this library is still in it's alpha phase, we need to use the staging branch.

Using Force UI as a dependency in package.json -

"dependencies": {
  "@bsf/force-ui": "git+https://github.com/brainstormforce/force-ui#1.3.3"
}

And run the following command to install the package -

npm install

Or you can directly run the following command to install the package -

npm i -S @bsf/force-ui@git+https://github.com/brainstormforce/force-ui.git#1.3.3

  1. Once you install @bsf/force-ui you need to wrap your tailwind css configurations with the withTW() function coming from @bsf/force-ui/withTW.
const withTW = require( '@bsf/force-ui/withTW' );

module.exports = withTW( {
	content: [ './src/**/*.{js, jsx}' ],
	theme: {
		extend: {
			colors: {
				'button-primary': '#6B21A8',
				'button-primary-hover': '#7E22CE',
				'brand-800': '#6B21A8',
				'brand-50': '#FAF5FF',
				'border-interactive': '#6B21A8',
				focus: '#9333EA',
				'focus-border': '#D8B4FE',
				'toggle-on': '#6B21A8',
				'toggle-on-border': '#C084FC',
				'toggle-on-hover': '#A855F7',
			},
			fontSize: {
				xxs: '0.6875rem', // 11px
			},
			lineHeight: {
				2.6: '0.6875rem', // 11px
			},
			boxShadow: {
				'content-wrapper':
					'0px 1px 1px 0px #0000000F, 0px 1px 2px 0px #0000001A',
			},
		},
	},
	plugins: [],
	corePlugins: {
		preflight: false,
	},
	important: '.surerank-styles',
} );

  1. @bsf/force-ui comes with a default tailwind theme settings that set's the default theme/styles for components or to provide your own theme/styles to your components. You can override these give below variables in your tailwind.config.js file.
theme: {
  extend: {
    colors: {
      // brand
      'brand-background-50': '#EFF6FF',
      'brand-background-hover-100': '#DBEAFE',
      'brand-200': '#BFDBFE',
      'brand-border-300': '#93C5FD',
      'brand-400': '#60A5FA',
      'brand-500': '#3B82F6',
      'brand-primary-600': '#2563EB',
      'brand-hover-700': '#1D4ED8',
      'brand-800': '#1E40AF',
      'brand-900': '#1E3A8A',
      'brand-text-950': '#172554',
      // background
      'background-primary': '#FFFFFF',
      'background-secondary': '#F3F4F6',
      'background-inverse': '#111827',
      'background-brand': '#2563EB',
      'background-important': '#DC2626',
      // field
      'field-primary-background': '#F9FAFB',
      'field-secondary-background': '#FFFFFF',
      'field-primary-hover': '#F3F4F6',
      'field-secondary-hover': '#F3F4F6',
      'field-dropzone-background': '#FFFFFF',
      'field-border': '#E5E7EB',
      'field-dropzone-background-hover': '#F9FAFB',
      'field-dropzone-color': '#2563EB',
      'field-label': '#111827',
      'field-input': '#111827',
      'field-helper': '#9CA3AF',
      'field-background-disabled': '#F9FAFB',
      'field-color-disabled': '#D1D5DB',
      'field-placeholder': '#6B7280',
      'field-border-disabled': '#F3F4F6',
      'field-color-error': '#DC2626',
      'field-border-error': '#FECACA',
      'field-background-error': '#FEF2F2',
      'field-required': '#DC2626',
      // border
      'border-interactive': '#2563EB',
      'border-subtle': '#E5E7EB',
      'border-strong': '#6B7280',
      'border-inverse': '#374151',
      'border-disabled': '#E5E7EB',
      'border-muted': '#E5E7EB',
      'border-error': '#DC2626',
      'border-transparent-subtle': '#37415114',
      'border-white': '#FFFFFF',
      // text
      'text-primary': '#111827',
      'text-secondary': '#4B5563',
      'text-tertiary': '#9CA3AF',
      'text-on-color': '#FFFFFF',
      'text-error': '#DC2626',
      'text-error-inverse': '#F87171',
      'text-inverse': '#FFFFFF',
      'text-disabled': '#D1D5DB',
      'text-on-button-disabled': '#9CA3AF',
      // link
      'link-primary': '#2563EB',
      'link-primary-hover': '#1D4ED8',
      'link-inverse': '#38BDF8',
      'link-visited': '#7C3AED',
      'link-visited-inverse': '#A78BFA',
      'link-inverse-hover': '#7DD3FC',
      // icon
      'icon-primary': '#111827',
      'icon-secondary': '#4B5563',
      'icon-on-color': '#FFFFFF',
      'icon-inverse': '#FFFFFF',
      'icon-interactive': '#2563EB',
      'icon-on-color-disabled': '#9CA3AF',
      'icon-disabled': '#D1D5DB',
      // support
      'support-error': '#DC2626',
      'support-success': '#16A34A',
      'support-warning': '#EAB308',
      'support-info': '#0284C7',
      'support-error-inverse': '#F87171',
      'support-success-inverse': '#4ADE80',
      'support-warning-inverse': '#FDE047',
      'support-info-inverse': '#38BDF8',
      // button
      'button-primary': '#2563EB',
      'button-primary-hover': '#1D4ED8',
      'button-secondary': '#1F2937',
      'button-secondary-hover': '#374151',
      'button-tertiary': '#FFFFFF',
      'button-tertiary-hover': '#F9FAFB',
      'button-danger': '#DC2626',
      'button-danger-secondary': '#DC2626',
      'button-danger-hover': '#B91C1C',
      'button-disabled': '#F3F4F6',
      'button-tertiary-border': '#E5E7EB',
      'button-tertiary-color': '#111827',
      // focus
      focus: '#2563EB',
      'focus-inset': '#FFFFFF',
      'focus-inverse': '#38BDF8',
      'focus-inverse-inset': '#111827',
      'focus-error': '#DC2626',
      'focus-border': '#BFDBFE',
      'focus-error-border': '#FECACA',
      // misc
      'misc-highlight': '#BFDBFE',
      'misc-overlay': '#11182780',
      'misc-skeleton-background': '#F3F4F6',
      'misc-skeleton-element': '#D1D5DB',
      'misc-popup-button-hover': '#1118270D',
      'misc-tab-item-hover': '#E5E7EB',
      'misc-dropdown-hover': '#F3F4F6',
      'misc-loader-base': '#1118270D',
      'misc-loader-color': '#2563EB',
      'misc-progress-background': '#E5E7EB',
      // badge
      'badge-background-gray': '#F9FAFB',
      'badge-color-gray': '#1F2937',
      'badge-hover-gray': '#F3F4F6',
      'badge-border-gray': '#E5E7EB',
      'badge-background-red': '#FEF2F2',
      'badge-color-red': '#B91C1C',
      'badge-hover-red': '#FEE2E2',
      'badge-border-red': '#FECACA',
      'badge-background-yellow': '#FEFCE8',
      'badge-color-yellow': '#A16207',
      'badge-hover-yellow': '#FEF9C3',
      'badge-border-yellow': '#FEF08A',
      'badge-hover-green': '#DCFCE7',
      'badge-border-green': '#BBF7D0',
      'badge-background-green': '#F0FDF4',
      'badge-color-green': '#15803D',
      'badge-background-sky': '#F0F9FF',
      'badge-color-sky': '#0369A1',
      'badge-hover-sky': '#E0F2FE',
      'badge-border-sky': '#BAE6FD',
      'badge-background-disabled': '#F3F4F6',
      'badge-color-disabled': '#D1D5DB',
      'badge-hover-disabled': '#F3F4F6',
      'badge-border-disabled': '#E5E7EB',
      'badge-background-important': '#DC2626',
      // alert
      'alert-background-neutral': '#FFFFFF',
      'alert-border-neutral': '#E5E7EB',
      'alert-background-danger': '#FEF2F2',
      'alert-border-danger': '#FECACA',
      'alert-background-warning': '#FEFCE8',
      'alert-border-warning': '#FEF08A',
      'alert-background-green': '#F0FDF4',
      'alert-border-green': '#BBF7D0',
      'alert-background-info': '#F0F9FF',
      'alert-border-info': '#BAE6FD',
      // tab
      'tab-background': '#F3F4F6',
      'tab-border': '#E5E7EB',
      // tooltip
      'tooltip-background-light': '#FFFFFF',
      'tooltip-background-dark': '#111827',
      // toggle
      'toggle-off': '#E5E7EB',
      'toggle-on': '#2563EB',
      'toggle-dial-background': '#FFFFFF',
      'toggle-off-hover': '#D1D5DB',
      'toggle-off-border': '#D1D5DB',
      'toggle-on-hover': '#3B82F6',
      'toggle-on-border': '#60A5FA',
      'toggle-off-disabled': '#F3F4F6',
    },
    width: {
      '1/7': '14.2857143%',
      '1/8': '12.5%',
      '1/9': '11.1111111%',
      '1/10': '10%',
      '1/11': '9.0909091%',
      '1/12': '8.3333333%',
    },
    boxShadow: {
      'soft-shadow-sm':
        '0px 6px 32px -12px rgba(149, 160, 178, 0.12)',
      'soft-shadow': '0px 8px 32px -12px rgba(149, 160, 178, 0.16)',
      'soft-shadow-md':
        '0px 10px 32px -12px rgba(149, 160, 178, 0.2)',
      'soft-shadow-lg':
        '0px 12px 32px -12px rgba(149, 160, 178, 0.24)',
      'soft-shadow-xl':
        '0px 16px 32px -12px rgba(149, 160, 178, 0.32)',
      'soft-shadow-2xl':
        '0px 24px 64px -12px rgba(149, 160, 178, 0.32)',
      'soft-shadow-inner': '0px 1px 1px 0px rgba(0, 0, 0, 0.05)',
    },
    fontSize: {
      tiny: '0.625rem',
    },
    spacing: {
      120: '30rem', // 480px
      95: '23.75rem', // 380px
      141.5: '35.375rem', // 566px
      188: '47rem', // 752px
    },
    zIndex: {
      999999: '999999',
    },
  },
}

  1. Great 🥳, now you're ready to use @bsf/force-ui.
import { Button } from "@bsf/force-ui";

export default function Example() {
  return <Button>My Button</Button>;
}

@bsf/force-ui Documentation

Visit https://github.com/brainstormforce/force-ui/wiki for full documentation.

Contributing

Contributions are always welcome!

See CONTRIBUTING.md for ways to get started.

Please adhere to this project's CODE_OF_CONDUCT.md.