@t3q-ui/design-system 0.0.0-stage → 1.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1977 -0
- package/LICENSE.md +88 -0
- package/README.md +464 -2
- package/cli/doctor.mjs +196 -0
- package/cli/lib.mjs +425 -0
- package/cli/setup.mjs +181 -0
- package/cli/t3q-design.mjs +78 -0
- package/dist/chunk-IPF3K4BS.js +4274 -0
- package/dist/chunk-IPF3K4BS.js.map +1 -0
- package/dist/chunk-MHAO45AL.cjs +4427 -0
- package/dist/chunk-MHAO45AL.cjs.map +1 -0
- package/dist/fonts.css +12 -0
- package/dist/index-Ci1Wh5sA.d.cts +253 -0
- package/dist/index-Ci1Wh5sA.d.ts +253 -0
- package/dist/index.cjs +10998 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +332 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +2554 -0
- package/dist/index.d.ts +2554 -0
- package/dist/index.js +10354 -0
- package/dist/index.js.map +1 -0
- package/dist/patterns/index.cjs +885 -0
- package/dist/patterns/index.cjs.map +1 -0
- package/dist/patterns/index.css +265 -0
- package/dist/patterns/index.css.map +1 -0
- package/dist/patterns/index.d.cts +373 -0
- package/dist/patterns/index.d.ts +373 -0
- package/dist/patterns/index.js +873 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/styles.css +2014 -0
- package/package.json +212 -4
- package/skills/tds/SKILL.md +91 -0
- package/skills/tds/examples/dashboard-page.tsx +344 -0
- package/skills/tds/examples/detail-page.tsx +388 -0
- package/skills/tds/examples/form-page.tsx +460 -0
- package/skills/tds/examples/list-page.tsx +275 -0
- package/skills/tds/reference/components.md +1424 -0
- package/skills/tds/rules.md +28 -0
package/dist/index.css
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/* src/components/parameterTable/parameterTable.css */
|
|
2
|
+
.t3q-parameter-table {
|
|
3
|
+
width: 100%;
|
|
4
|
+
position: relative;
|
|
5
|
+
}
|
|
6
|
+
.t3q-pt-cell {
|
|
7
|
+
user-select: none;
|
|
8
|
+
position: relative;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
border-bottom: 1px solid var(--color-sys-divider-subtle);
|
|
11
|
+
}
|
|
12
|
+
tr:last-child > .t3q-pt-cell {
|
|
13
|
+
border-bottom: none;
|
|
14
|
+
}
|
|
15
|
+
.t3q-pt-cell--error {
|
|
16
|
+
background-color: var(--color-danger-o10);
|
|
17
|
+
}
|
|
18
|
+
.t3q-pt-cell--selected {
|
|
19
|
+
background-color: var(--color-sys-table-select);
|
|
20
|
+
}
|
|
21
|
+
.t3q-pt-cell--editing {
|
|
22
|
+
background-color: var(--color-sys-background);
|
|
23
|
+
outline: 2px solid var(--color-sys-focus-ring-bold);
|
|
24
|
+
outline-offset: -2px;
|
|
25
|
+
z-index: 1;
|
|
26
|
+
}
|
|
27
|
+
.t3q-pt-cell-display {
|
|
28
|
+
height: 28px;
|
|
29
|
+
line-height: 1.4;
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
}
|
|
33
|
+
.t3q-pt-cell-display--editing {
|
|
34
|
+
visibility: hidden;
|
|
35
|
+
}
|
|
36
|
+
.t3q-parameter-table--compact .t3q-pt-cell-display {
|
|
37
|
+
height: 24px;
|
|
38
|
+
font-size: 13px;
|
|
39
|
+
}
|
|
40
|
+
.t3q-parameter-table--normal .t3q-pt-cell-display {
|
|
41
|
+
height: 32px;
|
|
42
|
+
}
|
|
43
|
+
.t3q-parameter-table--disabled .t3q-pt-cell {
|
|
44
|
+
cursor: default;
|
|
45
|
+
}
|
|
46
|
+
.t3q-pt-floating-input {
|
|
47
|
+
position: absolute;
|
|
48
|
+
margin: 0;
|
|
49
|
+
border: 0;
|
|
50
|
+
padding: 6px 12px;
|
|
51
|
+
background: transparent;
|
|
52
|
+
color: var(--color-sys-text-main);
|
|
53
|
+
font: inherit;
|
|
54
|
+
line-height: 1.4;
|
|
55
|
+
outline: none;
|
|
56
|
+
opacity: 0;
|
|
57
|
+
pointer-events: none;
|
|
58
|
+
z-index: 2;
|
|
59
|
+
}
|
|
60
|
+
.t3q-parameter-table--compact .t3q-pt-floating-input {
|
|
61
|
+
font-size: 13px;
|
|
62
|
+
}
|
|
63
|
+
.t3q-pt-floating-input--editing {
|
|
64
|
+
opacity: 1;
|
|
65
|
+
pointer-events: auto;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* src/components/agGridTable/style.css */
|
|
69
|
+
.ag-grid-container {
|
|
70
|
+
width: 100%;
|
|
71
|
+
height: 100%;
|
|
72
|
+
}
|
|
73
|
+
.ag-grid-container [class*=ag-theme-] {
|
|
74
|
+
--ag-font-family: var(--font-sans);
|
|
75
|
+
--ag-header-background-color: var(--color-sys-table-header-background);
|
|
76
|
+
--ag-border-color: var(--color-sys-divider-subtle);
|
|
77
|
+
--ag-wrapper-border: solid 1px var(--color-sys-divider-subtle);
|
|
78
|
+
--ag-wrapper-border-radius: var(--radius-medium);
|
|
79
|
+
--ag-header-row-border: solid 1px var(--color-sys-divider-subtle);
|
|
80
|
+
--ag-row-border: solid 1px var(--color-sys-divider-subtle);
|
|
81
|
+
--ag-header-column-border: none;
|
|
82
|
+
--ag-spacing: 8px;
|
|
83
|
+
--ag-cell-horizontal-padding: calc( var(--ag-spacing) * 2 * var(--ag-cell-horizontal-padding-scale) );
|
|
84
|
+
--ag-foreground-color: var(--color-sys-text-normal);
|
|
85
|
+
--ag-background-color: var(--color-sys-background);
|
|
86
|
+
--ag-header-foreground-color: var(--color-sys-table-header-text);
|
|
87
|
+
--ag-row-hover-color: var(--color-sys-table-hover);
|
|
88
|
+
--ag-selected-row-background-color: var(--color-sys-table-select);
|
|
89
|
+
--ag-header-column-resize-handle-color: var(--color-sys-border);
|
|
90
|
+
--ag-header-column-resize-handle-height: 30%;
|
|
91
|
+
--ag-header-column-resize-handle-width: 2px;
|
|
92
|
+
}
|
|
93
|
+
.ag-grid-container .ag-root-wrapper {
|
|
94
|
+
overflow: hidden;
|
|
95
|
+
}
|
|
96
|
+
.ag-grid-container .ag-header-cell-resize::after {
|
|
97
|
+
opacity: 0;
|
|
98
|
+
transition: opacity 120ms ease;
|
|
99
|
+
}
|
|
100
|
+
.ag-grid-container .ag-header-cell:hover .ag-header-cell-resize::after {
|
|
101
|
+
opacity: 1;
|
|
102
|
+
}
|
|
103
|
+
.ag-grid-container .ag-row.ag-row-last {
|
|
104
|
+
border-bottom: none;
|
|
105
|
+
}
|
|
106
|
+
.ag-grid-container .ag-row-clickable {
|
|
107
|
+
cursor: pointer;
|
|
108
|
+
}
|
|
109
|
+
.ag-grid-container .ag-cell-primary {
|
|
110
|
+
color: var(--color-sys-text-main);
|
|
111
|
+
font-weight: var(--font-weight-semibold);
|
|
112
|
+
}
|
|
113
|
+
.ag-grid-container .ag-row-clickable:hover .ag-cell-primary:not(:has([data-slot=cell-primary])),
|
|
114
|
+
.ag-grid-container .ag-row-clickable:hover .ag-cell-primary [data-slot=cell-primary] {
|
|
115
|
+
text-decoration: underline;
|
|
116
|
+
}
|
|
117
|
+
.ag-grid-container .ag-cell,
|
|
118
|
+
.ag-grid-container .ag-cell-wrapper,
|
|
119
|
+
.ag-grid-container .ag-cell-value {
|
|
120
|
+
min-width: 0;
|
|
121
|
+
}
|
|
122
|
+
.ag-grid-container .ag-cell:not(.ag-cell-wrap-text) .ag-cell-value:not(.ag-allow-overflow) {
|
|
123
|
+
overflow: hidden;
|
|
124
|
+
text-overflow: ellipsis;
|
|
125
|
+
white-space: nowrap;
|
|
126
|
+
}
|
|
127
|
+
.ag-grid-container .ag-cell.ag-cell-value:not(:has(> *)):not(.ag-right-aligned-cell):not(.ag-cell-wrap-text) {
|
|
128
|
+
display: block !important;
|
|
129
|
+
align-content: center;
|
|
130
|
+
}
|
|
131
|
+
.ag-grid-container .ag-cell.ag-right-aligned-cell {
|
|
132
|
+
justify-content: flex-end;
|
|
133
|
+
text-align: right;
|
|
134
|
+
font-variant-numeric: tabular-nums;
|
|
135
|
+
}
|
|
136
|
+
.ag-grid-container .ag-header-cell.ag-right-aligned-header .ag-header-cell-label {
|
|
137
|
+
flex-direction: row;
|
|
138
|
+
justify-content: flex-end;
|
|
139
|
+
}
|
|
140
|
+
.ag-grid-container .ag-cell.ag-right-aligned-cell.ag-cell-sort-offset {
|
|
141
|
+
padding-right: calc(var(--ag-cell-horizontal-padding) - 1px + var(--ag-spacing) + var(--ag-icon-size));
|
|
142
|
+
}
|
|
143
|
+
.ag-grid-container .ag-row.ag-row-active {
|
|
144
|
+
background-color: var(--color-sys-table-select);
|
|
145
|
+
}
|
|
146
|
+
.ag-grid-container[data-is-empty=false] .ag-center-cols-viewport {
|
|
147
|
+
min-height: unset !important;
|
|
148
|
+
}
|
|
149
|
+
.ag-grid-container .ag-header {
|
|
150
|
+
position: relative;
|
|
151
|
+
z-index: 1;
|
|
152
|
+
}
|
|
153
|
+
.ag-grid-container .ag-column-last .ag-header-cell-resize {
|
|
154
|
+
display: none;
|
|
155
|
+
}
|
|
156
|
+
.ag-grid-container .width_full .ag-cell-wrapper {
|
|
157
|
+
width: 100%;
|
|
158
|
+
}
|
|
159
|
+
.ag-grid-container .width_full .ag-cell-value {
|
|
160
|
+
width: 100%;
|
|
161
|
+
}
|
|
162
|
+
.ag-grid-container .width_full.ag-cell {
|
|
163
|
+
width: 100%;
|
|
164
|
+
}
|
|
165
|
+
.ag-grid-container .ag-column-first {
|
|
166
|
+
display: flex;
|
|
167
|
+
align-items: center;
|
|
168
|
+
}
|
|
169
|
+
.ag-checkbox-input-wrapper,
|
|
170
|
+
.ag-radio-button-input-wrapper {
|
|
171
|
+
transform: scale(1.3);
|
|
172
|
+
}
|
|
173
|
+
.ag-cell-focus:not(.ag-cell-range-selected):focus-within,
|
|
174
|
+
.ag-cell-range-single-cell,
|
|
175
|
+
.ag-cell-range-single-cell.ag-cell-range-handle,
|
|
176
|
+
.ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),
|
|
177
|
+
.ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group {
|
|
178
|
+
border-color: transparent;
|
|
179
|
+
}
|
|
180
|
+
.ag-grid-container .ag-cell-focus:not(.ag-cell-range-selected) {
|
|
181
|
+
border-color: transparent !important;
|
|
182
|
+
}
|
|
183
|
+
.ag-overlay-no-rows-wrapper {
|
|
184
|
+
position: absolute;
|
|
185
|
+
top: 40px;
|
|
186
|
+
height: calc(100% - 40px);
|
|
187
|
+
background-color: var(--color-sys-background);
|
|
188
|
+
display: flex;
|
|
189
|
+
align-items: center;
|
|
190
|
+
justify-content: center;
|
|
191
|
+
}
|
|
192
|
+
.ag-overlay-no-rows-center {
|
|
193
|
+
background-color: var(--color-sys-background);
|
|
194
|
+
color: var(--color-sys-text-subtle);
|
|
195
|
+
}
|
|
196
|
+
.ag-overlay-loading-wrapper {
|
|
197
|
+
background-color: var(--color-sys-background);
|
|
198
|
+
}
|
|
199
|
+
.ag-overlay-loading-center {
|
|
200
|
+
background-color: var(--color-sys-background);
|
|
201
|
+
color: var(--color-sys-text-normal);
|
|
202
|
+
}
|
|
203
|
+
.ag-grid-container .ag-row:active {
|
|
204
|
+
background-color: var(--color-sys-table-press) !important;
|
|
205
|
+
}
|
|
206
|
+
.ag-grid-container .ag-row-selected.ag-row-hover {
|
|
207
|
+
background-color: var(--color-sys-table-press);
|
|
208
|
+
}
|
|
209
|
+
.checkbox-column-cell {
|
|
210
|
+
padding: 0 !important;
|
|
211
|
+
display: flex !important;
|
|
212
|
+
justify-content: center !important;
|
|
213
|
+
align-items: center !important;
|
|
214
|
+
}
|
|
215
|
+
.checkbox-column-cell .ag-react-container {
|
|
216
|
+
width: 100%;
|
|
217
|
+
height: 100%;
|
|
218
|
+
}
|
|
219
|
+
[data-theme=dark] .ag-popup,
|
|
220
|
+
[data-theme=dark] .ag-menu,
|
|
221
|
+
[data-theme=dark] .ag-filter {
|
|
222
|
+
background-color: var(--color-sys-background);
|
|
223
|
+
border: 1px solid var(--color-sys-divider-subtler);
|
|
224
|
+
}
|
|
225
|
+
[data-theme=dark] .ag-filter-toolpanel-header,
|
|
226
|
+
[data-theme=dark] .ag-filter-air-mode,
|
|
227
|
+
[data-theme=dark] .ag-filter-list-panel,
|
|
228
|
+
[data-theme=dark] .ag-filter-apply-panel {
|
|
229
|
+
background-color: var(--color-sys-background);
|
|
230
|
+
}
|
|
231
|
+
[data-theme=dark] .ag-input-field-input {
|
|
232
|
+
background-color: var(--color-sys-background);
|
|
233
|
+
color: var(--color-sys-text-main);
|
|
234
|
+
border: 1px solid var(--color-sys-divider-main);
|
|
235
|
+
border-radius: 6px;
|
|
236
|
+
height: 36px;
|
|
237
|
+
}
|
|
238
|
+
[data-theme=dark] .ag-input-field-input:focus {
|
|
239
|
+
outline: 2px solid var(--color-sys-focus-ring-bold);
|
|
240
|
+
border-color: var(--color-sys-focus-ring-bold);
|
|
241
|
+
}
|
|
242
|
+
[data-theme=dark] .ag-input-field-input::placeholder {
|
|
243
|
+
color: var(--color-sys-text-subtler);
|
|
244
|
+
}
|
|
245
|
+
[data-theme=dark] .ag-input-wrapper::before,
|
|
246
|
+
[data-theme=dark] .ag-input-wrapper::after,
|
|
247
|
+
[data-theme=dark] .ag-picker-field-icon .ag-icon::before,
|
|
248
|
+
[data-theme=dark] .ag-picker-field-icon .ag-icon::after {
|
|
249
|
+
background-color: var(--color-sys-text-subtle) !important;
|
|
250
|
+
color: var(--color-sys-text-subtle) !important;
|
|
251
|
+
}
|
|
252
|
+
[data-theme=dark] .ag-picker-field-icon {
|
|
253
|
+
background-color: transparent !important;
|
|
254
|
+
color: var(--color-sys-text-subtle) !important;
|
|
255
|
+
}
|
|
256
|
+
[data-theme=dark] .ag-icon {
|
|
257
|
+
color: var(--color-sys-text-subtle) !important;
|
|
258
|
+
}
|
|
259
|
+
[data-theme=dark] .ag-picker-field-wrapper {
|
|
260
|
+
background-color: var(--color-sys-background);
|
|
261
|
+
border: 1px solid var(--color-sys-divider-main);
|
|
262
|
+
border-radius: 6px;
|
|
263
|
+
min-height: 36px;
|
|
264
|
+
}
|
|
265
|
+
[data-theme=dark] .ag-picker-field-display {
|
|
266
|
+
color: var(--color-sys-text-main);
|
|
267
|
+
margin-left: 4px;
|
|
268
|
+
}
|
|
269
|
+
[data-theme=dark] .ag-rich-select-list,
|
|
270
|
+
[data-theme=dark] .ag-select-list,
|
|
271
|
+
[data-theme=dark] .ag-picker-field-wrapper .ag-picker-expanded {
|
|
272
|
+
background-color: var(--color-sys-background);
|
|
273
|
+
border: 1px solid var(--color-sys-divider-subtler);
|
|
274
|
+
box-shadow: 0 4px 16px var(--color-grayscale-s30);
|
|
275
|
+
}
|
|
276
|
+
[data-theme=dark] .ag-rich-select-row,
|
|
277
|
+
[data-theme=dark] .ag-select-list-item {
|
|
278
|
+
color: var(--color-sys-text-normal);
|
|
279
|
+
}
|
|
280
|
+
[data-theme=dark] .ag-rich-select-row.ag-rich-select-row-selected,
|
|
281
|
+
[data-theme=dark] .ag-select-list-item:hover,
|
|
282
|
+
[data-theme=dark] .ag-select-list-item.ag-select-list-item-highlighted {
|
|
283
|
+
background-color: var(--color-sys-table-select);
|
|
284
|
+
}
|
|
285
|
+
[data-theme=dark] .ag-checkbox-input-wrapper {
|
|
286
|
+
background-color: transparent !important;
|
|
287
|
+
box-shadow: none !important;
|
|
288
|
+
transform: scale(1.3);
|
|
289
|
+
}
|
|
290
|
+
[data-theme=dark] .ag-checkbox-input-wrapper::after {
|
|
291
|
+
color: white;
|
|
292
|
+
}
|
|
293
|
+
[data-theme=dark] .ag-radio-button .ag-radio-button-input-wrapper {
|
|
294
|
+
background-color: transparent;
|
|
295
|
+
border: 1.5px solid var(--color-sys-divider-main);
|
|
296
|
+
border-radius: 50%;
|
|
297
|
+
box-sizing: border-box;
|
|
298
|
+
transition: all 0.1s ease;
|
|
299
|
+
background-image: none !important;
|
|
300
|
+
mask-image: none !important;
|
|
301
|
+
}
|
|
302
|
+
[data-theme=dark] .ag-radio-button:not(.ag-checked) .ag-radio-button-input-wrapper {
|
|
303
|
+
border-color: var(--color-sys-divider-main);
|
|
304
|
+
}
|
|
305
|
+
[data-theme=dark] .ag-radio-button:not(.ag-checked) .ag-radio-button-input-wrapper::after {
|
|
306
|
+
content: none;
|
|
307
|
+
}
|
|
308
|
+
[data-theme=dark] .ag-radio-button .ag-radio-button-input-wrapper.ag-checked {
|
|
309
|
+
background-color: var(--color-primary30);
|
|
310
|
+
border-color: var(--color-primary30);
|
|
311
|
+
border-width: 0px;
|
|
312
|
+
background-image: none !important;
|
|
313
|
+
mask-image: none !important;
|
|
314
|
+
}
|
|
315
|
+
[data-theme=dark] .ag-radio-button .ag-radio-button-input-wrapper.ag-checked::after {
|
|
316
|
+
content: "";
|
|
317
|
+
display: block;
|
|
318
|
+
width: 100%;
|
|
319
|
+
height: 100%;
|
|
320
|
+
background-color: var(--color-sys-background) !important;
|
|
321
|
+
border-radius: 50%;
|
|
322
|
+
transform: scale(0.4);
|
|
323
|
+
background-image: none !important;
|
|
324
|
+
mask-image: none !important;
|
|
325
|
+
box-shadow: none !important;
|
|
326
|
+
border: none !important;
|
|
327
|
+
}
|
|
328
|
+
[data-theme=dark] .ag-checkbox-label,
|
|
329
|
+
[data-theme=dark] .ag-radio-button-label {
|
|
330
|
+
color: var(--color-sys-text-main);
|
|
331
|
+
}
|
|
332
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/parameterTable/parameterTable.css","../src/components/agGridTable/style.css"],"sourcesContent":["/* Parameter Table — Google Sheets 스타일 셀 모드 시각 스타일.\n active/selected/editing 상태는 ParameterTableRow 에서 data-* 속성으로 표시.\n\n 편집 input 은 단일 floating input 으로 root 안에 absolute positioning. 활성 cell\n 위에 띄워서 cell 위치를 따라간다 — IME composition 중 input element 가\n unmount/remount 되지 않으므로 한국어 자모 분리 문제가 발생하지 않는다. */\n\n.t3q-parameter-table {\n width: 100%;\n position: relative; /* floating input absolute 기준점 */\n}\n\n/* 셀 기본. text 선택 차단 + cursor-cell (셀 선택 UX 힌트). */\n.t3q-pt-cell {\n user-select: none;\n position: relative;\n vertical-align: middle;\n border-bottom: 1px solid var(--color-sys-divider-subtle); /* Table 행 선과 같은 토큰 (2026-10-17 이슈 47 4차) */\n}\n\n/* 마지막 행의 선은 Table 의 둥근 바깥 테두리와 겹치지 않게 지운다 */\ntr:last-child > .t3q-pt-cell {\n border-bottom: none;\n}\n\n/* 외부 검증 실패 셀. layout 영향 없이 연한 빨강 배경으로 강조.\n sys-alert-danger-background 와 동일 토큰(danger-o10) — opacity 기반이라 hover/selection\n tint 위에서도 자연스럽게 합성된다. 아래 .t3q-pt-cell--selected / --editing 이 CSS\n cascade 에서 뒤에 정의돼 사용자 인터랙션 중인 셀은 selection/editing 배경이 우선. */\n.t3q-pt-cell--error {\n background-color: var(--color-danger-o10);\n}\n\n/* 선택 범위 안의 셀. 배경에 옅은 primary tint. */\n.t3q-pt-cell--selected {\n background-color: var(--color-sys-table-select);\n}\n\n/* 편집 중 셀. 흰 배경 + 활성 outline. CSS 변수 fallback 안전한 outline 색. */\n.t3q-pt-cell--editing {\n background-color: var(--color-sys-background);\n outline: 2px solid var(--color-sys-focus-ring-bold);\n outline-offset: -2px;\n z-index: 1;\n}\n\n/* 비편집 상태의 셀 display 영역. 셀 안 텍스트 유무와 무관하게 행 높이가 동일하도록\n 고정 height + 명시적 line-height. min-height 가 floor 일 뿐이라 inline content 의\n font line box 가 박스 높이를 미세하게 변경시키는 문제를 차단. */\n.t3q-pt-cell-display {\n height: 28px;\n line-height: 1.4;\n display: flex;\n align-items: center;\n}\n\n/* 편집 중인 셀의 display 영역은 floating input 이 그 위를 덮으므로 visually hidden.\n 레이아웃은 유지해 (text node 그대로 둠) cell 의 line-height/height 측정에 영향 X. */\n.t3q-pt-cell-display--editing {\n visibility: hidden;\n}\n\n/* compact spacing 보정. */\n.t3q-parameter-table--compact .t3q-pt-cell-display {\n height: 24px;\n font-size: 13px;\n}\n\n.t3q-parameter-table--normal .t3q-pt-cell-display {\n height: 32px;\n}\n\n/* disabled. */\n.t3q-parameter-table--disabled .t3q-pt-cell {\n cursor: default;\n}\n\n/* 단일 floating input — 활성 cell 위에 absolute positioning. 비편집 모드에서는\n off-screen 아니라 활성 cell 위에 두지만 opacity:0 + pointer-events:none 으로 숨김.\n focus 는 항상 이 input 에 있어 한국어/일본어/중국어 IME 가 자연스럽게 composition\n 을 받는다. cell 별로 input 을 mount/unmount 하지 않으므로 composition 이\n 끊기지 않는다.\n\n background: transparent — 셀의 outline / background / selected tint 같은 모든 시각\n 단서는 cell 이 표현하고, floating input 은 단지 caret + text + selection 만 그 위에\n 덧그리는 invisible layer 역할. 불투명 background 였을 때는 cell editing 의 outline\n (outline-offset -2px 로 셀 안쪽에 그려짐) 이 가려져 안 보이는 문제가 있었다. */\n.t3q-pt-floating-input {\n position: absolute;\n margin: 0;\n border: 0;\n padding: 6px 12px;\n background: transparent;\n color: var(--color-sys-text-main);\n font: inherit;\n line-height: 1.4;\n outline: none;\n /* default: cell 위치에 두지만 안 보이고 mouse interaction 안 받음 */\n opacity: 0;\n pointer-events: none;\n z-index: 2;\n}\n\n/* compact spacing — cell display 와 동일한 폰트 크기 */\n.t3q-parameter-table--compact .t3q-pt-floating-input {\n font-size: 13px;\n}\n\n/* 편집 모드: 셀 위에 visible. */\n.t3q-pt-floating-input--editing {\n opacity: 1;\n pointer-events: auto;\n}\n",".ag-grid-container {\n width: 100%;\n height: 100%;\n}\n\n/*\n AG Grid legacy base rule `[class*=\"ag-theme-\"]` has higher specificity than\n v33 `:where(.ag-theme-params-*)` rules in some environments.\n Re-apply core table tokens here with stronger specificity.\n*/\n.ag-grid-container [class*='ag-theme-'] {\n --ag-font-family: var(--font-sans);\n --ag-header-background-color: var(--color-sys-table-header-background);\n /* 선 하나의 규칙(2026-10-17 이슈 47 4차): 바깥 둥근 테두리·헤더 아래 선·행 선이 모두 같은 1px sys-divider-subtle.\n 원문 심판이 \"채운 헤더 띠 vs 테두리 없는 행\", \"헤더에만 있는 열 구분선\" 을 감점했고, 사용자가 표를 감싸는 둥근 테두리를 요청 */\n --ag-border-color: var(--color-sys-divider-subtle);\n --ag-wrapper-border: solid 1px var(--color-sys-divider-subtle);\n --ag-wrapper-border-radius: var(--radius-medium);\n --ag-header-row-border: solid 1px var(--color-sys-divider-subtle);\n --ag-row-border: solid 1px var(--color-sys-divider-subtle);\n\n --ag-header-column-border: none;\n --ag-spacing: 8px;\n --ag-cell-horizontal-padding: calc(\n var(--ag-spacing) * 2 * var(--ag-cell-horizontal-padding-scale)\n );\n\n /*\n themeQuartz.withParams()는 CSS var() 레퍼런스를 색상으로 파싱하지 못해 기본값으로 폴백.\n CSS 오버라이드 방식으로 브라우저가 var()를 해석하도록 강제.\n */\n --ag-foreground-color: var(--color-sys-text-normal);\n --ag-background-color: var(--color-sys-background);\n --ag-header-foreground-color: var(--color-sys-table-header-text);\n --ag-row-hover-color: var(--color-sys-table-hover);\n --ag-selected-row-background-color: var(--color-sys-table-select);\n\n /* 헤더 컬럼 resize handle: CSS 변수로 다크모드 대응. 평소엔 숨기고 헤더 셀 hover 때만 보인다(아래) */\n --ag-header-column-resize-handle-color: var(--color-sys-border);\n --ag-header-column-resize-handle-height: 30%;\n --ag-header-column-resize-handle-width: 2px;\n}\n\n/* 둥근 테두리 안에서 헤더 모서리가 잘리도록. 테두리 자체는 --ag-wrapper-border 가 그린다 */\n.ag-grid-container .ag-root-wrapper {\n overflow: hidden;\n}\n\n/* 리사이즈 핸들은 hover 때만 — 늘 보이면 헤더에만 세로선이 있는 것처럼 읽힌다 */\n.ag-grid-container .ag-header-cell-resize::after {\n opacity: 0;\n transition: opacity 120ms ease;\n}\n.ag-grid-container .ag-header-cell:hover .ag-header-cell-resize::after {\n opacity: 1;\n}\n\n/* 마지막 행의 선은 바깥 테두리와 겹쳐 2px 가 되므로 지운다 */\n.ag-grid-container .ag-row.ag-row-last {\n border-bottom: none;\n}\n\n/* ============================================================================\n agGridTable/index.tsx에서 마이그레이션된 스타일\n ============================================================================ */\n\n/* onRowClicked 옵션 사용 시 마우스 커서 변경 */\n.ag-grid-container .ag-row-clickable {\n cursor: pointer;\n}\n\n/* 열 타입 'primary' (AgGridTable columnTypes): 주 식별자 열. 위계는 굵기로(본문 색, dl-ui-v3 목록의 이름 열과 같음),\n 클릭 가능하다는 표시는 행 hover 배경 + 이름 밑줄로. 파란 링크색은 쓰지 않는다 — 행 전체가 눌리는 표에서\n \"이름만 링크\" 로 읽히기 때문 (2026-10-09 결정) */\n.ag-grid-container .ag-cell-primary {\n color: var(--color-sys-text-main);\n font-weight: var(--font-weight-semibold);\n}\n/* hover 밑줄은 이름 글자에만 — 두 줄 셀(TwoLineCellRenderer)에서는 보조 줄까지 밑줄이 번지지 않게 첫 줄([data-slot='cell-primary'])만\n (2026-10-18 13차 ⑥). text-decoration 은 자손에게 전파되어 자손이 끌 수 없으므로 :has 로 대상을 나눈다 */\n.ag-grid-container .ag-row-clickable:hover .ag-cell-primary:not(:has([data-slot='cell-primary'])),\n.ag-grid-container .ag-row-clickable:hover .ag-cell-primary [data-slot='cell-primary'] {\n text-decoration: underline;\n}\n\n/* 셀 말줄임 (2026-10-18 13차): defaultColDef.cellStyle 이 display:flex 라 .ag-cell-value 가 flex 자식이 되고, flex 자식은 min-width:auto 라\n 줄어들지 않아 ag-grid 의 말줄임(overflow:hidden; text-overflow:ellipsis)이 죽는다 — 글자가 셀 끝에서 뚝 잘렸다\n (한 줄 판 12차 목록 9쌍 중 7쌍 \"clipped mid-word with no ellipsis\"). min-width:0 을 주면 줄어들며 말줄임표가 산다.\n wrapText 를 켠 열(.ag-cell-wrap-text)과 ag-allow-overflow 는 건드리지 않는다 */\n.ag-grid-container .ag-cell,\n.ag-grid-container .ag-cell-wrapper,\n.ag-grid-container .ag-cell-value {\n min-width: 0;\n}\n.ag-grid-container .ag-cell:not(.ag-cell-wrap-text) .ag-cell-value:not(.ag-allow-overflow) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* 평문 셀 말줄임 (2026-10-26 22차): 체크박스·행 끌기 열이 없는 표에서 ag-grid 는 .ag-cell-wrapper 를 만들지 않고 .ag-cell 자체에\n ag-cell-value 를 붙인다(toggleCss(\"ag-cell-value\", !usingWrapper)). valueFormatter 만 쓴 평문 열은 그 안이 글자 노드 하나인데\n defaultColDef.cellStyle 의 인라인 display:flex 가 들어가 글자가 익명 flex 항목이 되고 ellipsis 가 그려지지 않는다 — 위 규칙은 자손\n 선택자라 같은 요소에 닿지 않는다(21차 1-B: 'a100-prod-cluste' 뚝 잘림, 두 줄 판 알림 규칙 목록 2/3 run). 자식 요소가 없는 값 셀만\n block 으로 되돌린다(인라인 스타일을 이기려면 !important). 세로 가운데는 align-content. renderer 가 있는 셀(flex 정렬이 필요)·\n 숫자 열(.ag-right-aligned-cell, justify-content:flex-end 유지)·wrapText 열은 그대로 */\n.ag-grid-container\n .ag-cell.ag-cell-value:not(:has(> *)):not(.ag-right-aligned-cell):not(.ag-cell-wrap-text) {\n display: block !important;\n align-content: center;\n}\n\n/* 열 타입 'number' (AgGridTable columnTypes): 숫자 열. defaultColDef.cellStyle 이 display:flex 라 ag-grid 의 text-align:right 가\n 먹지 않으므로 justify-content 로 오른쪽 정렬. 제목은 글자를 오른쪽, 정렬 아이콘을 왼쪽에(row-reverse). 숫자 폭은 고정(tabular-nums)\n — 원문 심판이 \"숫자 열이 왼쪽 정렬\" 을 51쌍에서 20회 감점 (2026-10-16 이슈 47) */\n.ag-grid-container .ag-cell.ag-right-aligned-cell {\n justify-content: flex-end;\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n.ag-grid-container .ag-header-cell.ag-right-aligned-header .ag-header-cell-label {\n /* 글자만 오른쪽으로, 정렬 아이콘은 다른 열처럼 글자 뒤. ag-grid 기본 테마가 숫자 열 헤더에 row-reverse 를 걸어 아이콘이 왼쪽으로 가므로\n 명시적으로 되돌린다 (2026-10-17 5차: \"아이콘 자리가 다르다\" 감점) */\n flex-direction: row;\n justify-content: flex-end;\n}\n/* 정렬 아이콘이 늘 보이는 숫자 열(withSortIconOffset): 위 제목은 글자 뒤에 아이콘(간격 --ag-spacing + 아이콘 --ag-icon-size)이 있어 글자가\n 값보다 그만큼 왼쪽에서 끝난다. 값 셀의 오른쪽 여백을 같은 폭만큼 늘려 제목 글자 끝 = 값 끝으로 맞춘다\n (2026-10-30 홀드아웃 17 세트 2: \"right-aligned numeric values under left-aligned column headers\") */\n.ag-grid-container .ag-cell.ag-right-aligned-cell.ag-cell-sort-offset {\n /* ag-grid 셀 여백 식(셀 테두리 1px 를 뺀 값)에 아이콘 폭을 더한다 — 1px 를 빼지 않으면 값이 제목보다 1px 안쪽(2026-10-30 실측) */\n padding-right: calc(\n var(--ag-cell-horizontal-padding) - 1px + var(--ag-spacing) + var(--ag-icon-size)\n );\n}\n\n/* 상세가 열린 행 (ListPage activeRowId → rowClassRules 'ag-row-active'). 선택 행과 같은 색 */\n.ag-grid-container .ag-row.ag-row-active {\n background-color: var(--color-sys-table-select);\n}\n\n/*\n domLayout: 'autoHeight' 일 때 기본 높이 제거 (단, 데이터가 없는 경우 기본 높이 유지)\n https://www.ag-grid.com/react-data-grid/grid-size/#min-height-with-auto-height\n */\n.ag-grid-container[data-is-empty='false'] .ag-center-cols-viewport {\n min-height: unset !important;\n}\n\n/* 헤더는 바깥 둥근 테두리가 모서리를 맡으므로 자체 라운드 없음 */\n.ag-grid-container .ag-header {\n position: relative;\n z-index: 1;\n}\n\n/* 마지막 컬럼 크기 조절 버튼 숨김 */\n.ag-grid-container .ag-column-last .ag-header-cell-resize {\n display: none;\n}\n\n/* cellClass 옵션에 추가 시 cell width 100%으로 적용 */\n.ag-grid-container .width_full .ag-cell-wrapper {\n width: 100%;\n}\n\n.ag-grid-container .width_full .ag-cell-value {\n width: 100%;\n}\n\n.ag-grid-container .width_full.ag-cell {\n width: 100%;\n}\n\n.ag-grid-container .ag-column-first {\n display: flex;\n align-items: center;\n}\n\n/* 체크박스 크기 복원 (v33 Theming API에서 기본으로 작아짐 방지) */\n.ag-checkbox-input-wrapper,\n.ag-radio-button-input-wrapper {\n transform: scale(1.3);\n}\n\n/* focus 시 보여지는 border-color 초기화 */\n.ag-cell-focus:not(.ag-cell-range-selected):focus-within,\n.ag-cell-range-single-cell,\n.ag-cell-range-single-cell.ag-cell-range-handle,\n.ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group {\n border-color: transparent;\n}\n\n/* AG Grid v33: 마우스 클릭 시 focus-within 없이 ag-cell-focus만 붙는 케이스 대응 */\n.ag-grid-container .ag-cell-focus:not(.ag-cell-range-selected) {\n border-color: transparent !important;\n}\n\n/* 빈 상태 오버레이 지원 */\n.ag-overlay-no-rows-wrapper {\n position: absolute;\n top: 40px;\n height: calc(100% - 40px);\n background-color: var(--color-sys-background);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.ag-overlay-no-rows-center {\n background-color: var(--color-sys-background);\n color: var(--color-sys-text-subtle);\n}\n\n/* 로딩 오버레이 지원 */\n.ag-overlay-loading-wrapper {\n background-color: var(--color-sys-background);\n}\n\n.ag-overlay-loading-center {\n background-color: var(--color-sys-background);\n color: var(--color-sys-text-normal);\n}\n\n/* 행 클릭 시 눌림 효과 */\n.ag-grid-container .ag-row:active {\n background-color: var(--color-sys-table-press) !important;\n}\n\n/* 선택된 행 hover 상태 */\n.ag-grid-container .ag-row-selected.ag-row-hover {\n background-color: var(--color-sys-table-press);\n}\n\n/* Checkbox Column Fix: Remove padding to allow full cell click area */\n.checkbox-column-cell {\n padding: 0 !important;\n display: flex !important;\n justify-content: center !important;\n align-items: center !important;\n}\n\n.checkbox-column-cell .ag-react-container {\n width: 100%;\n height: 100%;\n}\n\n/* ============================================================================\n 다크모드 AG Grid 오버라이드\n AG Grid 팝업(ag-popup, ag-menu)은 body 포털로 렌더링되므로\n .ag-grid-container 스코프 없이 [data-theme='dark']로만 처리\n ============================================================================ */\n\n/* 팝업 / 메뉴 / 필터 배경 */\n[data-theme='dark'] .ag-popup,\n[data-theme='dark'] .ag-menu,\n[data-theme='dark'] .ag-filter {\n background-color: var(--color-sys-background);\n border: 1px solid var(--color-sys-divider-subtler);\n}\n\n[data-theme='dark'] .ag-filter-toolpanel-header,\n[data-theme='dark'] .ag-filter-air-mode,\n[data-theme='dark'] .ag-filter-list-panel,\n[data-theme='dark'] .ag-filter-apply-panel {\n background-color: var(--color-sys-background);\n}\n\n/* 텍스트 입력창 (Search) */\n[data-theme='dark'] .ag-input-field-input {\n background-color: var(--color-sys-background);\n color: var(--color-sys-text-main);\n border: 1px solid var(--color-sys-divider-main);\n border-radius: 6px;\n height: 36px;\n}\n\n[data-theme='dark'] .ag-input-field-input:focus {\n outline: 2px solid var(--color-sys-focus-ring-bold);\n border-color: var(--color-sys-focus-ring-bold);\n}\n\n[data-theme='dark'] .ag-input-field-input::placeholder {\n color: var(--color-sys-text-subtler);\n}\n\n[data-theme='dark'] .ag-input-wrapper::before,\n[data-theme='dark'] .ag-input-wrapper::after,\n[data-theme='dark'] .ag-picker-field-icon .ag-icon::before,\n[data-theme='dark'] .ag-picker-field-icon .ag-icon::after {\n background-color: var(--color-sys-text-subtle) !important;\n color: var(--color-sys-text-subtle) !important;\n}\n\n[data-theme='dark'] .ag-picker-field-icon {\n background-color: transparent !important;\n color: var(--color-sys-text-subtle) !important;\n}\n\n[data-theme='dark'] .ag-icon {\n color: var(--color-sys-text-subtle) !important;\n}\n\n/* 셀렉트 박스 */\n[data-theme='dark'] .ag-picker-field-wrapper {\n background-color: var(--color-sys-background);\n border: 1px solid var(--color-sys-divider-main);\n border-radius: 6px;\n min-height: 36px;\n}\n\n[data-theme='dark'] .ag-picker-field-display {\n color: var(--color-sys-text-main);\n margin-left: 4px;\n}\n\n[data-theme='dark'] .ag-rich-select-list,\n[data-theme='dark'] .ag-select-list,\n[data-theme='dark'] .ag-picker-field-wrapper .ag-picker-expanded {\n background-color: var(--color-sys-background);\n border: 1px solid var(--color-sys-divider-subtler);\n box-shadow: 0 4px 16px var(--color-grayscale-s30);\n}\n\n[data-theme='dark'] .ag-rich-select-row,\n[data-theme='dark'] .ag-select-list-item {\n color: var(--color-sys-text-normal);\n}\n\n[data-theme='dark'] .ag-rich-select-row.ag-rich-select-row-selected,\n[data-theme='dark'] .ag-select-list-item:hover,\n[data-theme='dark'] .ag-select-list-item.ag-select-list-item-highlighted {\n background-color: var(--color-sys-table-select);\n}\n\n/* 체크박스: 글로우/배경 제거 */\n[data-theme='dark'] .ag-checkbox-input-wrapper {\n background-color: transparent !important;\n box-shadow: none !important;\n transform: scale(1.3);\n}\n\n[data-theme='dark'] .ag-checkbox-input-wrapper::after {\n color: white;\n}\n\n/* 라디오 버튼: Masked Donut 전략 */\n[data-theme='dark'] .ag-radio-button .ag-radio-button-input-wrapper {\n background-color: transparent;\n border: 1.5px solid var(--color-sys-divider-main);\n border-radius: 50%;\n box-sizing: border-box;\n transition: all 0.1s ease;\n background-image: none !important;\n mask-image: none !important;\n}\n\n[data-theme='dark'] .ag-radio-button:not(.ag-checked) .ag-radio-button-input-wrapper {\n border-color: var(--color-sys-divider-main);\n}\n\n[data-theme='dark'] .ag-radio-button:not(.ag-checked) .ag-radio-button-input-wrapper::after {\n content: none;\n}\n\n[data-theme='dark'] .ag-radio-button .ag-radio-button-input-wrapper.ag-checked {\n background-color: var(--color-primary30);\n border-color: var(--color-primary30);\n border-width: 0px;\n background-image: none !important;\n mask-image: none !important;\n}\n\n[data-theme='dark'] .ag-radio-button .ag-radio-button-input-wrapper.ag-checked::after {\n content: '';\n display: block;\n width: 100%;\n height: 100%;\n background-color: var(--color-sys-background) !important;\n border-radius: 50%;\n transform: scale(0.4);\n background-image: none !important;\n mask-image: none !important;\n box-shadow: none !important;\n border: none !important;\n}\n\n/* 체크박스 / 라디오 레이블 */\n[data-theme='dark'] .ag-checkbox-label,\n[data-theme='dark'] .ag-radio-button-label {\n color: var(--color-sys-text-main);\n}\n"],"mappings":"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","names":[]}
|