UNPKG

claritykit-svelte

Version:

A comprehensive Svelte component library focused on accessibility, ADHD-optimized design, developer experience, and full SSR compatibility

315 lines (268 loc) 7.01 kB
/** * ClarityKit Component Base Styles * ADHD-Optimized Design System */ /* Import design tokens */ @import './tokens.css'; /* Base reset for components */ .ck-component { box-sizing: border-box; font-family: var(--ck-font-sans); font-size: var(--ck-text-base); line-height: var(--ck-leading-normal); color: var(--ck-text-primary); } .ck-component *, .ck-component *::before, .ck-component *::after { box-sizing: inherit; } /* Focus management - critical for ADHD users */ .ck-focusable { outline: none; transition: box-shadow var(--ck-transition); } .ck-focusable:focus-visible { box-shadow: var(--ck-focus-ring); outline-offset: var(--ck-focus-ring-offset); } /* Button base styles */ .ck-button { display: inline-flex; align-items: center; justify-content: center; gap: var(--ck-space-2); padding: var(--ck-space-3) var(--ck-space-4); min-height: var(--ck-button-height-md); border: 1px solid transparent; border-radius: var(--ck-radius-md); font-family: inherit; font-size: var(--ck-text-base); font-weight: var(--ck-font-medium); line-height: 1; text-decoration: none; cursor: pointer; transition: all var(--ck-transition); user-select: none; white-space: nowrap; } .ck-button:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } /* Button variants */ .ck-button--primary { background-color: var(--ck-accent); color: var(--ck-text-inverse); border-color: var(--ck-accent); } .ck-button--primary:hover:not(:disabled) { background-color: var(--ck-accent-hover); border-color: var(--ck-accent-hover); } .ck-button--secondary { background-color: var(--ck-bg-secondary); color: var(--ck-text-primary); border-color: var(--ck-border); } .ck-button--secondary:hover:not(:disabled) { background-color: var(--ck-bg-tertiary); border-color: var(--ck-border-light); } .ck-button--ghost { background-color: transparent; color: var(--ck-text-primary); border-color: transparent; } .ck-button--ghost:hover:not(:disabled) { background-color: var(--ck-bg-hover); } .ck-button--danger { background-color: var(--ck-error); color: var(--ck-text-inverse); border-color: var(--ck-error); } .ck-button--danger:hover:not(:disabled) { background-color: var(--ck-error-hover); border-color: var(--ck-error-hover); } /* Button sizes */ .ck-button--sm { min-height: var(--ck-button-height-sm); padding: var(--ck-space-2) var(--ck-space-3); font-size: var(--ck-text-sm); } .ck-button--lg { min-height: var(--ck-button-height-lg); padding: var(--ck-space-4) var(--ck-space-6); font-size: var(--ck-text-lg); } /* Input base styles */ .ck-input { display: block; width: 100%; min-height: var(--ck-input-height-md); padding: var(--ck-space-3) var(--ck-space-4); background-color: var(--ck-bg-secondary); border: 1px solid var(--ck-border); border-radius: var(--ck-radius-md); font-family: inherit; font-size: var(--ck-text-base); color: var(--ck-text-primary); transition: all var(--ck-transition); } .ck-input::placeholder { color: var(--ck-text-muted); } .ck-input:hover { border-color: var(--ck-border-light); } .ck-input:focus { outline: none; border-color: var(--ck-accent); box-shadow: var(--ck-focus-ring); } .ck-input--error { border-color: var(--ck-error); } .ck-input--error:focus { border-color: var(--ck-error); box-shadow: 0 0 0 3px rgba(191, 97, 106, 0.4); } /* Card base styles */ .ck-card { background-color: var(--ck-bg-secondary); border: 1px solid var(--ck-border); border-radius: var(--ck-radius-lg); box-shadow: var(--ck-shadow-sm); overflow: hidden; } .ck-card--elevated { box-shadow: var(--ck-shadow-md); } .ck-card--interactive { cursor: pointer; transition: all var(--ck-transition); } .ck-card--interactive:hover { box-shadow: var(--ck-shadow-lg); transform: translateY(-1px); } /* Modal base styles */ .ck-modal-backdrop { position: fixed; inset: 0; background-color: rgba(46, 52, 64, 0.8); backdrop-filter: blur(4px); z-index: var(--ck-z-modal-backdrop); display: flex; align-items: center; justify-content: center; padding: var(--ck-space-4); } .ck-modal { background-color: var(--ck-bg-secondary); border: 1px solid var(--ck-border); border-radius: var(--ck-radius-lg); box-shadow: var(--ck-shadow-xl); max-width: 90vw; max-height: 90vh; overflow-y: auto; z-index: var(--ck-z-modal); } /* Alert base styles */ .ck-alert { display: flex; align-items: flex-start; gap: var(--ck-space-3); padding: var(--ck-space-4); border-radius: var(--ck-radius-md); border-left: 4px solid; } .ck-alert--success { background-color: rgba(163, 190, 140, 0.1); border-left-color: var(--ck-success); color: var(--ck-success); } .ck-alert--warning { background-color: rgba(235, 203, 139, 0.1); border-left-color: var(--ck-warning); color: var(--ck-warning); } .ck-alert--error { background-color: rgba(191, 97, 106, 0.1); border-left-color: var(--ck-error); color: var(--ck-error); } .ck-alert--info { background-color: rgba(94, 129, 172, 0.1); border-left-color: var(--ck-info); color: var(--ck-info); } /* Loading spinner */ .ck-spinner { display: inline-block; width: 1.5rem; height: 1.5rem; border: 2px solid var(--ck-border); border-top: 2px solid var(--ck-accent); border-radius: 50%; animation: ck-spin 1s linear infinite; } @keyframes ck-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Status indicator */ .ck-status-indicator { display: inline-flex; align-items: center; gap: var(--ck-space-2); font-size: var(--ck-text-sm); font-weight: var(--ck-font-medium); } .ck-status-indicator__dot { width: 0.5rem; height: 0.5rem; border-radius: 50%; flex-shrink: 0; } .ck-status-indicator--success .ck-status-indicator__dot { background-color: var(--ck-success); } .ck-status-indicator--warning .ck-status-indicator__dot { background-color: var(--ck-warning); } .ck-status-indicator--error .ck-status-indicator__dot { background-color: var(--ck-error); } .ck-status-indicator--info .ck-status-indicator__dot { background-color: var(--ck-info); } /* Utility classes */ .ck-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .ck-focus-trap { outline: none; } /* Responsive helpers */ @media (max-width: 640px) { .ck-button { min-height: var(--ck-button-height-lg); font-size: var(--ck-text-lg); } .ck-input { min-height: var(--ck-input-height-lg); font-size: var(--ck-text-lg); } }