import type { Preset } from '@unocss/core'; function presetSodesu(): Preset { return { name: 'preset-sodesu', rules: [ [/^bb-(\d*)$/, ([, d]) => ({ 'border-bottom': `${d}px dashed var(--sds-border-color)` })], ['bb-none', { 'border-bottom': 'none' }], ['break-word', { 'word-break': 'break-word' }], [ 'sds-avatar', { 'border-radius': 'var(--sds-avatar-radius)', 'box-shadow': 'var(--sds-box-shadow)', width: 'var(--sds-avatar-real-size)', }, ], ['text-badge', { 'font-size': 'var(--sds-badge-font-size)' }], ['text-info', { 'font-size': 'var(--sds-info-font-size)' }], ['sds-comment', { '--sds-avatar-real-size': 'var(--sds-avatar-size)' }], ['sds-btn', { 'padding-inline': '0' }], ], layers: { sodesu: -19, // 1 more than preset-typography }, theme: { colors: { sWhite: 'var(--sds-white)', sLightGrey: 'var(--sds-light-grey)', sDarkGrey: 'var(--sds-dark-grey)', sTheme: 'var(--sds-theme-color)', sActive: 'var(--sds-active-color)', sColor: 'var(--sds-color)', sBg: 'var(--sds-bgcolor)', sBgLight: 'var(--sds-bgcolor-light)', sBgHover: 'var(--sds-bgcolor-hover)', sBorder: 'var(--sds-border-color)', sDisableBg: 'var(--sds-disable-bgcolor)', sDisable: 'var(--sds-disable-color)', sCodeBg: 'var(--sds-code-bgcolor)', sBq: 'var(--sds-bq-color)', sBadge: 'var(--sds-badge-color)', sInfoBg: 'var(--sds-info-bgcolor)', sInfo: 'var(--sds-info-color)', }, }, preflights: [ { layer: 'sodesu', getCSS: () => `:root { --sds-font-size: 1rem; --sds-white: #fff; --sds-light-grey: #999; --sds-dark-grey: #666; --sds-theme-color: #27ae60; --sds-active-color: #2ecc71; --sds-color: #444; --sds-bgcolor: #fff; --sds-bgcolor-light: #f8f8f8; --sds-bgcolor-hover: #f0f0f0; --sds-border-color: #ddd; --sds-disable-bgcolor: #f8f8f8; --sds-disable-color: #000; --sds-code-bgcolor: #282c34; --sds-bq-color: #f0f0f0; --sds-avatar-size: 3.25rem; --sds-avatar-radius: 50%; --sds-m-avatar-size: calc(var(--sds-avatar-size) * 9 / 13); --sds-badge-color: #3498db; --sds-badge-font-size: 0.75em; --sds-info-bgcolor: #f8f8f8; --sds-info-color: #999; --sds-info-font-size: 0.625em; --sds-border: 1px solid var(--sds-border-color); --sds-box-shadow: none; } .sds-comment .sds-comment { --sds-avatar-real-size: var(--sds-m-avatar-size); } .sds-comment:last-child .sds-comment-card { border-bottom: none; } .sds-root a { color: var(--sds-theme-color); text-decoration: none; } .sds-root a:hover { color: var(--sds-active-color); text-decoration: underline; } .sds-root { line-height: 1; } .sds-content pre, .sds-content pre[class*="language-"] { background: var(--sds-code-bgcolor); margin: .75rem 0; padding: 1rem 1.25rem; border-radius: 0.75rem; line-height: 1.4; overflow: auto; } `, }, ], }; } export default presetSodesu;