@nice2dev/ui-printing 1.1.10 → 1.2.1
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/README.md +0 -6
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +1312 -1295
- package/dist/types/printingTypes.d.ts +2 -2
- package/dist/ui-printing.css +1 -1
- package/package.json +3 -3
- package/src/__tests__/renders-empty.test.tsx +46 -0
- package/src/print-preview/NicePrintPreview.tsx +5 -1
- package/src/print-preview/PrintPreview.module.css +1 -1
- package/src/print-queue/NicePrintQueue.tsx +5 -1
- package/src/print-queue/PrintQueue.module.css +1 -1
- package/src/template-browser/NiceTemplateBrowser.tsx +5 -1
- package/src/template-editor/NiceTemplateEditor.tsx +52 -25
- package/src/template-editor/TemplateEditor.module.css +3 -3
- package/src/types/printingTypes.ts +2 -2
|
@@ -188,7 +188,7 @@ export interface NiceTemplateEditorProps {
|
|
|
188
188
|
theme?: 'light' | 'dark';
|
|
189
189
|
}
|
|
190
190
|
export interface NiceTemplateBrowserProps {
|
|
191
|
-
templates
|
|
191
|
+
templates?: PrintTemplate[];
|
|
192
192
|
selectedId?: TemplateId;
|
|
193
193
|
onSelect?: (template: PrintTemplate) => void;
|
|
194
194
|
onImport?: (template: PrintTemplate) => void;
|
|
@@ -219,7 +219,7 @@ export interface NicePrintPreviewProps {
|
|
|
219
219
|
onClose?: () => void;
|
|
220
220
|
}
|
|
221
221
|
export interface NicePrintQueueProps {
|
|
222
|
-
jobs
|
|
222
|
+
jobs?: PrintJob[];
|
|
223
223
|
printers?: PrinterInfo[];
|
|
224
224
|
onJobUpdate: (id: PrintJobId, patch: Partial<PrintJob>) => void;
|
|
225
225
|
onJobRemove: (id: PrintJobId) => void;
|
package/dist/ui-printing.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
._root_lceud_3{display:flex;flex-direction:column;height:100%;min-height:0;font-family:system-ui,sans-serif;font-size:12px;background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b);overflow:hidden}._dark_lceud_27{background:var(--nice-bg-primary, #0f172a);color:var(--nice-text-secondary, #e2e8f0)}._toolbar_lceud_39{display:flex;align-items:center;flex-wrap:wrap;gap:var(--nice-space-1-5, 6px);padding:var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px);background:var(--nice-bg, #ffffff);border-bottom:1px solid var(--nice-border, #e2e8f0);box-shadow:0 1px 3px var(--nice-overlay-6, rgba(0, 0, 0, .06));flex-shrink:0;z-index:10}._dark_lceud_27 ._toolbar_lceud_39{background:var(--nice-bg-secondary, #1e293b);border-bottom-color:var(--nice-border-color, #334155)}._toolbarGroup_lceud_75{display:flex;align-items:center;gap:var(--nice-space-0-5, 2px);padding:0 var(--nice-space-1-5, 6px);border-right:1px solid var(--nice-border, #e2e8f0)}._dark_lceud_27 ._toolbarGroup_lceud_75{border-right-color:var(--nice-border-color, #334155)}._toolbarGroup_lceud_75:last-child{border-right:none}._toolbarBtn_lceud_107{display:inline-flex;align-items:center;justify-content:center;padding:var(--nice-space-1, 4px) var(--nice-space-1-75, 7px);border:1px solid transparent;border-radius:var(--nice-radius-md, 5px);background:transparent;color:inherit;cursor:pointer;font-size:12px;min-width:28px;white-space:nowrap;transition:background .15s,border-color .15s}._toolbarBtn_lceud_107:hover:not(:disabled){background:var(--nice-bg-secondary, #f1f5f9);border-color:var(--nice-border, #cbd5e1)}._dark_lceud_27 ._toolbarBtn_lceud_107:hover:not(:disabled){background:var(--nice-bg-tertiary, #334155)}._toolbarBtn_lceud_107:disabled{opacity:.35;cursor:not-allowed}._toolbarBtnActive_lceud_171{background:var(--nice-primary-bg, #dbeafe);border-color:var(--nice-primary-light, #93c5fd);color:var(--nice-primary-dark, #1d4ed8)}._dark_lceud_27 ._toolbarBtnActive_lceud_171{background:var(--nice-primary-dark, #1e3a5f);border-color:var(--nice-primary, #3b82f6);color:var(--nice-primary-light, #93c5fd)}._toolbarBtnDanger_lceud_195:hover:not(:disabled){background:var(--nice-danger-bg, #fee2e2);border-color:var(--nice-danger-bg, #fca5a5);color:var(--nice-danger-dark, #dc2626)}._toolbarSelect_lceud_207{padding:var(--nice-space-0-75, 3px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-border, #cbd5e1);border-radius:var(--nice-radius-md, 5px);background:var(--nice-bg-secondary, #f8fafc);color:inherit;font-size:12px;cursor:pointer}._dark_lceud_27 ._toolbarSelect_lceud_207{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #475569)}._toolbarSep_lceud_237{display:inline-block;width:1px;height:16px;background:var(--nice-border, #e2e8f0);margin:0 var(--nice-space-0-5, 2px)}._dark_lceud_27 ._toolbarSep_lceud_237{background:var(--nice-bg-tertiary, #334155)}._insertWrapper_lceud_263{position:relative}._insertBtn_lceud_271{font-weight:500;color:var(--nice-primary-hover, #2563eb);border-color:var(--nice-primary-bg, #bfdbfe);background:var(--nice-primary-bg, #eff6ff)}._insertBtn_lceud_271:hover{background:var(--nice-primary-bg, #dbeafe)}._insertDropdown_lceud_293{position:absolute;top:calc(100% + 4px);left:0;background:var(--nice-bg, #ffffff);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 8px);box-shadow:0 8px 24px var(--nice-overlay-12, rgba(0, 0, 0, .12));min-width:180px;z-index:100;padding:var(--nice-space-1, 4px);display:flex;flex-direction:column}._dark_lceud_27 ._insertDropdown_lceud_293{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #334155)}._insertCategory_lceud_333{padding:var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px) var(--nice-space-0-5, 2px);font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--nice-text-muted, #94a3b8)}._insertItem_lceud_351{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px);border:none;background:transparent;cursor:pointer;font-size:12px;color:inherit;border-radius:var(--nice-radius-md, 5px);text-align:left}._insertItem_lceud_351:hover{background:var(--nice-bg-secondary, #f1f5f9)}._dark_lceud_27 ._insertItem_lceud_351:hover{background:var(--nice-bg-tertiary, #334155)}._insertIcon_lceud_395{font-size:13px;width:18px;text-align:center}._zoomSelect_lceud_409{padding:var(--nice-space-0-75, 3px) var(--nice-space-1, 4px);border:1px solid var(--nice-border, #cbd5e1);border-radius:var(--nice-radius-md, 5px);background:var(--nice-bg-secondary, #f8fafc);color:inherit;font-size:12px;width:60px}._dark_lceud_27 ._zoomSelect_lceud_409{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #475569)}._saveBtn_lceud_441{margin-left:auto;padding:var(--nice-space-1-25, 5px) var(--nice-space-3-5, 14px);background:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff);border:none;border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:12px;font-weight:500;transition:background .15s}._saveBtn_lceud_441:hover{background:var(--nice-primary-dark, #1d4ed8)}._editorBody_lceud_477{display:flex;flex:1;min-height:0;overflow:hidden}._leftPanel_lceud_493{display:flex;flex-direction:column;width:220px;flex-shrink:0;border-right:1px solid var(--nice-border, #e2e8f0);background:var(--nice-bg, #ffffff);overflow:hidden}._dark_lceud_27 ._leftPanel_lceud_493{background:var(--nice-bg-secondary, #1e293b);border-right-color:var(--nice-border-color, #334155)}._leftTabs_lceud_523{display:flex;border-bottom:1px solid var(--nice-border, #e2e8f0);flex-shrink:0}._dark_lceud_27 ._leftTabs_lceud_523{border-bottom-color:var(--nice-border-color, #334155)}._leftTab_lceud_523{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--nice-space-0-5, 2px);padding:var(--nice-space-2, 8px) var(--nice-space-0-5, 2px);border:none;background:transparent;color:var(--nice-text-secondary, #64748b);cursor:pointer;font-size:10px;border-bottom:2px solid transparent;transition:color .15s,border-color .15s,background .15s}._leftTab_lceud_523:hover{background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b)}._dark_lceud_27 ._leftTab_lceud_523:hover{background:var(--nice-bg-primary, #0f172a);color:var(--nice-text-secondary, #e2e8f0)}._leftTabActive_lceud_601{color:var(--nice-primary-hover, #2563eb);border-bottom-color:var(--nice-primary-hover, #2563eb);background:var(--nice-primary-bg, #eff6ff)}._dark_lceud_27 ._leftTabActive_lceud_601{background:var(--nice-primary-dark, #1e3a5f)}._leftTabIcon_lceud_621{font-size:14px}._leftTabLabel_lceud_629{font-size:9px;font-weight:500}._leftContent_lceud_639{flex:1;overflow-y:auto;padding:var(--nice-space-2, 8px) 0}._panelHeader_lceud_653{padding:var(--nice-space-2, 8px) var(--nice-space-3, 12px) var(--nice-space-1, 4px);font-size:11px;font-weight:600;color:var(--nice-text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:var(--nice-space-1-5, 6px)}._panelHeaderIcon_lceud_677{font-size:13px}._panelHeaderName_lceud_685{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._searchBox_lceud_699{padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px) var(--nice-space-1-5, 6px)}._searchInput_lceud_707{width:100%;padding:var(--nice-space-1-25, 5px) var(--nice-space-2, 8px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);font-size:12px;background:var(--nice-bg-secondary, #f8fafc);color:inherit;box-sizing:border-box}._dark_lceud_27 ._searchInput_lceud_707{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._searchInput_lceud_707:focus{outline:2px solid var(--nice-primary, #3b82f6);outline-offset:-1px}._fieldList_lceud_753{display:flex;flex-direction:column}._fieldItem_lceud_763{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-1-5, 6px) var(--nice-space-3, 12px);cursor:grab;border-radius:0;transition:background .12s}._fieldItem_lceud_763:hover{background:var(--nice-bg-secondary, #f1f5f9)}._dark_lceud_27 ._fieldItem_lceud_763:hover{background:var(--nice-bg-tertiary, #334155)}._fieldItem_lceud_763:active{cursor:grabbing}._fieldItemIcon_lceud_807{font-size:13px;width:18px;text-align:center;flex-shrink:0}._fieldItemInfo_lceud_821{flex:1;min-width:0}._fieldItemLabel_lceud_831{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._fieldItemPath_lceud_847{font-size:10px;color:var(--nice-text-muted, #94a3b8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._fieldItemType_lceud_863{font-size:9px;background:var(--nice-border, #e2e8f0);color:var(--nice-text-secondary, #475569);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-sm, 3px);flex-shrink:0}._layerList_lceud_883{display:flex;flex-direction:column;padding:var(--nice-space-0-5, 2px) 0}._layerItem_lceud_895{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-1-25, 5px) var(--nice-space-2-5, 10px) var(--nice-space-1-25, 5px) var(--nice-space-3, 12px);cursor:pointer;transition:background .12s}._layerItem_lceud_895:hover{background:var(--nice-bg-secondary, #f1f5f9)}._dark_lceud_27 ._layerItem_lceud_895:hover{background:var(--nice-bg-tertiary, #334155)}._layerItemSelected_lceud_931{background:var(--nice-primary-bg, #eff6ff);border-left:2px solid var(--nice-primary-hover, #2563eb)}._dark_lceud_27 ._layerItemSelected_lceud_931{background:var(--nice-primary-dark, #1e3a5f)}._layerIcon_lceud_949{font-size:12px;width:16px;text-align:center}._layerName_lceud_961{flex:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._layerActions_lceud_977{display:flex;gap:var(--nice-space-0-5, 2px);opacity:0;transition:opacity .15s}._layerItem_lceud_895:hover ._layerActions_lceud_977{opacity:1}._layerBtn_lceud_999{padding:var(--nice-space-0-5, 2px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 3px);background:transparent;cursor:pointer;font-size:11px;color:inherit;line-height:1}._layerBtn_lceud_999:hover{background:var(--nice-bg-secondary, #f1f5f9)}._wmList_lceud_1031{padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px)}._wmItem_lceud_1039{background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 8px);padding:var(--nice-space-2, 8px) var(--nice-space-2-5, 10px);margin-bottom:var(--nice-space-2, 8px)}._dark_lceud_27 ._wmItem_lceud_1039{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._wmRow_lceud_1065{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);margin-bottom:var(--nice-space-1-25, 5px)}._wmLabel_lceud_1079{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:52px}._wmInput_lceud_1091{flex:1;padding:var(--nice-space-1, 4px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._wmInput_lceud_1091{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._wmInputNum_lceud_1123{width:54px;padding:var(--nice-space-1, 4px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._wmSelect_lceud_1143{flex:1;padding:var(--nice-space-1, 4px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._wmSelect_lceud_1143{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._wmSlider_lceud_1175{flex:1;accent-color:var(--nice-primary-hover, #2563eb)}._wmValue_lceud_1185{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:32px;text-align:right}._wmUnit_lceud_1199{font-size:11px;color:var(--nice-text-muted, #94a3b8)}._wmDelete_lceud_1209{width:100%;margin-top:var(--nice-space-1, 4px);padding:var(--nice-space-1, 4px);border:1px solid var(--nice-danger-bg, #fca5a5);border-radius:var(--nice-radius-md, 5px);background:var(--nice-bg, #fff);color:var(--nice-danger, #ef4444);font-size:11px;cursor:pointer}._wmDelete_lceud_1209:hover{background:var(--nice-danger-bg, #fee2e2)}._addBtn_lceud_1241{width:100%;padding:var(--nice-space-1-75, 7px);border:1px dashed var(--nice-border, #cbd5e1);border-radius:var(--nice-radius-md, 6px);background:transparent;color:var(--nice-primary-hover, #2563eb);font-size:12px;cursor:pointer;margin-top:var(--nice-space-1, 4px)}._addBtn_lceud_1241:hover{background:var(--nice-primary-bg, #eff6ff);border-color:var(--nice-primary-light, #93c5fd)}._settingsForm_lceud_1277{padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px)}._settingsRow_lceud_1285{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);margin-bottom:var(--nice-space-1-75, 7px)}._settingsLabel_lceud_1299{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:60px}._settingsInput_lceud_1311{flex:1;padding:var(--nice-space-1, 4px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 5px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._settingsInput_lceud_1311{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._settingsInputNum_lceud_1343{width:56px;padding:var(--nice-space-1, 4px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 5px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._settingsInputNum_lceud_1343{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._settingsTextarea_lceud_1375{flex:1;padding:var(--nice-space-1, 4px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 5px);font-size:12px;background:var(--nice-bg, #fff);color:inherit;resize:vertical}._dark_lceud_27 ._settingsTextarea_lceud_1375{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._settingsDivider_lceud_1409{margin:var(--nice-space-2-5, 10px) 0 var(--nice-space-1-5, 6px);padding:0;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--nice-text-muted, #94a3b8)}._settingsUnit_lceud_1429{font-size:11px;color:var(--nice-text-muted, #94a3b8)}._emptyMsg_lceud_1441{padding:var(--nice-space-4, 16px) var(--nice-space-3, 12px);font-size:11px;color:var(--nice-text-muted, #94a3b8);text-align:center;line-height:1.5}._canvasArea_lceud_1459{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--nice-bg-secondary, #f1f5f9)}._dark_lceud_27 ._canvasArea_lceud_1459{background:var(--nice-bg-primary, #0f172a)}._testDataBar_lceud_1485{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-1-25, 5px) var(--nice-space-3, 12px);background:var(--nice-warning-bg, #fffbeb);border-bottom:1px solid var(--nice-warning-light, #fcd34d);font-size:11px;flex-shrink:0}._dark_lceud_27 ._testDataBar_lceud_1485{background:#1c1709;border-bottom-color:var(--nice-warning-dark, #78350f)}._testDataLabel_lceud_1517{font-weight:500;color:var(--nice-warning-dark, #92400e)}._testDataSelect_lceud_1527{padding:var(--nice-space-0-5, 2px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-warning-light, #fcd34d);border-radius:var(--nice-radius-sm, 4px);font-size:11px;background:var(--nice-bg, #fff);color:inherit}._rulerWrapper_lceud_1547{position:relative;display:flex;flex-shrink:0;pointer-events:none;padding-left:var(--nice-space-5, 20px)}._rulerCorner_lceud_1563{position:absolute;top:0;left:0;width:20px;height:20px;background:var(--nice-border, #e2e8f0);z-index:5;border-right:1px solid var(--nice-border, #cbd5e1);border-bottom:1px solid var(--nice-border, #cbd5e1)}._dark_lceud_27 ._rulerCorner_lceud_1563{background:var(--nice-bg-tertiary, #334155);border-color:var(--nice-border-color, #475569)}._ruler_lceud_1547{position:relative;background:var(--nice-bg-secondary, #f8fafc);border-bottom:1px solid var(--nice-border, #e2e8f0);overflow:hidden}._dark_lceud_27 ._ruler_lceud_1547{background:var(--nice-bg-secondary, #1e293b);border-bottom-color:var(--nice-border-color, #334155)}._ruler_h_lceud_1621{width:100%;height:20px}._ruler_v_lceud_1631{position:absolute;left:0;top:20px;width:20px;height:calc(100% - 20px);border-right:1px solid var(--nice-border, #e2e8f0);border-bottom:none}._rulerTick_lceud_1651{position:absolute;top:auto;bottom:0;width:1px;height:5px;background:var(--nice-bg-tertiary, #94a3b8);transform:translate(-50%)}._ruler_v_lceud_1631 ._rulerTick_lceud_1651{top:0;bottom:auto;left:auto;right:0;width:5px;height:1px;transform:translateY(-50%)}._rulerTickMajor_lceud_1691{height:10px;background:var(--nice-bg-tertiary, #64748b)}._ruler_v_lceud_1631 ._rulerTickMajor_lceud_1691{height:1px;width:10px}._rulerLabel_lceud_1711{position:absolute;bottom:12px;left:2px;font-size:8px;color:var(--nice-text-secondary, #64748b);-webkit-user-select:none;user-select:none;white-space:nowrap}._ruler_v_lceud_1631 ._rulerLabel_lceud_1711{bottom:auto;top:2px;left:-2px;transform:rotate(-90deg) translate(50%);transform-origin:left top}._paperScroll_lceud_1749{flex:1;overflow:auto;padding:var(--nice-space-6, 24px);display:flex;justify-content:center;align-items:flex-start}._paperShadow_lceud_1767{position:relative;background:#fff;box-shadow:0 4px 24px var(--nice-overlay-20, rgba(0, 0, 0, .18)),0 1px 4px var(--nice-overlay-8, rgba(0, 0, 0, .08));flex-shrink:0}._dark_lceud_27 ._paperShadow_lceud_1767{background:#f8fafc}._marginGuide_lceud_1803{position:absolute;pointer-events:none;border:1px dashed rgba(59,130,246,.35);z-index:0}._watermark_lceud_1819{position:absolute;top:50%;left:50%;pointer-events:none;font-weight:900;white-space:nowrap;-webkit-user-select:none;user-select:none;letter-spacing:.1em;z-index:0}._sectionCanvas_lceud_1845{position:relative;width:100%;transition:box-shadow .15s;box-sizing:border-box}._sectionCanvasOver_lceud_1859{box-shadow:inset 0 0 0 2px var(--nice-primary, #3b82f6)}._sectionTypeChip_lceud_1867{position:absolute;top:3px;left:3px;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-sm, 3px);background:#94a3b840;color:var(--nice-text-secondary, #64748b);pointer-events:none;z-index:50}._sectionResizeBar_lceud_1899{position:absolute;bottom:0;left:0;right:0;height:6px;cursor:ns-resize;display:flex;align-items:center;justify-content:center;z-index:20}._sectionResizeBar_lceud_1899:hover{background:var(--nice-primary-tint-15, rgba(59, 130, 246, .15))}._sectionResizeGrip_lceud_1933{width:40px;height:3px;border-radius:var(--nice-radius-full, 99px);background:var(--nice-border, #cbd5e1)}._fieldImagePlaceholder_lceud_1949{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f1f5f9);color:var(--nice-text-muted, #94a3b8);font-size:18px}._fieldBarcodePlaceholder_lceud_1971{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text-secondary, #64748b);font-size:10px;font-family:monospace;letter-spacing:.05em;border:1px solid var(--nice-border, #e2e8f0)}._fieldSignaturePlaceholder_lceud_1999{width:100%;height:100%;display:flex;align-items:flex-end;padding:var(--nice-space-1, 4px);border-bottom:1px solid var(--nice-border-color, #1e293b);color:var(--nice-text-muted, #94a3b8);font-size:10px;box-sizing:border-box}._resizeHandle_lceud_2031{position:absolute;width:8px;height:8px;background:var(--nice-primary-hover, #2563eb);border:1.5px solid var(--nice-bg, #fff);border-radius:var(--nice-radius-sm, 2px);z-index:100}._handle_n_lceud_2051{top:-4px;left:50%;transform:translate(-50%);cursor:n-resize}._handle_s_lceud_2063{bottom:-4px;left:50%;transform:translate(-50%);cursor:s-resize}._handle_e_lceud_2075{right:-4px;top:50%;transform:translateY(-50%);cursor:e-resize}._handle_w_lceud_2087{left:-4px;top:50%;transform:translateY(-50%);cursor:w-resize}._handle_ne_lceud_2099{top:-4px;right:-4px;cursor:ne-resize}._handle_nw_lceud_2109{top:-4px;left:-4px;cursor:nw-resize}._handle_se_lceud_2119{bottom:-4px;right:-4px;cursor:se-resize}._handle_sw_lceud_2129{bottom:-4px;left:-4px;cursor:sw-resize}._rightPanel_lceud_2143{width:240px;flex-shrink:0;display:flex;flex-direction:column;border-left:1px solid var(--nice-border, #e2e8f0);background:var(--nice-bg, #ffffff);overflow:hidden}._dark_lceud_27 ._rightPanel_lceud_2143{background:var(--nice-bg-secondary, #1e293b);border-left-color:var(--nice-border-color, #334155)}._rightTabs_lceud_2173{display:flex;border-bottom:1px solid var(--nice-border, #e2e8f0);flex-shrink:0}._dark_lceud_27 ._rightTabs_lceud_2173{border-bottom-color:var(--nice-border-color, #334155)}._rightTab_lceud_2173{flex:1;padding:var(--nice-space-1-75, 7px) var(--nice-space-1, 4px);border:none;background:transparent;color:var(--nice-text-secondary, #64748b);cursor:pointer;font-size:11px;border-bottom:2px solid transparent;transition:color .12s,border-color .12s,background .12s}._rightTab_lceud_2173:hover{background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b)}._dark_lceud_27 ._rightTab_lceud_2173:hover{background:var(--nice-bg-primary, #0f172a);color:var(--nice-text-secondary, #e2e8f0)}._rightTabActive_lceud_2243{color:var(--nice-primary-hover, #2563eb);border-bottom-color:var(--nice-primary-hover, #2563eb);font-weight:500}._propsBody_lceud_2255{flex:1;overflow-y:auto;padding:var(--nice-space-2, 8px) var(--nice-space-2-5, 10px)}._propsEmpty_lceud_2267{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-6, 24px) var(--nice-space-4, 16px);color:var(--nice-text-muted, #94a3b8)}._propsEmptyIcon_lceud_2289{font-size:36px;opacity:.4}._propsEmptyText_lceud_2299{font-size:12px;text-align:center}._posGrid_lceud_2311{display:grid;grid-template-columns:1fr 1fr;gap:var(--nice-space-1-5, 6px);margin-bottom:var(--nice-space-2-5, 10px)}._posCell_lceud_2325{display:flex;align-items:center;gap:var(--nice-space-0-75, 3px)}._posLabel_lceud_2337{font-size:10px;color:var(--nice-text-secondary, #64748b);min-width:28px}._posInput_lceud_2349{width:54px;padding:var(--nice-space-1, 4px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._posInput_lceud_2349{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._posInput_lceud_2349:focus{outline:2px solid var(--nice-primary, #3b82f6);outline-offset:-1px}._posUnit_lceud_2391{font-size:10px;color:var(--nice-text-muted, #94a3b8)}._snapSection_lceud_2403{margin-top:var(--nice-space-2, 8px)}._snapTitle_lceud_2411{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--nice-text-muted, #94a3b8);margin-bottom:var(--nice-space-1-25, 5px)}._snapRow_lceud_2429{display:flex;gap:var(--nice-space-1, 4px)}._snapBtn_lceud_2439{flex:1;padding:var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 5px);background:var(--nice-bg-secondary, #f8fafc);color:inherit;font-size:13px;cursor:pointer}._snapBtn_lceud_2439:hover{background:var(--nice-primary-bg, #eff6ff);border-color:var(--nice-primary-light, #93c5fd)}._styleGroup_lceud_2473{margin-bottom:var(--nice-space-2-5, 10px)}._styleGroupTitle_lceud_2481{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--nice-text-muted, #94a3b8);margin-bottom:var(--nice-space-1-5, 6px);padding-bottom:var(--nice-space-1, 4px);border-bottom:1px solid var(--nice-bg-secondary, #f1f5f9)}._dark_lceud_27 ._styleGroupTitle_lceud_2481{border-bottom-color:var(--nice-border-color, #334155)}._styleRow_lceud_2511{display:flex;align-items:center;gap:var(--nice-space-1-25, 5px);margin-bottom:var(--nice-space-1-25, 5px)}._styleLabel_lceud_2525{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:50px;flex-shrink:0}._styleSelect_lceud_2539{padding:var(--nice-space-0-75, 3px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._styleSelect_lceud_2539{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleSelectFull_lceud_2569{flex:1;padding:var(--nice-space-0-75, 3px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._styleSelectFull_lceud_2569{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleSelectSm_lceud_2601{width:50px;padding:var(--nice-space-0-75, 3px) var(--nice-space-1, 4px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._styleSelectXs_lceud_2621{width:42px;padding:var(--nice-space-0-75, 3px) var(--nice-space-1, 4px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:11px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._styleSelectXs_lceud_2621{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleInput_lceud_2653{width:52px;padding:var(--nice-space-0-75, 3px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._styleInput_lceud_2653{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleInputFull_lceud_2685{flex:1;padding:var(--nice-space-0-75, 3px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._styleInputFull_lceud_2685{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleUnit_lceud_2717{font-size:10px;color:var(--nice-text-muted, #94a3b8);flex-shrink:0}._styleValue_lceud_2729{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:32px;text-align:right}._toggleGroup_lceud_2743{display:flex;gap:var(--nice-space-0-5, 2px)}._toggleBtn_lceud_2753{padding:var(--nice-space-0-75, 3px) var(--nice-space-2, 8px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);background:var(--nice-bg-secondary, #f8fafc);color:inherit;font-size:12px;cursor:pointer;transition:background .12s,border-color .12s}._toggleBtn_lceud_2753:hover{background:var(--nice-border, #e2e8f0)}._toggleBtnActive_lceud_2787{background:var(--nice-primary-bg, #dbeafe);border-color:var(--nice-primary-light, #93c5fd);color:var(--nice-primary-dark, #1d4ed8)}._colorPicker_lceud_2801{width:28px;height:26px;padding:var(--nice-space-px, 1px) var(--nice-space-0-5, 2px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);cursor:pointer}._colorHex_lceud_2819{width:68px;padding:var(--nice-space-0-75, 3px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;font-family:monospace;background:var(--nice-bg, #fff);color:inherit}._dark_lceud_27 ._colorHex_lceud_2819{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._clearBtn_lceud_2853{padding:var(--nice-space-0-75, 3px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);background:transparent;color:var(--nice-text-muted, #94a3b8);font-size:12px;cursor:pointer}._clearBtn_lceud_2853:hover{background:var(--nice-danger-bg, #fee2e2);color:var(--nice-danger, #ef4444);border-color:var(--nice-danger-bg, #fca5a5)}._sliderInput_lceud_2885{flex:1;accent-color:var(--nice-primary-hover, #2563eb)}._conditionalHint_lceud_2897{font-size:11px;color:var(--nice-text-secondary, #64748b);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);padding:var(--nice-space-1-75, 7px) var(--nice-space-2-5, 10px);margin-bottom:var(--nice-space-2-5, 10px);line-height:1.5}._dark_lceud_27 ._conditionalHint_lceud_2897{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._clearConditionalBtn_lceud_2929{margin-top:var(--nice-space-2, 8px);padding:var(--nice-space-1-25, 5px) var(--nice-space-2-5, 10px);border:1px solid var(--nice-danger-bg, #fca5a5);border-radius:var(--nice-radius-md, 5px);background:transparent;color:var(--nice-danger, #ef4444);font-size:11px;cursor:pointer}._clearConditionalBtn_lceud_2929:hover{background:var(--nice-danger-bg, #fee2e2)}._shortcutGrid_lceud_2961{display:grid;grid-template-columns:1fr 1fr;gap:var(--nice-space-1-25, 5px);width:100%}._shortcutChip_lceud_2975{display:flex;flex-direction:column;align-items:center;gap:var(--nice-space-0-75, 3px);padding:var(--nice-space-1-5, 6px) var(--nice-space-2, 8px);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px)}._dark_lceud_27 ._shortcutChip_lceud_2975{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._shortcutKeys_lceud_3007{font-size:10px;font-weight:700;font-family:monospace;color:var(--nice-primary-dark, #1d4ed8);background:var(--nice-primary-bg, #dbeafe);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-sm, 3px)}._shortcutLabel_lceud_3027{font-size:9px;color:var(--nice-text-secondary, #64748b);text-align:center}._root_7m4s0_1{display:flex;flex-direction:column;height:100%;font-family:inherit;font-size:13px;background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 8px);overflow:hidden}._dark_7m4s0_25{background:var(--nice-bg-primary, #0f172a);color:var(--nice-text-secondary, #e2e8f0);border-color:var(--nice-border-color, #1e293b)}._topBar_7m4s0_39{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-2-5, 10px) var(--nice-space-3, 12px);background:var(--nice-bg, #fff);border-bottom:1px solid var(--nice-border, #e2e8f0);flex-shrink:0}._dark_7m4s0_25 ._topBar_7m4s0_39{background:var(--nice-bg-secondary, #1e293b);border-bottom-color:var(--nice-border-color, #334155)}._searchInput_7m4s0_69{flex:1;padding:var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);font-size:13px;background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b);outline:none}._searchInput_7m4s0_69:focus{border-color:var(--nice-primary-light, #93c5fd);background:var(--nice-bg, #fff)}._dark_7m4s0_25 ._searchInput_7m4s0_69{background:var(--nice-bg-tertiary, #334155);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._actionBtn_7m4s0_111{padding:var(--nice-space-1-5, 6px) var(--nice-space-3, 12px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);background:var(--nice-bg, #fff);cursor:pointer;font-size:12px;font-weight:500;color:var(--nice-text-secondary, #475569);white-space:nowrap;transition:all .1s}._actionBtn_7m4s0_111:hover{background:var(--nice-bg-secondary, #f1f5f9)}._dark_7m4s0_25 ._actionBtn_7m4s0_111{background:var(--nice-bg-tertiary, #334155);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._categoryRow_7m4s0_157{display:flex;gap:var(--nice-space-1-5, 6px);padding:var(--nice-space-2, 8px) var(--nice-space-3, 12px);border-bottom:1px solid var(--nice-bg-secondary, #f1f5f9);flex-wrap:wrap;flex-shrink:0;background:var(--nice-bg, #fff)}._dark_7m4s0_25 ._categoryRow_7m4s0_157{background:var(--nice-bg-secondary, #1e293b);border-bottom-color:var(--nice-border-color, #334155)}._catChip_7m4s0_187{padding:var(--nice-space-0-75, 3px) var(--nice-space-2-5, 10px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-xl, 14px);background:var(--nice-bg, #fff);cursor:pointer;font-size:12px;color:var(--nice-text-secondary, #64748b);transition:all .1s}._catChip_7m4s0_187:hover{background:var(--nice-bg-secondary, #f1f5f9)}._catChipActive_7m4s0_217{background:var(--nice-primary-hover, #2563eb);border-color:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff)}._grid_7m4s0_231{display:flex;flex-wrap:wrap;gap:var(--nice-space-3, 12px);padding:var(--nice-space-3, 12px);overflow-y:auto;flex:1;align-content:flex-start}._card_7m4s0_253{flex:0 0 auto;width:180px;background:var(--nice-bg, #fff);border:2px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 8px);overflow:hidden;cursor:pointer;transition:all .15s}._card_7m4s0_253:hover{border-color:var(--nice-primary-light, #93c5fd);box-shadow:0 2px 8px var(--nice-overlay-8, rgba(0, 0, 0, .08))}._cardSelected_7m4s0_285{border-color:var(--nice-primary-hover, #2563eb)!important;box-shadow:0 0 0 3px var(--nice-primary-tint-15, rgba(37, 99, 235, .15))}._dark_7m4s0_25 ._card_7m4s0_253{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #334155)}._thumbnail_7m4s0_307{position:relative;height:120px;background:var(--nice-bg-secondary, #f1f5f9);overflow:hidden}._thumbnailImg_7m4s0_321{width:100%;height:100%;object-fit:cover}._thumbnailPlaceholder_7m4s0_333{display:flex;align-items:center;justify-content:center;height:100%}._paperMini_7m4s0_347{width:70px;background:var(--nice-bg, #fff);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 2px);padding:var(--nice-space-2, 8px) var(--nice-space-1-5, 6px);display:flex;flex-direction:column;gap:var(--nice-space-1, 4px);box-shadow:0 1px 4px var(--nice-overlay-8, rgba(0, 0, 0, .08))}._paperLine_7m4s0_371{height:4px;background:var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 2px)}._cardOverlay_7m4s0_385{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--nice-overlay-35, rgba(0, 0, 0, .35));display:flex;align-items:center;justify-content:center;gap:var(--nice-space-2, 8px)}._overlayBtn_7m4s0_405{width:32px;height:32px;background:var(--nice-bg, #fff);border:none;border-radius:var(--nice-radius-full, 50%);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .1s}._overlayBtn_7m4s0_405:hover{background:var(--nice-primary-bg, #e0f2fe)}._overlayBtnDanger_7m4s0_441{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--nice-overlay-light-90, rgba(255, 255, 255, .9));border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:14px;color:var(--nice-danger, #ef4444);transition:all .1s}._overlayBtnDanger_7m4s0_441:hover{background:var(--nice-danger-bg, #fee2e2)!important}._cardBody_7m4s0_481{padding:var(--nice-space-2, 8px) var(--nice-space-2-5, 10px)}._cardName_7m4s0_489{font-weight:600;font-size:13px;color:var(--nice-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:var(--nice-space-0-5, 2px)}._dark_7m4s0_25 ._cardName_7m4s0_489{color:var(--nice-text-primary, #f1f5f9)}._cardDesc_7m4s0_517{font-size:11px;color:var(--nice-text-secondary, #64748b);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:var(--nice-space-1, 4px)}._cardMeta_7m4s0_539{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);margin-bottom:var(--nice-space-1, 4px)}._cardSize_7m4s0_553{font-size:10px;color:var(--nice-text-muted, #94a3b8);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);background:var(--nice-bg-secondary, #f1f5f9);border-radius:var(--nice-radius-sm, 4px)}._cardCat_7m4s0_569{font-size:10px;color:var(--nice-primary-hover, #2563eb);background:var(--nice-primary-bg, #eff6ff);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-sm, 4px)}._cardTags_7m4s0_585{display:flex;gap:var(--nice-space-0-75, 3px);flex-wrap:wrap}._cardTag_7m4s0_585{font-size:9px;color:var(--nice-text-muted, #94a3b8);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);padding:var(--nice-space-px, 1px) var(--nice-space-1, 4px)}._emptyState_7m4s0_617{width:100%;padding:var(--nice-space-12, 48px);display:flex;flex-direction:column;align-items:center;gap:var(--nice-space-2, 8px);color:var(--nice-text-muted, #94a3b8);font-size:14px}._emptyIcon_7m4s0_639{font-size:40px}._root_91917_1{display:flex;flex-direction:column;height:100%;background:var(--nice-bg-secondary, #f1f5f9);font-family:system-ui,sans-serif;font-size:14px;color:var(--nice-text, #1e293b)}._dark_91917_19{background:var(--nice-bg-secondary, #1e293b);color:var(--nice-text-primary, #f1f5f9)}._headerBar_91917_31{display:flex;align-items:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-2, 8px) var(--nice-space-4, 16px);background:var(--nice-bg, #fff);border-bottom:1px solid var(--nice-border, #e2e8f0);flex-shrink:0}._dark_91917_19 ._headerBar_91917_31{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._entityNav_91917_59{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px)}._navBtn_91917_69{padding:var(--nice-space-1, 4px) var(--nice-space-2, 8px);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);cursor:pointer;font-size:16px;line-height:1;color:var(--nice-text-secondary, #475569)}._navBtn_91917_69:disabled{opacity:.4;cursor:default}._navBtn_91917_69:not(:disabled):hover{background:var(--nice-border, #e2e8f0)}._navLabel_91917_103{color:var(--nice-text-secondary, #64748b);font-size:13px;min-width:48px;text-align:center}._sampleBadge_91917_117{padding:var(--nice-space-0-75, 3px) var(--nice-space-2-5, 10px);background:var(--nice-warning-bg, #fef9c3);border:1px solid #fde047;border-radius:var(--nice-radius-xl, 12px);font-size:12px;color:var(--nice-warning-dark, #854d0e)}._zoomBar_91917_135{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);margin-left:auto}._zoomBtn_91917_147{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);cursor:pointer;font-size:15px;color:var(--nice-text-secondary, #475569)}._zoomBtn_91917_147:hover{background:var(--nice-border, #e2e8f0)}._zoomLabel_91917_179{font-size:13px;min-width:42px;text-align:center;color:var(--nice-text-secondary, #64748b)}._printBtn_91917_193{padding:var(--nice-space-1-5, 6px) var(--nice-space-4, 16px);background:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff);border:none;border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:13px;font-weight:500}._printBtn_91917_193:hover{background:var(--nice-primary-dark, #1d4ed8)}._canvas_91917_223{flex:1;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:var(--nice-space-8, 32px)}._page_91917_243{position:relative;background:var(--nice-bg, #fff);box-shadow:0 4px 32px var(--nice-overlay-20, rgba(0, 0, 0, .18));border-radius:var(--nice-radius-sm, 2px);overflow:hidden;flex-shrink:0}._dark_91917_19 ._page_91917_243{box-shadow:0 4px 32px var(--nice-overlay-60, rgba(0, 0, 0, .6))}._watermark_91917_269{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;color:var(--nice-text-muted, #94a3b8);font-weight:700;letter-spacing:.05em;z-index:100;white-space:nowrap}._footerBar_91917_299{display:flex;align-items:center;gap:var(--nice-space-4, 16px);padding:var(--nice-space-1-5, 6px) var(--nice-space-4, 16px);background:var(--nice-bg, #fff);border-top:1px solid var(--nice-border, #e2e8f0);font-size:12px;color:var(--nice-text-muted, #94a3b8);flex-shrink:0}._dark_91917_19 ._footerBar_91917_299{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._root_lbbp6_1{display:flex;flex-direction:column;background:var(--nice-bg, #fff);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-xl, 12px);overflow:hidden;font-family:system-ui,sans-serif;font-size:14px;color:var(--nice-text, #1e293b)}._dark_lbbp6_23{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #334155);color:var(--nice-text-primary, #f1f5f9)}._statsBar_lbbp6_37{display:flex;align-items:center;gap:var(--nice-space-5, 20px);padding:var(--nice-space-2-5, 10px) var(--nice-space-4, 16px);background:var(--nice-bg-secondary, #f8fafc);border-bottom:1px solid var(--nice-border, #e2e8f0)}._dark_lbbp6_23 ._statsBar_lbbp6_37{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._stat_lbbp6_37{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);font-size:13px}._dot_lbbp6_75{width:8px;height:8px;border-radius:var(--nice-radius-full, 50%);display:inline-block}._statPrinting_lbbp6_87 ._dot_lbbp6_75{background:var(--nice-primary-hover, #2563eb)}._statQueued_lbbp6_93 ._dot_lbbp6_75{background:var(--nice-text-secondary, #64748b)}._statDone_lbbp6_99 ._dot_lbbp6_75{background:var(--nice-success-dark, #16a34a)}._statError_lbbp6_105 ._dot_lbbp6_75{background:var(--nice-danger-dark, #dc2626)}._toolbar_lbbp6_115{display:flex;align-items:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-2, 8px) var(--nice-space-4, 16px);border-bottom:1px solid var(--nice-border, #e2e8f0);flex-wrap:wrap}._dark_lbbp6_23 ._toolbar_lbbp6_115{border-color:var(--nice-border-color, #334155)}._filterTabs_lbbp6_139{display:flex;gap:var(--nice-space-1, 4px)}._filterTab_lbbp6_139{display:flex;align-items:center;gap:var(--nice-space-1-25, 5px);padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px);background:none;border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:12px;color:var(--nice-text-secondary, #475569)}._filterTab_lbbp6_139:hover{background:var(--nice-bg-secondary, #f1f5f9)}._filterTabActive_lbbp6_177{background:var(--nice-primary-bg, #eff6ff);border-color:var(--nice-primary-hover, #2563eb);color:var(--nice-primary-hover, #2563eb)}._filterCount_lbbp6_187{background:var(--nice-bg-secondary, #f1f5f9);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-lg, 8px);font-size:11px;color:var(--nice-text-secondary, #64748b)}._filterTabActive_lbbp6_177 ._filterCount_lbbp6_187{background:var(--nice-primary-bg, #dbeafe);color:var(--nice-primary-hover, #2563eb)}._bulkActions_lbbp6_211{display:flex;align-items:center;gap:var(--nice-space-2, 8px);margin-left:auto}._bulkCount_lbbp6_223{font-size:13px;color:var(--nice-text-secondary, #64748b)}._bulkBtn_lbbp6_231{padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px);border-radius:var(--nice-radius-md, 6px);border:1px solid var(--nice-border, #e2e8f0);cursor:pointer;font-size:12px;background:var(--nice-bg, #fff);color:var(--nice-text, #1e293b)}._bulkBtn_lbbp6_231:hover{background:var(--nice-bg-secondary, #f1f5f9)}._bulkBtnRemove_lbbp6_255{color:var(--nice-danger-dark, #dc2626);border-color:var(--nice-danger-bg, #fecaca)}._bulkBtnRemove_lbbp6_255:hover{background:var(--nice-danger-bg, #fef2f2)}._jobList_lbbp6_273{overflow-y:auto}._listHeader_lbbp6_281{display:grid;grid-template-columns:40px 1fr min-content min-content;align-items:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-2, 8px) var(--nice-space-4, 16px);font-size:12px;font-weight:600;color:var(--nice-text-muted, #94a3b8);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--nice-bg-secondary, #f1f5f9)}._dark_lbbp6_23 ._listHeader_lbbp6_281{border-color:var(--nice-border-color, #1e293b)}._headerLabel_lbbp6_313{white-space:nowrap}._jobRow_lbbp6_323{display:grid;grid-template-columns:40px auto 1fr min-content min-content;align-items:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-2-5, 10px) var(--nice-space-4, 16px);border-bottom:1px solid var(--nice-bg-secondary, #f1f5f9);transition:background .1s}._dark_lbbp6_23 ._jobRow_lbbp6_323{border-color:var(--nice-border-color, #334155)}._jobRow_lbbp6_323:hover{background:var(--nice-bg-secondary, #f8fafc)}._dark_lbbp6_23 ._jobRow_lbbp6_323:hover{background:var(--nice-bg-primary, #0f172a)}._jobRowSelected_lbbp6_359{background:var(--nice-primary-bg, #eff6ff)!important}._dark_lbbp6_23 ._jobRowSelected_lbbp6_359{background:#172554!important}._jobCheckbox_lbbp6_373{cursor:pointer;width:16px;height:16px}._statusBadge_lbbp6_387{display:inline-flex;align-items:center;padding:var(--nice-space-0-75, 3px) var(--nice-space-2, 8px);border-radius:var(--nice-radius-xl, 12px);font-size:11px;font-weight:500;white-space:nowrap}._badge-queued_lbbp6_405{background:var(--nice-bg-secondary, #f1f5f9);color:var(--nice-text-secondary, #64748b)}._badge-printing_lbbp6_413{background:var(--nice-primary-bg, #dbeafe);color:var(--nice-primary-dark, #1d4ed8);animation:_pulse_lbbp6_1 1.5s ease-in-out infinite}._badge-done_lbbp6_423{background:var(--nice-success-bg, #dcfce7);color:var(--nice-success-dark, #16a34a)}._badge-error_lbbp6_431{background:var(--nice-danger-bg, #fee2e2);color:var(--nice-danger-dark, #dc2626)}._badge-paused_lbbp6_439{background:var(--nice-warning-bg, #fef9c3);color:var(--nice-warning-dark, #854d0e)}._badge-cancelled_lbbp6_447{background:var(--nice-bg-secondary, #f1f5f9);color:var(--nice-text-muted, #94a3b8)}@keyframes _pulse_lbbp6_1{0%,to{opacity:1}50%{opacity:.7}}._jobInfo_lbbp6_479{min-width:0}._jobName_lbbp6_485{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._jobMeta_lbbp6_497{display:flex;align-items:center;gap:var(--nice-space-2, 8px);font-size:12px;color:var(--nice-text-muted, #94a3b8);margin-top:var(--nice-space-0-5, 2px)}._jobTime_lbbp6_513{color:var(--nice-text-secondary, #64748b)}._jobDuration_lbbp6_519{color:var(--nice-warning, #f59e0b)}._jobError_lbbp6_525{font-size:12px;color:var(--nice-danger-dark, #dc2626);margin-top:var(--nice-space-1, 4px)}._progressBar_lbbp6_539{height:3px;background:var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 2px);margin-top:var(--nice-space-1-5, 6px);overflow:hidden}._progressFill_lbbp6_553{height:100%;background:var(--nice-primary-hover, #2563eb);border-radius:var(--nice-radius-sm, 2px);transition:width .3s}._copiesEditor_lbbp6_569{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);white-space:nowrap}._copiesBtn_lbbp6_581{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);cursor:pointer;font-size:14px;color:var(--nice-text-secondary, #475569)}._copiesBtn_lbbp6_581:disabled{opacity:.4;cursor:default}._copiesBtn_lbbp6_581:not(:disabled):hover{background:var(--nice-border, #e2e8f0)}._copiesValue_lbbp6_621{min-width:20px;text-align:center;font-size:13px}._jobActions_lbbp6_635{display:flex;align-items:center;gap:var(--nice-space-1, 4px)}._actionBtn_lbbp6_645{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:13px;color:var(--nice-text-secondary, #475569)}._actionBtn_lbbp6_645:hover{background:var(--nice-bg-secondary, #f1f5f9)}._removeBtn_lbbp6_677{color:var(--nice-danger, #ef4444);border-color:var(--nice-danger-bg, #fecaca)}._removeBtn_lbbp6_677:hover{background:var(--nice-danger-bg, #fef2f2)}._emptyState_lbbp6_695{text-align:center;padding:var(--nice-space-10, 40px) var(--nice-space-6, 24px);color:var(--nice-text-muted, #94a3b8);font-size:14px}._container_1f76z_1{position:relative;display:inline-flex;flex-direction:column;font-family:system-ui,sans-serif;font-size:14px}._buttonGroup_1f76z_19{display:flex;align-items:stretch}._trigger_1f76z_31{display:inline-flex;align-items:center;justify-content:center;gap:var(--nice-space-1-5, 6px);border:none;cursor:pointer;font-weight:500;transition:background .15s,opacity .15s;white-space:nowrap}._triggerDisabled_1f76z_57{opacity:.5;cursor:not-allowed}._variant-primary_1f76z_69{background:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff)}._variant-primary_1f76z_69:not(._triggerDisabled_1f76z_57):hover{background:var(--nice-primary-dark, #1d4ed8)}._variant-secondary_1f76z_83{background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b);border:1px solid var(--nice-border, #e2e8f0)}._variant-secondary_1f76z_83:not(._triggerDisabled_1f76z_57):hover{background:var(--nice-border, #e2e8f0)}._variant-ghost_1f76z_99{background:transparent;color:var(--nice-primary-hover, #2563eb)}._variant-ghost_1f76z_99:not(._triggerDisabled_1f76z_57):hover{background:var(--nice-primary-bg, #eff6ff)}._size-sm_1f76z_117{padding:var(--nice-space-1-25, 5px) var(--nice-space-2-5, 10px);font-size:12px;border-radius:var(--nice-radius-md, 6px) 0 0 var(--nice-radius-md, 6px)}._size-md_1f76z_127{padding:var(--nice-space-2, 8px) var(--nice-space-3-5, 14px);font-size:14px;border-radius:var(--nice-radius-lg, 8px) 0 0 var(--nice-radius-lg, 8px)}._size-lg_1f76z_137{padding:var(--nice-space-2-5, 10px) 18px;font-size:15px;border-radius:var(--nice-radius-lg, 10px) 0 0 var(--nice-radius-lg, 10px)}._mainAction_1f76z_151{flex:1;border-right:1px solid var(--nice-overlay-light-20, rgba(255, 255, 255, .2))}._variant-secondary_1f76z_83 ._mainAction_1f76z_151{border-right-color:var(--nice-border, #e2e8f0)}._variant-ghost_1f76z_99 ._mainAction_1f76z_151{border-right-color:var(--nice-primary-bg, #dbeafe)}._dropdownToggle_1f76z_175{padding:0 var(--nice-space-2, 8px)!important}._size-sm_1f76z_117._dropdownToggle_1f76z_175{border-radius:0 var(--nice-radius-md, 6px) var(--nice-radius-md, 6px) 0}._size-md_1f76z_127._dropdownToggle_1f76z_175{border-radius:0 var(--nice-radius-lg, 8px) var(--nice-radius-lg, 8px) 0}._size-lg_1f76z_137._dropdownToggle_1f76z_175{border-radius:0 var(--nice-radius-lg, 10px) var(--nice-radius-lg, 10px) 0}._chevron_1f76z_201{display:inline-block;transition:transform .2s;font-size:12px}._chevronUp_1f76z_211{transform:scaleY(-1)}._dropdown_1f76z_175{position:absolute;top:calc(100% + 6px);right:0;min-width:220px;background:var(--nice-bg, #fff);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 10px);box-shadow:0 8px 32px var(--nice-overlay-12, rgba(0, 0, 0, .12));z-index:1000;overflow:hidden}._dark_1f76z_245 ._dropdown_1f76z_175{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #334155);box-shadow:0 8px 32px var(--nice-overlay-50, rgba(0, 0, 0, .5))}._section_1f76z_257{padding:var(--nice-space-3, 12px) var(--nice-space-3-5, 14px)}._sectionLabel_1f76z_263{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--nice-text-muted, #94a3b8);margin-bottom:var(--nice-space-2, 8px)}._divider_1f76z_283{height:1px;background:var(--nice-bg-secondary, #f1f5f9)}._dark_1f76z_245 ._divider_1f76z_283{background:var(--nice-bg-tertiary, #334155)}._copiesRow_1f76z_301{display:flex;align-items:center;gap:var(--nice-space-2-5, 10px)}._copiesBtn_1f76z_311{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:16px;color:var(--nice-text-secondary, #475569)}._copiesBtn_1f76z_311:disabled{opacity:.4;cursor:default}._copiesBtn_1f76z_311:not(:disabled):hover{background:var(--nice-border, #e2e8f0)}._copiesValue_1f76z_351{flex:1;text-align:center;font-size:18px;font-weight:600;color:var(--nice-text, #1e293b)}._dark_1f76z_245 ._copiesValue_1f76z_351{color:var(--nice-text-primary, #f1f5f9)}._printerSelect_1f76z_375{width:100%;padding:var(--nice-space-1-75, 7px) var(--nice-space-2-5, 10px);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);font-size:13px;color:var(--nice-text, #1e293b);cursor:pointer}._dark_1f76z_245 ._printerSelect_1f76z_375{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155);color:var(--nice-text-primary, #f1f5f9)}._printerSelect_1f76z_375:focus{outline:none;border-color:var(--nice-primary-hover, #2563eb)}._printerStatus_1f76z_415{display:flex;align-items:center;gap:var(--nice-space-1-25, 5px);margin-top:var(--nice-space-1-5, 6px);font-size:12px}._printerDot_1f76z_429{width:7px;height:7px;border-radius:var(--nice-radius-full, 50%)}._dot-ready_1f76z_439{background:var(--nice-success-dark, #16a34a)}._dot-busy_1f76z_445{background:var(--nice-warning, #f59e0b)}._dot-offline_1f76z_451{background:var(--nice-text-muted, #94a3b8)}._dot-error_1f76z_457{background:var(--nice-danger-dark, #dc2626)}._printerStatusLabel_1f76z_463{color:var(--nice-text-secondary, #64748b)}._submitBtn_1f76z_473{width:100%;padding:9px var(--nice-space-3-5, 14px);background:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff);border:none;border-radius:var(--nice-radius-lg, 8px);cursor:pointer;font-size:14px;font-weight:600;text-align:center}._submitBtn_1f76z_473:hover:not(:disabled){background:var(--nice-primary-dark, #1d4ed8)}._submitBtn_1f76z_473:disabled{opacity:.5;cursor:not-allowed}._spinner_1f76z_515{display:inline-block;width:14px;height:14px;border:2px solid var(--nice-overlay-light-30, rgba(255, 255, 255, .3));border-top-color:var(--nice-bg, #fff);border-radius:var(--nice-radius-full, 50%);animation:_spin_1f76z_515 .7s linear infinite}@keyframes _spin_1f76z_515{to{transform:rotate(360deg)}}
|
|
1
|
+
._root_19f1m_3{display:flex;flex-direction:column;height:100%;min-height:0;font-family:system-ui,sans-serif;font-size:12px;background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b);overflow:hidden}._dark_19f1m_27{background:var(--nice-bg-primary, #0f172a);color:var(--nice-text-secondary, #e2e8f0)}._toolbar_19f1m_39{display:flex;align-items:center;flex-wrap:wrap;gap:var(--nice-space-1-5, 6px);padding:var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px);background:var(--nice-bg, #ffffff);border-bottom:1px solid var(--nice-border, #e2e8f0);box-shadow:0 1px 3px var(--nice-overlay-6, rgba(0, 0, 0, .06));flex-shrink:0;z-index:10}._dark_19f1m_27 ._toolbar_19f1m_39{background:var(--nice-bg-secondary, #1e293b);border-bottom-color:var(--nice-border-color, #334155)}._toolbarGroup_19f1m_75{display:flex;align-items:center;gap:var(--nice-space-0-5, 2px);padding:0 var(--nice-space-1-5, 6px);border-right:1px solid var(--nice-border, #e2e8f0)}._dark_19f1m_27 ._toolbarGroup_19f1m_75{border-right-color:var(--nice-border-color, #334155)}._toolbarGroup_19f1m_75:last-child{border-right:none}._toolbarBtn_19f1m_107{display:inline-flex;align-items:center;justify-content:center;padding:var(--nice-space-1, 4px) var(--nice-space-1-75, 7px);border:1px solid transparent;border-radius:var(--nice-radius-md, 5px);background:transparent;color:inherit;cursor:pointer;font-size:12px;min-width:28px;white-space:nowrap;transition:background .15s,border-color .15s}._toolbarBtn_19f1m_107:hover:not(:disabled){background:var(--nice-bg-secondary, #f1f5f9);border-color:var(--nice-border, #cbd5e1)}._dark_19f1m_27 ._toolbarBtn_19f1m_107:hover:not(:disabled){background:var(--nice-bg-tertiary, #334155)}._toolbarBtn_19f1m_107:disabled{opacity:.35;cursor:not-allowed}._toolbarBtnActive_19f1m_171{background:var(--nice-primary-bg, #dbeafe);border-color:var(--nice-primary-light, #93c5fd);color:var(--nice-primary-dark, #1d4ed8)}._dark_19f1m_27 ._toolbarBtnActive_19f1m_171{background:var(--nice-primary-dark, #1e3a5f);border-color:var(--nice-primary, #3b82f6);color:var(--nice-primary-light, #93c5fd)}._toolbarBtnDanger_19f1m_195:hover:not(:disabled){background:var(--nice-danger-bg, #fee2e2);border-color:var(--nice-danger-bg, #fca5a5);color:var(--nice-danger-dark, #dc2626)}._toolbarSelect_19f1m_207{padding:var(--nice-space-0-75, 3px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-border, #cbd5e1);border-radius:var(--nice-radius-md, 5px);background:var(--nice-bg-secondary, #f8fafc);color:inherit;font-size:12px;cursor:pointer}._dark_19f1m_27 ._toolbarSelect_19f1m_207{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #475569)}._toolbarSep_19f1m_237{display:inline-block;width:1px;height:16px;background:var(--nice-border, #e2e8f0);margin:0 var(--nice-space-0-5, 2px)}._dark_19f1m_27 ._toolbarSep_19f1m_237{background:var(--nice-bg-tertiary, #334155)}._insertWrapper_19f1m_263{position:relative}._insertBtn_19f1m_271{font-weight:500;color:var(--nice-primary-hover, #2563eb);border-color:var(--nice-primary-bg, #bfdbfe);background:var(--nice-primary-bg, #eff6ff)}._insertBtn_19f1m_271:hover{background:var(--nice-primary-bg, #dbeafe)}._insertDropdown_19f1m_293{position:absolute;top:calc(100% + 4px);left:0;background:var(--nice-bg, #ffffff);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 8px);box-shadow:0 8px 24px var(--nice-overlay-12, rgba(0, 0, 0, .12));min-width:180px;z-index:100;padding:var(--nice-space-1, 4px);display:flex;flex-direction:column}._dark_19f1m_27 ._insertDropdown_19f1m_293{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #334155)}._insertCategory_19f1m_333{padding:var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px) var(--nice-space-0-5, 2px);font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--nice-text-muted, #94a3b8)}._insertItem_19f1m_351{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px);border:none;background:transparent;cursor:pointer;font-size:12px;color:inherit;border-radius:var(--nice-radius-md, 5px);text-align:left}._insertItem_19f1m_351:hover{background:var(--nice-bg-secondary, #f1f5f9)}._dark_19f1m_27 ._insertItem_19f1m_351:hover{background:var(--nice-bg-tertiary, #334155)}._insertIcon_19f1m_395{font-size:13px;width:18px;text-align:center}._zoomSelect_19f1m_409{padding:var(--nice-space-0-75, 3px) var(--nice-space-1, 4px);border:1px solid var(--nice-border, #cbd5e1);border-radius:var(--nice-radius-md, 5px);background:var(--nice-bg-secondary, #f8fafc);color:inherit;font-size:12px;width:60px}._dark_19f1m_27 ._zoomSelect_19f1m_409{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #475569)}._saveBtn_19f1m_441{margin-left:auto;padding:var(--nice-space-1-25, 5px) var(--nice-space-3-5, 14px);background:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff);border:none;border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:12px;font-weight:500;transition:background .15s}._saveBtn_19f1m_441:hover{background:var(--nice-primary-dark, #1d4ed8)}._editorBody_19f1m_477{display:flex;flex:1;min-height:0;overflow:hidden}._leftPanel_19f1m_493{display:flex;flex-direction:column;width:220px;flex-shrink:0;border-right:1px solid var(--nice-border, #e2e8f0);background:var(--nice-bg, #ffffff);overflow:hidden}._dark_19f1m_27 ._leftPanel_19f1m_493{background:var(--nice-bg-secondary, #1e293b);border-right-color:var(--nice-border-color, #334155)}._leftTabs_19f1m_523{display:flex;border-bottom:1px solid var(--nice-border, #e2e8f0);flex-shrink:0}._dark_19f1m_27 ._leftTabs_19f1m_523{border-bottom-color:var(--nice-border-color, #334155)}._leftTab_19f1m_523{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--nice-space-0-5, 2px);padding:var(--nice-space-2, 8px) var(--nice-space-0-5, 2px);border:none;background:transparent;color:var(--nice-text-secondary, #64748b);cursor:pointer;font-size:10px;border-bottom:2px solid transparent;transition:color .15s,border-color .15s,background .15s}._leftTab_19f1m_523:hover{background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b)}._dark_19f1m_27 ._leftTab_19f1m_523:hover{background:var(--nice-bg-primary, #0f172a);color:var(--nice-text-secondary, #e2e8f0)}._leftTabActive_19f1m_601{color:var(--nice-primary-hover, #2563eb);border-bottom-color:var(--nice-primary-hover, #2563eb);background:var(--nice-primary-bg, #eff6ff)}._dark_19f1m_27 ._leftTabActive_19f1m_601{background:var(--nice-primary-dark, #1e3a5f)}._leftTabIcon_19f1m_621{font-size:14px}._leftTabLabel_19f1m_629{font-size:9px;font-weight:500}._leftContent_19f1m_639{flex:1;overflow-y:auto;padding:var(--nice-space-2, 8px) 0}._panelHeader_19f1m_653{padding:var(--nice-space-2, 8px) var(--nice-space-3, 12px) var(--nice-space-1, 4px);font-size:11px;font-weight:600;color:var(--nice-text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:var(--nice-space-1-5, 6px)}._panelHeaderIcon_19f1m_677{font-size:13px}._panelHeaderName_19f1m_685{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._searchBox_19f1m_699{padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px) var(--nice-space-1-5, 6px)}._searchInput_19f1m_707{width:100%;padding:var(--nice-space-1-25, 5px) var(--nice-space-2, 8px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);font-size:12px;background:var(--nice-bg-secondary, #f8fafc);color:inherit;box-sizing:border-box}._dark_19f1m_27 ._searchInput_19f1m_707{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._searchInput_19f1m_707:focus{outline:2px solid var(--nice-primary, #3b82f6);outline-offset:-1px}._fieldList_19f1m_753{display:flex;flex-direction:column}._fieldItem_19f1m_763{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-1-5, 6px) var(--nice-space-3, 12px);cursor:grab;border-radius:0;transition:background .12s}._fieldItem_19f1m_763:hover{background:var(--nice-bg-secondary, #f1f5f9)}._dark_19f1m_27 ._fieldItem_19f1m_763:hover{background:var(--nice-bg-tertiary, #334155)}._fieldItem_19f1m_763:active{cursor:grabbing}._fieldItemIcon_19f1m_807{font-size:13px;width:18px;text-align:center;flex-shrink:0}._fieldItemInfo_19f1m_821{flex:1;min-width:0}._fieldItemLabel_19f1m_831{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._fieldItemPath_19f1m_847{font-size:10px;color:var(--nice-text-muted, #94a3b8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._fieldItemType_19f1m_863{font-size:9px;background:var(--nice-border, #e2e8f0);color:var(--nice-text-secondary, #475569);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-sm, 3px);flex-shrink:0}._layerList_19f1m_883{display:flex;flex-direction:column;padding:var(--nice-space-0-5, 2px) 0}._layerItem_19f1m_895{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-1-25, 5px) var(--nice-space-2-5, 10px) var(--nice-space-1-25, 5px) var(--nice-space-3, 12px);cursor:pointer;transition:background .12s}._layerItem_19f1m_895:hover{background:var(--nice-bg-secondary, #f1f5f9)}._dark_19f1m_27 ._layerItem_19f1m_895:hover{background:var(--nice-bg-tertiary, #334155)}._layerItemSelected_19f1m_931{background:var(--nice-primary-bg, #eff6ff);border-left:2px solid var(--nice-primary-hover, #2563eb)}._dark_19f1m_27 ._layerItemSelected_19f1m_931{background:var(--nice-primary-dark, #1e3a5f)}._layerIcon_19f1m_949{font-size:12px;width:16px;text-align:center}._layerName_19f1m_961{flex:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._layerActions_19f1m_977{display:flex;gap:var(--nice-space-0-5, 2px);opacity:0;transition:opacity .15s}._layerItem_19f1m_895:hover ._layerActions_19f1m_977{opacity:1}._layerBtn_19f1m_999{padding:var(--nice-space-0-5, 2px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 3px);background:transparent;cursor:pointer;font-size:11px;color:inherit;line-height:1}._layerBtn_19f1m_999:hover{background:var(--nice-bg-secondary, #f1f5f9)}._wmList_19f1m_1031{padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px)}._wmItem_19f1m_1039{background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 8px);padding:var(--nice-space-2, 8px) var(--nice-space-2-5, 10px);margin-bottom:var(--nice-space-2, 8px)}._dark_19f1m_27 ._wmItem_19f1m_1039{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._wmRow_19f1m_1065{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);margin-bottom:var(--nice-space-1-25, 5px)}._wmLabel_19f1m_1079{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:52px}._wmInput_19f1m_1091{flex:1;padding:var(--nice-space-1, 4px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._wmInput_19f1m_1091{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._wmInputNum_19f1m_1123{width:54px;padding:var(--nice-space-1, 4px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._wmSelect_19f1m_1143{flex:1;padding:var(--nice-space-1, 4px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._wmSelect_19f1m_1143{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._wmSlider_19f1m_1175{flex:1;accent-color:var(--nice-primary-hover, #2563eb)}._wmValue_19f1m_1185{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:32px;text-align:right}._wmUnit_19f1m_1199{font-size:11px;color:var(--nice-text-muted, #94a3b8)}._wmDelete_19f1m_1209{width:100%;margin-top:var(--nice-space-1, 4px);padding:var(--nice-space-1, 4px);border:1px solid var(--nice-danger-bg, #fca5a5);border-radius:var(--nice-radius-md, 5px);background:var(--nice-bg, #fff);color:var(--nice-danger, #ef4444);font-size:11px;cursor:pointer}._wmDelete_19f1m_1209:hover{background:var(--nice-danger-bg, #fee2e2)}._addBtn_19f1m_1241{width:100%;padding:var(--nice-space-1-75, 7px);border:1px dashed var(--nice-border, #cbd5e1);border-radius:var(--nice-radius-md, 6px);background:transparent;color:var(--nice-primary-hover, #2563eb);font-size:12px;cursor:pointer;margin-top:var(--nice-space-1, 4px)}._addBtn_19f1m_1241:hover{background:var(--nice-primary-bg, #eff6ff);border-color:var(--nice-primary-light, #93c5fd)}._settingsForm_19f1m_1277{padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px)}._settingsRow_19f1m_1285{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);margin-bottom:var(--nice-space-1-75, 7px)}._settingsLabel_19f1m_1299{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:60px}._settingsInput_19f1m_1311{flex:1;padding:var(--nice-space-1, 4px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 5px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._settingsInput_19f1m_1311{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._settingsInputNum_19f1m_1343{width:56px;padding:var(--nice-space-1, 4px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 5px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._settingsInputNum_19f1m_1343{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._settingsTextarea_19f1m_1375{flex:1;padding:var(--nice-space-1, 4px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 5px);font-size:12px;background:var(--nice-bg, #fff);color:inherit;resize:vertical}._dark_19f1m_27 ._settingsTextarea_19f1m_1375{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._settingsDivider_19f1m_1409{margin:var(--nice-space-2-5, 10px) 0 var(--nice-space-1-5, 6px);padding:0;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--nice-text-muted, #94a3b8)}._settingsUnit_19f1m_1429{font-size:11px;color:var(--nice-text-muted, #94a3b8)}._emptyMsg_19f1m_1441{padding:var(--nice-space-4, 16px) var(--nice-space-3, 12px);font-size:11px;color:var(--nice-text-muted, #94a3b8);text-align:center;line-height:1.5}._canvasArea_19f1m_1459{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--nice-bg-secondary, #f1f5f9)}._dark_19f1m_27 ._canvasArea_19f1m_1459{background:var(--nice-bg-primary, #0f172a)}._testDataBar_19f1m_1485{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-1-25, 5px) var(--nice-space-3, 12px);background:var(--nice-warning-bg, #fffbeb);border-bottom:1px solid var(--nice-warning-light, #fcd34d);font-size:11px;flex-shrink:0}._dark_19f1m_27 ._testDataBar_19f1m_1485{background:var(--nice-warning-bg, #1c1709);border-bottom-color:var(--nice-warning-dark, #78350f)}._testDataLabel_19f1m_1517{font-weight:500;color:var(--nice-warning-dark, #92400e)}._testDataSelect_19f1m_1527{padding:var(--nice-space-0-5, 2px) var(--nice-space-1-5, 6px);border:1px solid var(--nice-warning-light, #fcd34d);border-radius:var(--nice-radius-sm, 4px);font-size:11px;background:var(--nice-bg, #fff);color:inherit}._rulerWrapper_19f1m_1547{position:relative;display:flex;flex-shrink:0;pointer-events:none;padding-left:var(--nice-space-5, 20px)}._rulerCorner_19f1m_1563{position:absolute;top:0;left:0;width:20px;height:20px;background:var(--nice-border, #e2e8f0);z-index:5;border-right:1px solid var(--nice-border, #cbd5e1);border-bottom:1px solid var(--nice-border, #cbd5e1)}._dark_19f1m_27 ._rulerCorner_19f1m_1563{background:var(--nice-bg-tertiary, #334155);border-color:var(--nice-border-color, #475569)}._ruler_19f1m_1547{position:relative;background:var(--nice-bg-secondary, #f8fafc);border-bottom:1px solid var(--nice-border, #e2e8f0);overflow:hidden}._dark_19f1m_27 ._ruler_19f1m_1547{background:var(--nice-bg-secondary, #1e293b);border-bottom-color:var(--nice-border-color, #334155)}._ruler_h_19f1m_1621{width:100%;height:20px}._ruler_v_19f1m_1631{position:absolute;left:0;top:20px;width:20px;height:calc(100% - 20px);border-right:1px solid var(--nice-border, #e2e8f0);border-bottom:none}._rulerTick_19f1m_1651{position:absolute;top:auto;bottom:0;width:1px;height:5px;background:var(--nice-bg-tertiary, #94a3b8);transform:translate(-50%)}._ruler_v_19f1m_1631 ._rulerTick_19f1m_1651{top:0;bottom:auto;left:auto;right:0;width:5px;height:1px;transform:translateY(-50%)}._rulerTickMajor_19f1m_1691{height:10px;background:var(--nice-bg-tertiary, #64748b)}._ruler_v_19f1m_1631 ._rulerTickMajor_19f1m_1691{height:1px;width:10px}._rulerLabel_19f1m_1711{position:absolute;bottom:12px;left:2px;font-size:8px;color:var(--nice-text-secondary, #64748b);-webkit-user-select:none;user-select:none;white-space:nowrap}._ruler_v_19f1m_1631 ._rulerLabel_19f1m_1711{bottom:auto;top:2px;left:-2px;transform:rotate(-90deg) translate(50%);transform-origin:left top}._paperScroll_19f1m_1749{flex:1;overflow:auto;padding:var(--nice-space-6, 24px);display:flex;justify-content:center;align-items:flex-start}._paperShadow_19f1m_1767{position:relative;background:#fff;box-shadow:0 4px 24px var(--nice-overlay-20, rgba(0, 0, 0, .18)),0 1px 4px var(--nice-overlay-8, rgba(0, 0, 0, .08));flex-shrink:0}._dark_19f1m_27 ._paperShadow_19f1m_1767{background:#f8fafc}._marginGuide_19f1m_1803{position:absolute;pointer-events:none;border:1px dashed color-mix(in srgb,var(--nice-color-primary, #3b82f6) 35%,transparent);z-index:0}._watermark_19f1m_1819{position:absolute;top:50%;left:50%;pointer-events:none;font-weight:900;white-space:nowrap;-webkit-user-select:none;user-select:none;letter-spacing:.1em;z-index:0}._sectionCanvas_19f1m_1845{position:relative;width:100%;transition:box-shadow .15s;box-sizing:border-box}._sectionCanvasOver_19f1m_1859{box-shadow:inset 0 0 0 2px var(--nice-primary, #3b82f6)}._sectionTypeChip_19f1m_1867{position:absolute;top:3px;left:3px;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-sm, 3px);background:color-mix(in srgb,var(--nice-text-muted, #94a3b8) 25%,transparent);color:var(--nice-text-secondary, #64748b);pointer-events:none;z-index:50}._sectionResizeBar_19f1m_1899{position:absolute;bottom:0;left:0;right:0;height:6px;cursor:ns-resize;display:flex;align-items:center;justify-content:center;z-index:20}._sectionResizeBar_19f1m_1899:hover{background:var(--nice-primary-tint-15, rgba(59, 130, 246, .15))}._sectionResizeGrip_19f1m_1933{width:40px;height:3px;border-radius:var(--nice-radius-full, 99px);background:var(--nice-border, #cbd5e1)}._fieldImagePlaceholder_19f1m_1949{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f1f5f9);color:var(--nice-text-muted, #94a3b8);font-size:18px}._fieldBarcodePlaceholder_19f1m_1971{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text-secondary, #64748b);font-size:10px;font-family:monospace;letter-spacing:.05em;border:1px solid var(--nice-border, #e2e8f0)}._fieldSignaturePlaceholder_19f1m_1999{width:100%;height:100%;display:flex;align-items:flex-end;padding:var(--nice-space-1, 4px);border-bottom:1px solid var(--nice-border-color, #1e293b);color:var(--nice-text-muted, #94a3b8);font-size:10px;box-sizing:border-box}._resizeHandle_19f1m_2031{position:absolute;width:8px;height:8px;background:var(--nice-primary-hover, #2563eb);border:1.5px solid var(--nice-bg, #fff);border-radius:var(--nice-radius-sm, 2px);z-index:100}._handle_n_19f1m_2051{top:-4px;left:50%;transform:translate(-50%);cursor:n-resize}._handle_s_19f1m_2063{bottom:-4px;left:50%;transform:translate(-50%);cursor:s-resize}._handle_e_19f1m_2075{right:-4px;top:50%;transform:translateY(-50%);cursor:e-resize}._handle_w_19f1m_2087{left:-4px;top:50%;transform:translateY(-50%);cursor:w-resize}._handle_ne_19f1m_2099{top:-4px;right:-4px;cursor:ne-resize}._handle_nw_19f1m_2109{top:-4px;left:-4px;cursor:nw-resize}._handle_se_19f1m_2119{bottom:-4px;right:-4px;cursor:se-resize}._handle_sw_19f1m_2129{bottom:-4px;left:-4px;cursor:sw-resize}._rightPanel_19f1m_2143{width:240px;flex-shrink:0;display:flex;flex-direction:column;border-left:1px solid var(--nice-border, #e2e8f0);background:var(--nice-bg, #ffffff);overflow:hidden}._dark_19f1m_27 ._rightPanel_19f1m_2143{background:var(--nice-bg-secondary, #1e293b);border-left-color:var(--nice-border-color, #334155)}._rightTabs_19f1m_2173{display:flex;border-bottom:1px solid var(--nice-border, #e2e8f0);flex-shrink:0}._dark_19f1m_27 ._rightTabs_19f1m_2173{border-bottom-color:var(--nice-border-color, #334155)}._rightTab_19f1m_2173{flex:1;padding:var(--nice-space-1-75, 7px) var(--nice-space-1, 4px);border:none;background:transparent;color:var(--nice-text-secondary, #64748b);cursor:pointer;font-size:11px;border-bottom:2px solid transparent;transition:color .12s,border-color .12s,background .12s}._rightTab_19f1m_2173:hover{background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b)}._dark_19f1m_27 ._rightTab_19f1m_2173:hover{background:var(--nice-bg-primary, #0f172a);color:var(--nice-text-secondary, #e2e8f0)}._rightTabActive_19f1m_2243{color:var(--nice-primary-hover, #2563eb);border-bottom-color:var(--nice-primary-hover, #2563eb);font-weight:500}._propsBody_19f1m_2255{flex:1;overflow-y:auto;padding:var(--nice-space-2, 8px) var(--nice-space-2-5, 10px)}._propsEmpty_19f1m_2267{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-6, 24px) var(--nice-space-4, 16px);color:var(--nice-text-muted, #94a3b8)}._propsEmptyIcon_19f1m_2289{font-size:36px;opacity:.4}._propsEmptyText_19f1m_2299{font-size:12px;text-align:center}._posGrid_19f1m_2311{display:grid;grid-template-columns:1fr 1fr;gap:var(--nice-space-1-5, 6px);margin-bottom:var(--nice-space-2-5, 10px)}._posCell_19f1m_2325{display:flex;align-items:center;gap:var(--nice-space-0-75, 3px)}._posLabel_19f1m_2337{font-size:10px;color:var(--nice-text-secondary, #64748b);min-width:28px}._posInput_19f1m_2349{width:54px;padding:var(--nice-space-1, 4px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._posInput_19f1m_2349{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._posInput_19f1m_2349:focus{outline:2px solid var(--nice-primary, #3b82f6);outline-offset:-1px}._posUnit_19f1m_2391{font-size:10px;color:var(--nice-text-muted, #94a3b8)}._snapSection_19f1m_2403{margin-top:var(--nice-space-2, 8px)}._snapTitle_19f1m_2411{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--nice-text-muted, #94a3b8);margin-bottom:var(--nice-space-1-25, 5px)}._snapRow_19f1m_2429{display:flex;gap:var(--nice-space-1, 4px)}._snapBtn_19f1m_2439{flex:1;padding:var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 5px);background:var(--nice-bg-secondary, #f8fafc);color:inherit;font-size:13px;cursor:pointer}._snapBtn_19f1m_2439:hover{background:var(--nice-primary-bg, #eff6ff);border-color:var(--nice-primary-light, #93c5fd)}._styleGroup_19f1m_2473{margin-bottom:var(--nice-space-2-5, 10px)}._styleGroupTitle_19f1m_2481{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--nice-text-muted, #94a3b8);margin-bottom:var(--nice-space-1-5, 6px);padding-bottom:var(--nice-space-1, 4px);border-bottom:1px solid var(--nice-bg-secondary, #f1f5f9)}._dark_19f1m_27 ._styleGroupTitle_19f1m_2481{border-bottom-color:var(--nice-border-color, #334155)}._styleRow_19f1m_2511{display:flex;align-items:center;gap:var(--nice-space-1-25, 5px);margin-bottom:var(--nice-space-1-25, 5px)}._styleLabel_19f1m_2525{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:50px;flex-shrink:0}._styleSelect_19f1m_2539{padding:var(--nice-space-0-75, 3px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._styleSelect_19f1m_2539{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleSelectFull_19f1m_2569{flex:1;padding:var(--nice-space-0-75, 3px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._styleSelectFull_19f1m_2569{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleSelectSm_19f1m_2601{width:50px;padding:var(--nice-space-0-75, 3px) var(--nice-space-1, 4px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._styleSelectXs_19f1m_2621{width:42px;padding:var(--nice-space-0-75, 3px) var(--nice-space-1, 4px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:11px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._styleSelectXs_19f1m_2621{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleInput_19f1m_2653{width:52px;padding:var(--nice-space-0-75, 3px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._styleInput_19f1m_2653{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleInputFull_19f1m_2685{flex:1;padding:var(--nice-space-0-75, 3px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._styleInputFull_19f1m_2685{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._styleUnit_19f1m_2717{font-size:10px;color:var(--nice-text-muted, #94a3b8);flex-shrink:0}._styleValue_19f1m_2729{font-size:11px;color:var(--nice-text-secondary, #64748b);min-width:32px;text-align:right}._toggleGroup_19f1m_2743{display:flex;gap:var(--nice-space-0-5, 2px)}._toggleBtn_19f1m_2753{padding:var(--nice-space-0-75, 3px) var(--nice-space-2, 8px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);background:var(--nice-bg-secondary, #f8fafc);color:inherit;font-size:12px;cursor:pointer;transition:background .12s,border-color .12s}._toggleBtn_19f1m_2753:hover{background:var(--nice-border, #e2e8f0)}._toggleBtnActive_19f1m_2787{background:var(--nice-primary-bg, #dbeafe);border-color:var(--nice-primary-light, #93c5fd);color:var(--nice-primary-dark, #1d4ed8)}._colorPicker_19f1m_2801{width:28px;height:26px;padding:var(--nice-space-px, 1px) var(--nice-space-0-5, 2px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);cursor:pointer}._colorHex_19f1m_2819{width:68px;padding:var(--nice-space-0-75, 3px) var(--nice-space-1-25, 5px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);font-size:12px;font-family:monospace;background:var(--nice-bg, #fff);color:inherit}._dark_19f1m_27 ._colorHex_19f1m_2819{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._clearBtn_19f1m_2853{padding:var(--nice-space-0-75, 3px) var(--nice-space-1-75, 7px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);background:transparent;color:var(--nice-text-muted, #94a3b8);font-size:12px;cursor:pointer}._clearBtn_19f1m_2853:hover{background:var(--nice-danger-bg, #fee2e2);color:var(--nice-danger, #ef4444);border-color:var(--nice-danger-bg, #fca5a5)}._sliderInput_19f1m_2885{flex:1;accent-color:var(--nice-primary-hover, #2563eb)}._conditionalHint_19f1m_2897{font-size:11px;color:var(--nice-text-secondary, #64748b);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);padding:var(--nice-space-1-75, 7px) var(--nice-space-2-5, 10px);margin-bottom:var(--nice-space-2-5, 10px);line-height:1.5}._dark_19f1m_27 ._conditionalHint_19f1m_2897{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._clearConditionalBtn_19f1m_2929{margin-top:var(--nice-space-2, 8px);padding:var(--nice-space-1-25, 5px) var(--nice-space-2-5, 10px);border:1px solid var(--nice-danger-bg, #fca5a5);border-radius:var(--nice-radius-md, 5px);background:transparent;color:var(--nice-danger, #ef4444);font-size:11px;cursor:pointer}._clearConditionalBtn_19f1m_2929:hover{background:var(--nice-danger-bg, #fee2e2)}._shortcutGrid_19f1m_2961{display:grid;grid-template-columns:1fr 1fr;gap:var(--nice-space-1-25, 5px);width:100%}._shortcutChip_19f1m_2975{display:flex;flex-direction:column;align-items:center;gap:var(--nice-space-0-75, 3px);padding:var(--nice-space-1-5, 6px) var(--nice-space-2, 8px);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px)}._dark_19f1m_27 ._shortcutChip_19f1m_2975{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._shortcutKeys_19f1m_3007{font-size:10px;font-weight:700;font-family:monospace;color:var(--nice-primary-dark, #1d4ed8);background:var(--nice-primary-bg, #dbeafe);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-sm, 3px)}._shortcutLabel_19f1m_3027{font-size:9px;color:var(--nice-text-secondary, #64748b);text-align:center}._root_7m4s0_1{display:flex;flex-direction:column;height:100%;font-family:inherit;font-size:13px;background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 8px);overflow:hidden}._dark_7m4s0_25{background:var(--nice-bg-primary, #0f172a);color:var(--nice-text-secondary, #e2e8f0);border-color:var(--nice-border-color, #1e293b)}._topBar_7m4s0_39{display:flex;align-items:center;gap:var(--nice-space-2, 8px);padding:var(--nice-space-2-5, 10px) var(--nice-space-3, 12px);background:var(--nice-bg, #fff);border-bottom:1px solid var(--nice-border, #e2e8f0);flex-shrink:0}._dark_7m4s0_25 ._topBar_7m4s0_39{background:var(--nice-bg-secondary, #1e293b);border-bottom-color:var(--nice-border-color, #334155)}._searchInput_7m4s0_69{flex:1;padding:var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);font-size:13px;background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b);outline:none}._searchInput_7m4s0_69:focus{border-color:var(--nice-primary-light, #93c5fd);background:var(--nice-bg, #fff)}._dark_7m4s0_25 ._searchInput_7m4s0_69{background:var(--nice-bg-tertiary, #334155);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._actionBtn_7m4s0_111{padding:var(--nice-space-1-5, 6px) var(--nice-space-3, 12px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);background:var(--nice-bg, #fff);cursor:pointer;font-size:12px;font-weight:500;color:var(--nice-text-secondary, #475569);white-space:nowrap;transition:all .1s}._actionBtn_7m4s0_111:hover{background:var(--nice-bg-secondary, #f1f5f9)}._dark_7m4s0_25 ._actionBtn_7m4s0_111{background:var(--nice-bg-tertiary, #334155);border-color:var(--nice-border-color, #475569);color:var(--nice-text-secondary, #e2e8f0)}._categoryRow_7m4s0_157{display:flex;gap:var(--nice-space-1-5, 6px);padding:var(--nice-space-2, 8px) var(--nice-space-3, 12px);border-bottom:1px solid var(--nice-bg-secondary, #f1f5f9);flex-wrap:wrap;flex-shrink:0;background:var(--nice-bg, #fff)}._dark_7m4s0_25 ._categoryRow_7m4s0_157{background:var(--nice-bg-secondary, #1e293b);border-bottom-color:var(--nice-border-color, #334155)}._catChip_7m4s0_187{padding:var(--nice-space-0-75, 3px) var(--nice-space-2-5, 10px);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-xl, 14px);background:var(--nice-bg, #fff);cursor:pointer;font-size:12px;color:var(--nice-text-secondary, #64748b);transition:all .1s}._catChip_7m4s0_187:hover{background:var(--nice-bg-secondary, #f1f5f9)}._catChipActive_7m4s0_217{background:var(--nice-primary-hover, #2563eb);border-color:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff)}._grid_7m4s0_231{display:flex;flex-wrap:wrap;gap:var(--nice-space-3, 12px);padding:var(--nice-space-3, 12px);overflow-y:auto;flex:1;align-content:flex-start}._card_7m4s0_253{flex:0 0 auto;width:180px;background:var(--nice-bg, #fff);border:2px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 8px);overflow:hidden;cursor:pointer;transition:all .15s}._card_7m4s0_253:hover{border-color:var(--nice-primary-light, #93c5fd);box-shadow:0 2px 8px var(--nice-overlay-8, rgba(0, 0, 0, .08))}._cardSelected_7m4s0_285{border-color:var(--nice-primary-hover, #2563eb)!important;box-shadow:0 0 0 3px var(--nice-primary-tint-15, rgba(37, 99, 235, .15))}._dark_7m4s0_25 ._card_7m4s0_253{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #334155)}._thumbnail_7m4s0_307{position:relative;height:120px;background:var(--nice-bg-secondary, #f1f5f9);overflow:hidden}._thumbnailImg_7m4s0_321{width:100%;height:100%;object-fit:cover}._thumbnailPlaceholder_7m4s0_333{display:flex;align-items:center;justify-content:center;height:100%}._paperMini_7m4s0_347{width:70px;background:var(--nice-bg, #fff);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 2px);padding:var(--nice-space-2, 8px) var(--nice-space-1-5, 6px);display:flex;flex-direction:column;gap:var(--nice-space-1, 4px);box-shadow:0 1px 4px var(--nice-overlay-8, rgba(0, 0, 0, .08))}._paperLine_7m4s0_371{height:4px;background:var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 2px)}._cardOverlay_7m4s0_385{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--nice-overlay-35, rgba(0, 0, 0, .35));display:flex;align-items:center;justify-content:center;gap:var(--nice-space-2, 8px)}._overlayBtn_7m4s0_405{width:32px;height:32px;background:var(--nice-bg, #fff);border:none;border-radius:var(--nice-radius-full, 50%);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .1s}._overlayBtn_7m4s0_405:hover{background:var(--nice-primary-bg, #e0f2fe)}._overlayBtnDanger_7m4s0_441{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--nice-overlay-light-90, rgba(255, 255, 255, .9));border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:14px;color:var(--nice-danger, #ef4444);transition:all .1s}._overlayBtnDanger_7m4s0_441:hover{background:var(--nice-danger-bg, #fee2e2)!important}._cardBody_7m4s0_481{padding:var(--nice-space-2, 8px) var(--nice-space-2-5, 10px)}._cardName_7m4s0_489{font-weight:600;font-size:13px;color:var(--nice-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:var(--nice-space-0-5, 2px)}._dark_7m4s0_25 ._cardName_7m4s0_489{color:var(--nice-text-primary, #f1f5f9)}._cardDesc_7m4s0_517{font-size:11px;color:var(--nice-text-secondary, #64748b);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:var(--nice-space-1, 4px)}._cardMeta_7m4s0_539{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);margin-bottom:var(--nice-space-1, 4px)}._cardSize_7m4s0_553{font-size:10px;color:var(--nice-text-muted, #94a3b8);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);background:var(--nice-bg-secondary, #f1f5f9);border-radius:var(--nice-radius-sm, 4px)}._cardCat_7m4s0_569{font-size:10px;color:var(--nice-primary-hover, #2563eb);background:var(--nice-primary-bg, #eff6ff);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-sm, 4px)}._cardTags_7m4s0_585{display:flex;gap:var(--nice-space-0-75, 3px);flex-wrap:wrap}._cardTag_7m4s0_585{font-size:9px;color:var(--nice-text-muted, #94a3b8);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);padding:var(--nice-space-px, 1px) var(--nice-space-1, 4px)}._emptyState_7m4s0_617{width:100%;padding:var(--nice-space-12, 48px);display:flex;flex-direction:column;align-items:center;gap:var(--nice-space-2, 8px);color:var(--nice-text-muted, #94a3b8);font-size:14px}._emptyIcon_7m4s0_639{font-size:40px}._root_18ja1_1{display:flex;flex-direction:column;height:100%;background:var(--nice-bg-secondary, #f1f5f9);font-family:system-ui,sans-serif;font-size:14px;color:var(--nice-text, #1e293b)}._dark_18ja1_19{background:var(--nice-bg-secondary, #1e293b);color:var(--nice-text-primary, #f1f5f9)}._headerBar_18ja1_31{display:flex;align-items:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-2, 8px) var(--nice-space-4, 16px);background:var(--nice-bg, #fff);border-bottom:1px solid var(--nice-border, #e2e8f0);flex-shrink:0}._dark_18ja1_19 ._headerBar_18ja1_31{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._entityNav_18ja1_59{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px)}._navBtn_18ja1_69{padding:var(--nice-space-1, 4px) var(--nice-space-2, 8px);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);cursor:pointer;font-size:16px;line-height:1;color:var(--nice-text-secondary, #475569)}._navBtn_18ja1_69:disabled{opacity:.4;cursor:default}._navBtn_18ja1_69:not(:disabled):hover{background:var(--nice-border, #e2e8f0)}._navLabel_18ja1_103{color:var(--nice-text-secondary, #64748b);font-size:13px;min-width:48px;text-align:center}._sampleBadge_18ja1_117{padding:var(--nice-space-0-75, 3px) var(--nice-space-2-5, 10px);background:var(--nice-warning-bg, #fef9c3);border:1px solid var(--nice-warning-tint-30, #fde047);border-radius:var(--nice-radius-xl, 12px);font-size:12px;color:var(--nice-warning-dark, #854d0e)}._zoomBar_18ja1_135{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);margin-left:auto}._zoomBtn_18ja1_147{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);cursor:pointer;font-size:15px;color:var(--nice-text-secondary, #475569)}._zoomBtn_18ja1_147:hover{background:var(--nice-border, #e2e8f0)}._zoomLabel_18ja1_179{font-size:13px;min-width:42px;text-align:center;color:var(--nice-text-secondary, #64748b)}._printBtn_18ja1_193{padding:var(--nice-space-1-5, 6px) var(--nice-space-4, 16px);background:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff);border:none;border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:13px;font-weight:500}._printBtn_18ja1_193:hover{background:var(--nice-primary-dark, #1d4ed8)}._canvas_18ja1_223{flex:1;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:var(--nice-space-8, 32px)}._page_18ja1_243{position:relative;background:var(--nice-bg, #fff);box-shadow:0 4px 32px var(--nice-overlay-20, rgba(0, 0, 0, .18));border-radius:var(--nice-radius-sm, 2px);overflow:hidden;flex-shrink:0}._dark_18ja1_19 ._page_18ja1_243{box-shadow:0 4px 32px var(--nice-overlay-60, rgba(0, 0, 0, .6))}._watermark_18ja1_269{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;color:var(--nice-text-muted, #94a3b8);font-weight:700;letter-spacing:.05em;z-index:100;white-space:nowrap}._footerBar_18ja1_299{display:flex;align-items:center;gap:var(--nice-space-4, 16px);padding:var(--nice-space-1-5, 6px) var(--nice-space-4, 16px);background:var(--nice-bg, #fff);border-top:1px solid var(--nice-border, #e2e8f0);font-size:12px;color:var(--nice-text-muted, #94a3b8);flex-shrink:0}._dark_18ja1_19 ._footerBar_18ja1_299{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._root_1f4bm_1{display:flex;flex-direction:column;background:var(--nice-bg, #fff);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-xl, 12px);overflow:hidden;font-family:system-ui,sans-serif;font-size:14px;color:var(--nice-text, #1e293b)}._dark_1f4bm_23{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #334155);color:var(--nice-text-primary, #f1f5f9)}._statsBar_1f4bm_37{display:flex;align-items:center;gap:var(--nice-space-5, 20px);padding:var(--nice-space-2-5, 10px) var(--nice-space-4, 16px);background:var(--nice-bg-secondary, #f8fafc);border-bottom:1px solid var(--nice-border, #e2e8f0)}._dark_1f4bm_23 ._statsBar_1f4bm_37{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155)}._stat_1f4bm_37{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);font-size:13px}._dot_1f4bm_75{width:8px;height:8px;border-radius:var(--nice-radius-full, 50%);display:inline-block}._statPrinting_1f4bm_87 ._dot_1f4bm_75{background:var(--nice-primary-hover, #2563eb)}._statQueued_1f4bm_93 ._dot_1f4bm_75{background:var(--nice-text-secondary, #64748b)}._statDone_1f4bm_99 ._dot_1f4bm_75{background:var(--nice-success-dark, #16a34a)}._statError_1f4bm_105 ._dot_1f4bm_75{background:var(--nice-danger-dark, #dc2626)}._toolbar_1f4bm_115{display:flex;align-items:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-2, 8px) var(--nice-space-4, 16px);border-bottom:1px solid var(--nice-border, #e2e8f0);flex-wrap:wrap}._dark_1f4bm_23 ._toolbar_1f4bm_115{border-color:var(--nice-border-color, #334155)}._filterTabs_1f4bm_139{display:flex;gap:var(--nice-space-1, 4px)}._filterTab_1f4bm_139{display:flex;align-items:center;gap:var(--nice-space-1-25, 5px);padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px);background:none;border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:12px;color:var(--nice-text-secondary, #475569)}._filterTab_1f4bm_139:hover{background:var(--nice-bg-secondary, #f1f5f9)}._filterTabActive_1f4bm_177{background:var(--nice-primary-bg, #eff6ff);border-color:var(--nice-primary-hover, #2563eb);color:var(--nice-primary-hover, #2563eb)}._filterCount_1f4bm_187{background:var(--nice-bg-secondary, #f1f5f9);padding:var(--nice-space-px, 1px) var(--nice-space-1-25, 5px);border-radius:var(--nice-radius-lg, 8px);font-size:11px;color:var(--nice-text-secondary, #64748b)}._filterTabActive_1f4bm_177 ._filterCount_1f4bm_187{background:var(--nice-primary-bg, #dbeafe);color:var(--nice-primary-hover, #2563eb)}._bulkActions_1f4bm_211{display:flex;align-items:center;gap:var(--nice-space-2, 8px);margin-left:auto}._bulkCount_1f4bm_223{font-size:13px;color:var(--nice-text-secondary, #64748b)}._bulkBtn_1f4bm_231{padding:var(--nice-space-1, 4px) var(--nice-space-2-5, 10px);border-radius:var(--nice-radius-md, 6px);border:1px solid var(--nice-border, #e2e8f0);cursor:pointer;font-size:12px;background:var(--nice-bg, #fff);color:var(--nice-text, #1e293b)}._bulkBtn_1f4bm_231:hover{background:var(--nice-bg-secondary, #f1f5f9)}._bulkBtnRemove_1f4bm_255{color:var(--nice-danger-dark, #dc2626);border-color:var(--nice-danger-bg, #fecaca)}._bulkBtnRemove_1f4bm_255:hover{background:var(--nice-danger-bg, #fef2f2)}._jobList_1f4bm_273{overflow-y:auto}._listHeader_1f4bm_281{display:grid;grid-template-columns:40px 1fr min-content min-content;align-items:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-2, 8px) var(--nice-space-4, 16px);font-size:12px;font-weight:600;color:var(--nice-text-muted, #94a3b8);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--nice-bg-secondary, #f1f5f9)}._dark_1f4bm_23 ._listHeader_1f4bm_281{border-color:var(--nice-border-color, #1e293b)}._headerLabel_1f4bm_313{white-space:nowrap}._jobRow_1f4bm_323{display:grid;grid-template-columns:40px auto 1fr min-content min-content;align-items:center;gap:var(--nice-space-3, 12px);padding:var(--nice-space-2-5, 10px) var(--nice-space-4, 16px);border-bottom:1px solid var(--nice-bg-secondary, #f1f5f9);transition:background .1s}._dark_1f4bm_23 ._jobRow_1f4bm_323{border-color:var(--nice-border-color, #334155)}._jobRow_1f4bm_323:hover{background:var(--nice-bg-secondary, #f8fafc)}._dark_1f4bm_23 ._jobRow_1f4bm_323:hover{background:var(--nice-bg-primary, #0f172a)}._jobRowSelected_1f4bm_359{background:var(--nice-primary-bg, #eff6ff)!important}._dark_1f4bm_23 ._jobRowSelected_1f4bm_359{background:var(--nice-primary-bg, #172554)!important}._jobCheckbox_1f4bm_373{cursor:pointer;width:16px;height:16px}._statusBadge_1f4bm_387{display:inline-flex;align-items:center;padding:var(--nice-space-0-75, 3px) var(--nice-space-2, 8px);border-radius:var(--nice-radius-xl, 12px);font-size:11px;font-weight:500;white-space:nowrap}._badge-queued_1f4bm_405{background:var(--nice-bg-secondary, #f1f5f9);color:var(--nice-text-secondary, #64748b)}._badge-printing_1f4bm_413{background:var(--nice-primary-bg, #dbeafe);color:var(--nice-primary-dark, #1d4ed8);animation:_pulse_1f4bm_1 1.5s ease-in-out infinite}._badge-done_1f4bm_423{background:var(--nice-success-bg, #dcfce7);color:var(--nice-success-dark, #16a34a)}._badge-error_1f4bm_431{background:var(--nice-danger-bg, #fee2e2);color:var(--nice-danger-dark, #dc2626)}._badge-paused_1f4bm_439{background:var(--nice-warning-bg, #fef9c3);color:var(--nice-warning-dark, #854d0e)}._badge-cancelled_1f4bm_447{background:var(--nice-bg-secondary, #f1f5f9);color:var(--nice-text-muted, #94a3b8)}@keyframes _pulse_1f4bm_1{0%,to{opacity:1}50%{opacity:.7}}._jobInfo_1f4bm_479{min-width:0}._jobName_1f4bm_485{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._jobMeta_1f4bm_497{display:flex;align-items:center;gap:var(--nice-space-2, 8px);font-size:12px;color:var(--nice-text-muted, #94a3b8);margin-top:var(--nice-space-0-5, 2px)}._jobTime_1f4bm_513{color:var(--nice-text-secondary, #64748b)}._jobDuration_1f4bm_519{color:var(--nice-warning, #f59e0b)}._jobError_1f4bm_525{font-size:12px;color:var(--nice-danger-dark, #dc2626);margin-top:var(--nice-space-1, 4px)}._progressBar_1f4bm_539{height:3px;background:var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 2px);margin-top:var(--nice-space-1-5, 6px);overflow:hidden}._progressFill_1f4bm_553{height:100%;background:var(--nice-primary-hover, #2563eb);border-radius:var(--nice-radius-sm, 2px);transition:width .3s}._copiesEditor_1f4bm_569{display:flex;align-items:center;gap:var(--nice-space-1-5, 6px);white-space:nowrap}._copiesBtn_1f4bm_581{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-sm, 4px);cursor:pointer;font-size:14px;color:var(--nice-text-secondary, #475569)}._copiesBtn_1f4bm_581:disabled{opacity:.4;cursor:default}._copiesBtn_1f4bm_581:not(:disabled):hover{background:var(--nice-border, #e2e8f0)}._copiesValue_1f4bm_621{min-width:20px;text-align:center;font-size:13px}._jobActions_1f4bm_635{display:flex;align-items:center;gap:var(--nice-space-1, 4px)}._actionBtn_1f4bm_645{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:13px;color:var(--nice-text-secondary, #475569)}._actionBtn_1f4bm_645:hover{background:var(--nice-bg-secondary, #f1f5f9)}._removeBtn_1f4bm_677{color:var(--nice-danger, #ef4444);border-color:var(--nice-danger-bg, #fecaca)}._removeBtn_1f4bm_677:hover{background:var(--nice-danger-bg, #fef2f2)}._emptyState_1f4bm_695{text-align:center;padding:var(--nice-space-10, 40px) var(--nice-space-6, 24px);color:var(--nice-text-muted, #94a3b8);font-size:14px}._container_1f76z_1{position:relative;display:inline-flex;flex-direction:column;font-family:system-ui,sans-serif;font-size:14px}._buttonGroup_1f76z_19{display:flex;align-items:stretch}._trigger_1f76z_31{display:inline-flex;align-items:center;justify-content:center;gap:var(--nice-space-1-5, 6px);border:none;cursor:pointer;font-weight:500;transition:background .15s,opacity .15s;white-space:nowrap}._triggerDisabled_1f76z_57{opacity:.5;cursor:not-allowed}._variant-primary_1f76z_69{background:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff)}._variant-primary_1f76z_69:not(._triggerDisabled_1f76z_57):hover{background:var(--nice-primary-dark, #1d4ed8)}._variant-secondary_1f76z_83{background:var(--nice-bg-secondary, #f8fafc);color:var(--nice-text, #1e293b);border:1px solid var(--nice-border, #e2e8f0)}._variant-secondary_1f76z_83:not(._triggerDisabled_1f76z_57):hover{background:var(--nice-border, #e2e8f0)}._variant-ghost_1f76z_99{background:transparent;color:var(--nice-primary-hover, #2563eb)}._variant-ghost_1f76z_99:not(._triggerDisabled_1f76z_57):hover{background:var(--nice-primary-bg, #eff6ff)}._size-sm_1f76z_117{padding:var(--nice-space-1-25, 5px) var(--nice-space-2-5, 10px);font-size:12px;border-radius:var(--nice-radius-md, 6px) 0 0 var(--nice-radius-md, 6px)}._size-md_1f76z_127{padding:var(--nice-space-2, 8px) var(--nice-space-3-5, 14px);font-size:14px;border-radius:var(--nice-radius-lg, 8px) 0 0 var(--nice-radius-lg, 8px)}._size-lg_1f76z_137{padding:var(--nice-space-2-5, 10px) 18px;font-size:15px;border-radius:var(--nice-radius-lg, 10px) 0 0 var(--nice-radius-lg, 10px)}._mainAction_1f76z_151{flex:1;border-right:1px solid var(--nice-overlay-light-20, rgba(255, 255, 255, .2))}._variant-secondary_1f76z_83 ._mainAction_1f76z_151{border-right-color:var(--nice-border, #e2e8f0)}._variant-ghost_1f76z_99 ._mainAction_1f76z_151{border-right-color:var(--nice-primary-bg, #dbeafe)}._dropdownToggle_1f76z_175{padding:0 var(--nice-space-2, 8px)!important}._size-sm_1f76z_117._dropdownToggle_1f76z_175{border-radius:0 var(--nice-radius-md, 6px) var(--nice-radius-md, 6px) 0}._size-md_1f76z_127._dropdownToggle_1f76z_175{border-radius:0 var(--nice-radius-lg, 8px) var(--nice-radius-lg, 8px) 0}._size-lg_1f76z_137._dropdownToggle_1f76z_175{border-radius:0 var(--nice-radius-lg, 10px) var(--nice-radius-lg, 10px) 0}._chevron_1f76z_201{display:inline-block;transition:transform .2s;font-size:12px}._chevronUp_1f76z_211{transform:scaleY(-1)}._dropdown_1f76z_175{position:absolute;top:calc(100% + 6px);right:0;min-width:220px;background:var(--nice-bg, #fff);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-lg, 10px);box-shadow:0 8px 32px var(--nice-overlay-12, rgba(0, 0, 0, .12));z-index:1000;overflow:hidden}._dark_1f76z_245 ._dropdown_1f76z_175{background:var(--nice-bg-secondary, #1e293b);border-color:var(--nice-border-color, #334155);box-shadow:0 8px 32px var(--nice-overlay-50, rgba(0, 0, 0, .5))}._section_1f76z_257{padding:var(--nice-space-3, 12px) var(--nice-space-3-5, 14px)}._sectionLabel_1f76z_263{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--nice-text-muted, #94a3b8);margin-bottom:var(--nice-space-2, 8px)}._divider_1f76z_283{height:1px;background:var(--nice-bg-secondary, #f1f5f9)}._dark_1f76z_245 ._divider_1f76z_283{background:var(--nice-bg-tertiary, #334155)}._copiesRow_1f76z_301{display:flex;align-items:center;gap:var(--nice-space-2-5, 10px)}._copiesBtn_1f76z_311{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);cursor:pointer;font-size:16px;color:var(--nice-text-secondary, #475569)}._copiesBtn_1f76z_311:disabled{opacity:.4;cursor:default}._copiesBtn_1f76z_311:not(:disabled):hover{background:var(--nice-border, #e2e8f0)}._copiesValue_1f76z_351{flex:1;text-align:center;font-size:18px;font-weight:600;color:var(--nice-text, #1e293b)}._dark_1f76z_245 ._copiesValue_1f76z_351{color:var(--nice-text-primary, #f1f5f9)}._printerSelect_1f76z_375{width:100%;padding:var(--nice-space-1-75, 7px) var(--nice-space-2-5, 10px);background:var(--nice-bg-secondary, #f8fafc);border:1px solid var(--nice-border, #e2e8f0);border-radius:var(--nice-radius-md, 6px);font-size:13px;color:var(--nice-text, #1e293b);cursor:pointer}._dark_1f76z_245 ._printerSelect_1f76z_375{background:var(--nice-bg-primary, #0f172a);border-color:var(--nice-border-color, #334155);color:var(--nice-text-primary, #f1f5f9)}._printerSelect_1f76z_375:focus{outline:none;border-color:var(--nice-primary-hover, #2563eb)}._printerStatus_1f76z_415{display:flex;align-items:center;gap:var(--nice-space-1-25, 5px);margin-top:var(--nice-space-1-5, 6px);font-size:12px}._printerDot_1f76z_429{width:7px;height:7px;border-radius:var(--nice-radius-full, 50%)}._dot-ready_1f76z_439{background:var(--nice-success-dark, #16a34a)}._dot-busy_1f76z_445{background:var(--nice-warning, #f59e0b)}._dot-offline_1f76z_451{background:var(--nice-text-muted, #94a3b8)}._dot-error_1f76z_457{background:var(--nice-danger-dark, #dc2626)}._printerStatusLabel_1f76z_463{color:var(--nice-text-secondary, #64748b)}._submitBtn_1f76z_473{width:100%;padding:9px var(--nice-space-3-5, 14px);background:var(--nice-primary-hover, #2563eb);color:var(--nice-text-on-primary, #fff);border:none;border-radius:var(--nice-radius-lg, 8px);cursor:pointer;font-size:14px;font-weight:600;text-align:center}._submitBtn_1f76z_473:hover:not(:disabled){background:var(--nice-primary-dark, #1d4ed8)}._submitBtn_1f76z_473:disabled{opacity:.5;cursor:not-allowed}._spinner_1f76z_515{display:inline-block;width:14px;height:14px;border:2px solid var(--nice-overlay-light-30, rgba(255, 255, 255, .3));border-top-color:var(--nice-bg, #fff);border-radius:var(--nice-radius-full, 50%);animation:_spin_1f76z_515 .7s linear infinite}@keyframes _spin_1f76z_515{to{transform:rotate(360deg)}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nice2dev/ui-printing",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "React components for print management: template editor, template browser, print preview, print queue and print button",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"printing",
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"react": ">=17.0.0",
|
|
49
49
|
"react-dom": ">=17.0.0",
|
|
50
|
-
"@nice2dev/ui": "^1.0
|
|
50
|
+
"@nice2dev/ui": "^1.2.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@nice2dev/ui": "^1.1
|
|
53
|
+
"@nice2dev/ui": "^1.2.1",
|
|
54
54
|
"@types/react": "^19.2.18",
|
|
55
55
|
"@types/react-dom": "^19.2.7",
|
|
56
56
|
"@vitejs/plugin-react": "^4.7.0",
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
/**
|
|
3
|
+
* TODO_1.2.1 B — every list prop of the package's controls is optional, with a stable module-level
|
|
4
|
+
* empty default (scripts/codemod-optional-data-props.mjs; C10 from 1.2.0, for every control): each
|
|
5
|
+
* control mounts with no data at all and logs no error.
|
|
6
|
+
*/
|
|
7
|
+
import { cleanup, render } from '@testing-library/react';
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
10
|
+
|
|
11
|
+
import { NicePrintQueue } from '../print-queue/NicePrintQueue';
|
|
12
|
+
import { NiceTemplateBrowser } from '../template-browser/NiceTemplateBrowser';
|
|
13
|
+
|
|
14
|
+
const noop = (): void => {};
|
|
15
|
+
/** A no-op for every named handler — the rows pass handlers, never data. */
|
|
16
|
+
function stubs(...names: string[]): Record<string, () => void> {
|
|
17
|
+
return Object.fromEntries(names.map((n) => [n, noop]));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const rows: { name: string; render: () => React.ReactElement }[] = [
|
|
21
|
+
{
|
|
22
|
+
name: 'NicePrintQueue',
|
|
23
|
+
render: () => (
|
|
24
|
+
<NicePrintQueue
|
|
25
|
+
{...({
|
|
26
|
+
...stubs('onJobUpdate', 'onJobRemove', 'onJobReorder', 'onJobPrint'),
|
|
27
|
+
} as unknown as React.ComponentProps<typeof NicePrintQueue>)}
|
|
28
|
+
/>
|
|
29
|
+
),
|
|
30
|
+
},
|
|
31
|
+
{ name: 'NiceTemplateBrowser', render: () => <NiceTemplateBrowser /> },
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
afterEach(cleanup);
|
|
35
|
+
|
|
36
|
+
describe.each(rows)('$name — renders without data', (row) => {
|
|
37
|
+
it('mounts with no data props and logs no error', () => {
|
|
38
|
+
const spy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
|
39
|
+
try {
|
|
40
|
+
render(row.render());
|
|
41
|
+
expect(spy.mock.calls).toEqual([]);
|
|
42
|
+
} finally {
|
|
43
|
+
spy.mockRestore();
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
@@ -331,7 +331,11 @@ export const NicePrintPreview: React.FC<NicePrintPreviewProps> = ({
|
|
|
331
331
|
<button className={styles.zoomBtn} onClick={() => setZoom((z) => Math.min(2.5, z + 0.1))}>
|
|
332
332
|
+
|
|
333
333
|
</button>
|
|
334
|
-
<button
|
|
334
|
+
<button
|
|
335
|
+
className={styles.zoomBtn}
|
|
336
|
+
onClick={() => setZoom(0.8)}
|
|
337
|
+
title={t('printing.fit', 'Fit')}
|
|
338
|
+
>
|
|
335
339
|
⊡
|
|
336
340
|
</button>
|
|
337
341
|
</div>
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
.sampleBadge {
|
|
60
60
|
padding: var(--nice-space-0-75, 3px) var(--nice-space-2-5, 10px);
|
|
61
61
|
background: var(--nice-warning-bg, #fef9c3);
|
|
62
|
-
border: 1px solid #fde047;
|
|
62
|
+
border: 1px solid var(--nice-warning-tint-30, #fde047);
|
|
63
63
|
border-radius: var(--nice-radius-xl, 12px);
|
|
64
64
|
font-size: 12px;
|
|
65
65
|
color: var(--nice-warning-dark, #854d0e);
|
|
@@ -6,6 +6,10 @@ import type { PrintJob, PrinterInfo, NicePrintQueueProps } from '../types/printi
|
|
|
6
6
|
|
|
7
7
|
import styles from './PrintQueue.module.css';
|
|
8
8
|
|
|
9
|
+
// Stable empty defaults for the optional data props: a `[]` literal in the destructuring
|
|
10
|
+
// would be a new array on every render.
|
|
11
|
+
const EMPTY_JOBS: PrintJob[] = [];
|
|
12
|
+
|
|
9
13
|
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
10
14
|
const STATUS_DEFAULTS: Record<string, string> = {
|
|
11
15
|
queued: 'Queued',
|
|
@@ -245,7 +249,7 @@ const JobRow: React.FC<JobRowProps> = ({
|
|
|
245
249
|
|
|
246
250
|
// ── Main component ────────────────────────────────────────────────────────────
|
|
247
251
|
export const NicePrintQueue: React.FC<NicePrintQueueProps> = ({
|
|
248
|
-
jobs,
|
|
252
|
+
jobs = EMPTY_JOBS,
|
|
249
253
|
printers = [],
|
|
250
254
|
onJobUpdate,
|
|
251
255
|
onJobRemove,
|
|
@@ -10,6 +10,10 @@ import type {
|
|
|
10
10
|
|
|
11
11
|
import styles from './TemplateBrowser.module.css';
|
|
12
12
|
|
|
13
|
+
// Stable empty defaults for the optional data props: a `[]` literal in the destructuring
|
|
14
|
+
// would be a new array on every render.
|
|
15
|
+
const EMPTY_TEMPLATES: PrintTemplate[] = [];
|
|
16
|
+
|
|
13
17
|
/** Built-in category chips; `key` is what a template's `category` field holds. */
|
|
14
18
|
const CATEGORIES: { key: string; fallback: string }[] = [
|
|
15
19
|
{ key: 'printing.category.invoices', fallback: 'Invoices' },
|
|
@@ -45,7 +49,7 @@ function exportTemplate(template: PrintTemplate) {
|
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
export const NiceTemplateBrowser: React.FC<NiceTemplateBrowserProps> = ({
|
|
48
|
-
templates,
|
|
52
|
+
templates = EMPTY_TEMPLATES,
|
|
49
53
|
selectedId,
|
|
50
54
|
onSelect,
|
|
51
55
|
onImport,
|