franken-ui
Version:
Franken UI is an HTML-first, open-source library of UI components based on the utility-first Tailwind CSS with UIkit 3 compatibility. The design is based on shadcn/ui ported to be framework-agnostic.
91 lines (90 loc) • 3.02 kB
JavaScript
import merge from 'lodash/merge.js';
export const rules = {
'.uk-dropdown': {
'--uk-position-offset': '10px',
'--uk-position-viewport-offset': '15px',
width: 'auto',
minWidth: '200px',
padding: '25px',
backgroundColor: '#fff',
color: '#666',
boxShadow: '0 5px 12px rgba(0, 0, 0, 0.15)'
},
'.uk-dropdown > :last-child': { marginBottom: '0' },
'.uk-dropdown :focus-visible': { outlineColor: '#333 !important' },
'.uk-dropdown-large': { padding: '40px' },
'.uk-dropdown-dropbar': {
width: 'auto',
background: 'transparent',
padding: '5px 0 25px 0',
'--uk-position-viewport-offset': '15px',
boxShadow: 'none'
},
'.uk-dropdown-dropbar-large': { paddingTop: '40px', paddingBottom: '40px' },
'.uk-dropdown-nav': { fontSize: '0.875rem' },
'.uk-dropdown-nav > li > a': { color: '#999' },
'.uk-dropdown-nav > li > a:hover, .uk-dropdown-nav > li.uk-active > a': {
color: '#666'
},
'.uk-dropdown-nav .uk-nav-subtitle': { fontSize: '12px' },
'.uk-dropdown-nav .uk-nav-header': { color: '#333' },
'.uk-dropdown-nav .uk-nav-divider': { borderTop: '1px solid #e5e5e5' },
'.uk-dropdown-nav .uk-nav-sub a': { color: '#999' },
'.uk-dropdown-nav .uk-nav-sub a:hover, .uk-dropdown-nav .uk-nav-sub li.uk-active > a': {
color: '#666'
}
};
export const media = {
'@media (min-width: 640px)': {
'.uk-dropdown-dropbar': { '--uk-position-viewport-offset': '30px' }
},
'@media (min-width: 768px)': {
'.uk-dropdown-dropbar': { '--uk-position-viewport-offset': '40px' }
}
};
export const addHooks = (args) => {
const { hooks } = args;
const defaultHooks = {
'hook-dropdown': {},
'hook-dropbar': {},
'hook-dropbar-large': {},
'hook-nav': {},
'hook-nav-item': {},
'hook-nav-item-hover': {},
'hook-nav-subtitle': {},
'hook-nav-header': {},
'hook-nav-divider': {},
'hook-misc': {}
};
const _hooks = merge(defaultHooks, hooks);
return {
'.uk-dropdown': {
..._hooks['hook-dropdown']
},
'.uk-dropdown-dropbar': {
..._hooks['hook-dropbar']
},
'.uk-dropdown-dropbar-large': {
..._hooks['hook-dropbar-large']
},
'.uk-dropdown-nav': {
..._hooks['hook-nav']
},
'.uk-dropdown-nav > li > a': {
..._hooks['hook-nav-item']
},
'.uk-dropdown-nav > li > a:hover, .uk-dropdown-nav > li.uk-active > a': {
..._hooks['hook-nav-item-hover']
},
'.uk-dropdown-nav .uk-nav-subtitle': {
..._hooks['hook-nav-subtitle']
},
'.uk-dropdown-nav .uk-nav-header': {
..._hooks['hook-nav-header']
},
'.uk-dropdown-nav .uk-nav-divider': {
..._hooks['hook-nav-divider']
},
..._hooks['hook-misc']
};
};