UNPKG

merchi_product_editor

Version:

A React component for editing product images using Fabric.js

328 lines (286 loc) 6 kB
.text-toolbar { position: absolute; top: 0; left: 0; width: 100%; background-color: #f5f5f5; padding: 8px 12px; display: flex; justify-content: center; align-items: center; gap: 12px; z-index: 100; } .text-toolbar select { padding: 5px 10px; border: 1px solid #bbb; border-radius: 4px; background-color: white; font-size: 14px; } .text-toolbar .color-picker { -webkit-appearance: none; -moz-appearance: none; appearance: none; width: 30px; height: 30px; padding: 0; border: 1px solid #bbb; border-radius: 4px; cursor: pointer; background-color: transparent; overflow: hidden; } .text-toolbar .color-picker::-webkit-color-swatch-wrapper { padding: 2px; } .text-toolbar .color-picker::-webkit-color-swatch { border: none; border-radius: 3px; } .text-toolbar .color-picker::-moz-color-swatch { border: none; border-radius: 3px; padding: 2px; } .text-toolbar .color-picker:hover { border-color: #999; } .color-picker-container { position: relative; } .color-picker-swatch { width: 28px; height: 28px; border-radius: 50%; border: 1px solid #bbb; cursor: pointer; display: inline-block; vertical-align: middle; overflow: hidden; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); } .color-picker-swatch>div { display: none; } .color-picker-popover { position: absolute; top: calc(100% + 8px); left: 50%; transform: translateX(-50%); background: #fff; border-radius: 6px; box-shadow: 0 3px 12px rgba(0, 0, 0, 0.15); padding: 12px; z-index: 200; display: flex; flex-direction: column; gap: 12px; } .palette-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 10px; max-width: 280px; } .palette-swatch, .palette-trigger-swatch { width: 26px; height: 26px; border-radius: 50%; border: 1px solid #eee; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); transition: transform 0.1s ease; background-color: transparent; padding: 0; } .palette-swatch:hover, .palette-trigger-swatch:hover { transform: scale(1.1); border-color: #ccc; } .palette-trigger-swatch { width: 26px; height: 26px; border-radius: 50%; border: 1px solid #ccc; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); transition: transform 0.1s ease; background-image: conic-gradient(from 0deg, red, orange, yellow, lime, aqua, blue, purple, red); padding: 0; display: flex; align-items: center; justify-content: center; color: white; font-size: 22px; font-weight: bold; line-height: 1; text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.7), 1px -1px 0 rgba(0, 0, 0, 0.7), -1px 1px 0 rgba(0, 0, 0, 0.7), 1px 1px 0 rgba(0, 0, 0, 0.7); } .palette-trigger-swatch:hover { transform: scale(1.1); border-color: #999; } .color-picker-back-btn { color: #303DBF; border: 1px solid #303DBF; border-radius: 4px; padding: 5px 10px; cursor: pointer; font-size: 12px; text-align: center; transition: background-color 0.2s ease; } .color-picker-custom-btn, .color-picker-close-btn { display: none; } .color-picker-trigger { display: flex; align-items: center; gap: 6px; cursor: pointer; padding: 3px; border-radius: 4px; } .color-picker-trigger:hover { background-color: rgba(0, 0, 0, 0.05); } .color-picker-label { font-size: 14px; font-weight: 700; color: #4E4E4E; user-select: none; } .color-picker-popover .chrome-picker .flexbox-fix { padding-top: 4px; padding-bottom: 4px; } .color-picker-popover .chrome-picker input { font-size: 15px !important; height: 32px !important; box-shadow: none !important; border: 1px solid #ccc !important; text-align: center !important; padding: 4px !important; margin: 0 3px !important; } .color-picker-popover .chrome-picker .flexbox-fix>label { font-size: 13px !important; padding-top: 6px !important; } .color-picker-popover .chrome-picker .flexbox-fix>div:last-child { margin-top: 0 !important; position: relative; top: 2px; } .color-picker-popover .chrome-picker .flexbox-fix svg { width: 20px !important; height: 20px !important; } .text-toolbar .toolbar-button { background: none; border: none; padding: 5px 8px; margin: 0 6px; cursor: pointer; font-size: 16px; border-radius: 4px; transition: background-color 0.1s ease; } .text-toolbar .toolbar-button:hover { background-color: #E1E1E1; color: inherit; } .text-toolbar .toolbar-button.active { background-color: #D6D8F2; color: #303DBF; } .text-toolbar .toolbar-button svg { width: 18px; height: 18px; } .toolbar-button.bold-button, .toolbar-button.underline-button, .align-group .align-trigger { margin: 0 2px; } .align-group { position: relative; display: inline-flex; align-items: center; } .align-group .align-trigger { margin-left: 4px; } .align-popover { position: absolute; top: calc(100% + 12px); left: 50%; transform: translateX(-50%); display: flex; flex-direction: row; gap: 8px; background: #fff; border-radius: 4px; padding: 10px; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); z-index: 200; } @media (max-width: 480px) { .text-toolbar { flex-wrap: wrap; justify-content: flex-start; gap: 8px; padding: 6px 8px; } .text-toolbar select { font-size: 13px; padding: 4px 6px; margin: 0 4px; max-width: 60px; } .text-toolbar .toolbar-button { font-size: 18px; padding: 4px 6px; margin: 0 4px; } .text-toolbar .toolbar-button svg { width: 16px; height: 16px; } .text-toolbar .color-picker-swatch, .text-toolbar .palette-trigger-swatch { width: 24px; height: 24px; border-radius: 50%; flex-shrink: 0; min-width: 24px; min-height: 24px; } .color-picker-label { display: none; } .text-toolbar .color-picker-trigger { gap: 0; } .align-popover { left: auto; right: 0; transform: none; } }