feat: complete release preparation, 10+ ad mediation, CI/CD, and docker deployment
Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped

This commit is contained in:
Yun Chan 2026-08-20 11:12:05 +09:00
parent 5cd1de6859
commit 708e20f747
406 changed files with 42464 additions and 6199 deletions

View file

@ -1,17 +1,24 @@
// src/renderer/components/shared/SearchInput.tsx
// 공유: 모노 폰트 검색 입력 필드
// Precision Glass Search Bar with Tactile Clear & Keycap Indicator
import { TextField, InputAdornment } from '@mui/material'
import { Search } from 'lucide-react'
import { d3roPalette, d3roFontMono, d3roTypo } from '@d3ro/ui/theme'
import React from 'react'
import { TextField, InputAdornment, IconButton, Box } from '@mui/material'
import { Search, X } from 'lucide-react'
import { d3roPalette, d3roFontSans, d3roFontMono, d3roTypo, d3roRadius, d3roShadow } from '@d3ro/ui/theme'
interface SearchInputProps {
export interface SearchInputProps {
value: string
onChange: (value: string) => void
placeholder: string
shortcut?: string
}
export function SearchInput({ value, onChange, placeholder }: SearchInputProps): React.ReactElement {
export function SearchInput({
value,
onChange,
placeholder,
shortcut = '/',
}: SearchInputProps): React.ReactElement {
return (
<TextField
placeholder={placeholder}
@ -19,20 +26,76 @@ export function SearchInput({ value, onChange, placeholder }: SearchInputProps):
onChange={(e) => onChange(e.target.value)}
fullWidth
sx={{
mb: 3,
mb: 2.5,
'& .MuiOutlinedInput-root': {
bgcolor: d3roPalette.glass.raised,
backdropFilter: `blur(${d3roPalette.glass.blur})`,
borderRadius: d3roRadius.inner,
border: `1px solid ${d3roPalette.glass.hairline}`,
boxShadow: d3roShadow.inset,
transition: 'all 0.2s ease',
'& fieldset': { border: 'none' },
'&:hover': {
borderColor: d3roPalette.glass.hairlineStrong,
bgcolor: d3roPalette.bg.cardHover,
},
'&.Mui-focused': {
border: `1px solid ${d3roPalette.accent.main}`,
boxShadow: `${d3roShadow.inset}, 0 0 0 3px ${d3roPalette.accent.dim}`,
},
},
'& .MuiInputBase-input': {
fontFamily: d3roFontMono,
fontSize: d3roTypo.small.size,
letterSpacing: d3roTypo.small.spacing,
fontFamily: d3roFontSans,
fontSize: d3roTypo.compact.size,
color: d3roPalette.text.primary,
py: 1.25,
'&::placeholder': {
color: d3roPalette.text.disabled,
opacity: 1,
},
},
}}
slotProps={{
input: {
startAdornment: (
<InputAdornment position="start">
<Search size={18} style={{ color: d3roPalette.text.inactive }} />
<InputAdornment position="start" sx={{ pl: 0.5 }}>
<Search size={17} style={{ color: d3roPalette.text.secondary }} />
</InputAdornment>
),
endAdornment: value ? (
<InputAdornment position="end">
<IconButton
size="small"
onClick={() => onChange('')}
sx={{
color: d3roPalette.text.inactive,
p: 0.5,
'&:hover': { color: d3roPalette.text.primary },
}}
>
<X size={15} />
</IconButton>
</InputAdornment>
) : shortcut ? (
<InputAdornment position="end" sx={{ pr: 0.5 }}>
<Box
sx={{
px: 0.85,
py: 0.2,
borderRadius: d3roRadius.xs,
bgcolor: d3roPalette.bg.inset,
border: `1px solid ${d3roPalette.border.subtle}`,
fontFamily: d3roFontMono,
fontSize: '11px',
color: d3roPalette.text.dimLabel,
lineHeight: 1,
userSelect: 'none',
}}
>
{shortcut}
</Box>
</InputAdornment>
) : undefined,
},
}}
/>