UNPKG

@dharshana333/react-ui-components

Version:

A collection of premium, customizable React UI components including Line and PriceLookup with animations, themes, and accessibility features

506 lines (446 loc) 9.74 kB
.dharshu-line { --line-color: #000000; --line-thickness: 2px; --line-length: 100%; --line-margin: 16px; --line-gradient: linear-gradient(to right, #ff6b6b, #4ecdc4); --animation-duration: 2s; --line-shadow: none; position: relative; display: inline-block; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: var(--line-shadow); } .dharshu-line--horizontal { width: var(--line-length); height: var(--line-thickness); margin: var(--line-margin) 0; } .dharshu-line--vertical { width: var(--line-thickness); height: var(--line-length); margin: 0 var(--line-margin); } .dharshu-line--solid { background-color: var(--line-color); } .dharshu-line--dashed { background: repeating-linear-gradient( to right, var(--line-color) 0, var(--line-color) 10px, transparent 10px, transparent 20px ); } .dharshu-line--dashed.dharshu-line--vertical { background: repeating-linear-gradient( to bottom, var(--line-color) 0, var(--line-color) 10px, transparent 10px, transparent 20px ); } .dharshu-line--dotted { background: repeating-linear-gradient( to right, var(--line-color) 0, var(--line-color) 4px, transparent 4px, transparent 12px ); } .dharshu-line--dotted.dharshu-line--vertical { background: repeating-linear-gradient( to bottom, var(--line-color) 0, var(--line-color) 4px, transparent 4px, transparent 12px ); } .dharshu-line--gradient { background: var(--line-gradient); position: relative; } .dharshu-line--gradient::after { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: inherit; filter: blur(0.5px); opacity: 0.7; z-index: -1; } .dharshu-line--animated { background: var(--line-gradient); background-size: 200% 200%; animation: dharshu-line-move var(--animation-duration) infinite linear; position: relative; overflow: hidden; } .dharshu-line--animated::after { content: ""; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.3), transparent ); animation: dharshu-shine 3s infinite; } @keyframes dharshu-line-move { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } @keyframes dharshu-shine { 0% { transform: translateX(-100%); } 100% { transform: translateX(300%); } } .dharshu-line--glow { background-color: var(--line-color); position: relative; } .dharshu-line--glow::before, .dharshu-line--glow::after { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; background-color: var(--line-color); z-index: -1; } .dharshu-line--glow::before { filter: blur(8px); opacity: 0.4; } .dharshu-line--glow::after { filter: blur(20px); opacity: 0.2; } .dharshu-line--glow-low::before { opacity: 0.2; filter: blur(4px); } .dharshu-line--glow-low::after { opacity: 0.1; filter: blur(10px); } .dharshu-line--glow-medium::before { opacity: 0.4; filter: blur(8px); } .dharshu-line--glow-medium::after { opacity: 0.2; filter: blur(20px); } .dharshu-line--glow-high::before { opacity: 0.6; filter: blur(12px); } .dharshu-line--glow-high::after { opacity: 0.3; filter: blur(30px); } .dharshu-line--wave { background: none; position: relative; overflow: hidden; } .dharshu-line--wave::before { content: ""; position: absolute; top: 0; left: -100%; width: 200%; height: 100%; background: repeating-linear-gradient( 90deg, transparent, transparent 8px, var(--line-color) 8px, var(--line-color) 16px ); animation: dharshu-wave var(--animation-duration) infinite linear; } .dharshu-line--wave::after { content: ""; position: absolute; top: 0; left: -100%; width: 200%; height: 100%; background: repeating-linear-gradient( 90deg, transparent, transparent 4px, rgba(255, 255, 255, 0.3) 4px, rgba(255, 255, 255, 0.3) 12px ); animation: dharshu-wave calc(var(--animation-duration) * 1.5) infinite linear reverse; } @keyframes dharshu-wave { 0% { transform: translateX(0); } 100% { transform: translateX(50%); } } .dharshu-line--pulse { background-color: var(--line-color); animation: dharshu-pulse var(--animation-duration) infinite ease-in-out alternate; position: relative; } .dharshu-line--pulse::after { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; background-color: var(--line-color); filter: blur(4px); opacity: 0.5; z-index: -1; animation: dharshu-pulse-glow var(--animation-duration) infinite ease-in-out alternate; } @keyframes dharshu-pulse { from { opacity: 0.6; transform: scaleY(0.8); } to { opacity: 1; transform: scaleY(1.2); filter: brightness(1.2); } } @keyframes dharshu-pulse-glow { from { opacity: 0.3; filter: blur(2px); } to { opacity: 0.7; filter: blur(8px); } } .dharshu-line--pattern-chevron { background: repeating-linear-gradient( 45deg, var(--line-color) 0, var(--line-color) 8px, transparent 8px, transparent 16px ); } .dharshu-line--pattern-zigzag { background: none; position: relative; overflow: hidden; } .dharshu-line--pattern-zigzag::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient( 45deg, transparent 40%, var(--line-color) 40%, var(--line-color) 60%, transparent 60% ), linear-gradient( -45deg, transparent 40%, var(--line-color) 40%, var(--line-color) 60%, transparent 60% ); background-size: 12px 100%; } .dharshu-line--pattern-dots { background: radial-gradient( circle at center, var(--line-color) 30%, transparent 30% ); background-size: 10px 10px; background-repeat: repeat-x; background-position: center; } .dharshu-line--pattern-arrows { background: none; position: relative; overflow: hidden; } .dharshu-line--pattern-arrows::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: repeating-linear-gradient( 90deg, var(--line-color) 0, var(--line-color) 3px, transparent 3px, transparent 6px, var(--line-color) 6px, var(--line-color) 9px, transparent 9px, transparent 15px ); } .dharshu-line--pattern-arrows::after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: repeating-linear-gradient( 45deg, transparent 40%, var(--line-color) 40%, var(--line-color) 60%, transparent 60% ); background-size: 8px 100%; opacity: 0.7; } .dharshu-line--hover-scale:hover { transform: scale(1.05); filter: brightness(1.1); } .dharshu-line--hover-glow:hover { box-shadow: 0 0 10px var(--line-color), 0 0 20px var(--line-color), 0 0 30px var(--line-color); filter: brightness(1.2); } .dharshu-line--hover-color:hover { filter: hue-rotate(90deg) saturate(1.2); } .dharshu-line--hover-thickness:hover { height: calc(var(--line-thickness) * 1.5); } .dharshu-line--hover-thickness.dharshu-line--vertical:hover { width: calc(var(--line-thickness) * 1.5); height: var(--line-length); } .dharshu-line--hover-default:hover { opacity: 0.8; transform: translateY(-2px); filter: brightness(1.1); } .dharshu-line--clickable { cursor: pointer; user-select: none; } .dharshu-line--clickable:hover { transform: translateY(-1px); } .dharshu-line--clickable:active { transform: translateY(0px); filter: brightness(0.9); } .dharshu-line--clickable:focus { outline: 2px solid var(--line-color); outline-offset: 4px; border-radius: 2px; } .dharshu-line--clickable:focus:not(:focus-visible) { outline: none; } .dharshu-line--text-left, .dharshu-line--text-center, .dharshu-line--text-right { display: flex; align-items: center; gap: 16px; } .dharshu-line__text { white-space: nowrap; color: var(--line-color); font-size: 14px; font-weight: 500; } .dharshu-line__line { flex: 1; height: var(--line-thickness); background-color: var(--line-color); } @media (max-width: 768px) { .dharshu-line { --line-margin: 12px; } } @media (max-width: 480px) { .dharshu-line { --line-margin: 8px; } .dharshu-line--hover-scale:hover { transform: scale(1.02); } } @media (prefers-color-scheme: dark) { .dharshu-line--solid { filter: brightness(1.2); } .dharshu-line--gradient { filter: brightness(1.1); } } @media (prefers-reduced-motion: reduce) { .dharshu-line--animated, .dharshu-line--wave, .dharshu-line--pulse { animation: none; } .dharshu-line--animated::after { animation: none; } .dharshu-line { transition: none; } .dharshu-line--hover-scale:hover { transform: none; } } @media (prefers-contrast: high) { .dharshu-line { filter: contrast(2); } }