UNPKG

@monochrome-edge/ui

Version:

A modern, minimalist UI with Warm and Cold themes

181 lines (156 loc) 3.62 kB
/* * Tab Component * Tabbed navigation and content */ .tabs { width: 100%; } /* Tab List */ .tab-list { display: flex; align-items: center; gap: 0.125rem; border-bottom: 1px solid var(--theme-border); overflow-x: auto; scrollbar-width: thin; } .tab-list::-webkit-scrollbar { height: 4px; } .tab-list::-webkit-scrollbar-track { background: var(--theme-bg); } .tab-list::-webkit-scrollbar-thumb { background: var(--theme-border); border-radius: 2px; } /* Tab Item */ .tab-item { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem; font-size: 0.875rem; font-weight: 500; color: var(--theme-text-secondary); background: none; border: none; border-bottom: 2px solid transparent; cursor: pointer; transition: transform var(--transition-speed), opacity var(--transition-speed), box-shadow var(--transition-speed); white-space: nowrap; position: relative; } .tab-item:hover { color: var(--theme-text-primary); background-color: rgba(0, 0, 0, var(--alpha-hover)); } .tab-item.is-active { color: var(--theme-accent); border-bottom-color: var(--theme-accent); } .tab-item.is-disabled { opacity: var(--alpha-disabled); cursor: not-allowed; pointer-events: none; } /* Tab Icon */ .tab-item-icon { width: 1rem; height: 1rem; } /* Tab Badge */ .tab-item-badge { padding: 0.125rem 0.375rem; font-size: 0.625rem; font-weight: 600; line-height: 1; color: var(--theme-accent-contrast); background-color: var(--theme-accent); border-radius: 9999px; } /* Tab Panel */ .tab-panel { padding: 1.5rem 0; animation: tab-fade-in 0.3s ease-out; } @keyframes tab-fade-in { from { opacity: 0; transform: translateY(-0.5rem); } to { opacity: 1; transform: translateY(0); } } .tab-panel[hidden] { display: none; } /* Tab Variants */ .tab-list-pills { border-bottom: none; gap: 0.5rem; padding: 0.25rem; background-color: var(--theme-bg); border-radius: var(--border-radius); } .tab-list-pills .tab-item { border: none; border-radius: var(--border-radius); } .tab-list-pills .tab-item.is-active { background-color: var(--theme-surface); color: var(--theme-text-primary); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); } /* Vertical Tabs */ .tabs-vertical { display: grid; grid-template-columns: 200px 1fr; gap: 2rem; } .tabs-vertical .tab-list { flex-direction: column; align-items: stretch; border-bottom: none; border-right: 1px solid var(--theme-border); padding-right: 1rem; } .tabs-vertical .tab-item { justify-content: flex-start; border-bottom: none; border-left: 2px solid transparent; margin-left: -2px; } .tabs-vertical .tab-item.is-active { border-left-color: var(--theme-accent); background-color: rgba(0, 0, 0, var(--alpha-hover)); } /* Segmented Control */ .segmented-control { display: inline-flex; padding: 0.25rem; background-color: var(--theme-bg); border: 1px solid var(--theme-border); border-radius: var(--border-radius); } .segmented-control-item { padding: 0.5rem 1rem; font-size: 0.875rem; font-weight: 500; color: var(--theme-text-secondary); background: none; border: none; border-radius: calc(var(--border-radius) - 0.25rem); cursor: pointer; transition: transform var(--transition-speed), opacity var(--transition-speed), box-shadow var(--transition-speed); } .segmented-control-item:hover { color: var(--theme-text-primary); } .segmented-control-item.is-active { color: var(--theme-text-primary); background-color: var(--theme-surface); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }