@emailmaker/filemanager 0.10.99 → 0.10.100

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/file-manager.css CHANGED
@@ -1,145 +1,3 @@
1
- @charset "UTF-8";
2
- .em-filemanager .root {
3
- padding: 16px 20px 24px;
4
- max-width: 520px;
5
- }
6
-
7
- .em-filemanager .controls {
8
- display: flex;
9
- flex-direction: column;
10
- gap: 20px;
11
- }
12
-
13
- .em-filemanager .segmentedControl {
14
- background-color: var(--ant-color-fill-secondary, rgba(0, 0, 0, 0.06));
15
- padding: 4px;
16
- }
17
-
18
- .em-filemanager .sizeRow {
19
- display: grid;
20
- grid-template-columns: 1fr 1fr;
21
- gap: 16px 24px;
22
- align-items: center;
23
- width: 100%;
24
- }
25
-
26
- .em-filemanager .sizeRowLabel {
27
- margin: 0;
28
- }
29
-
30
- /** InputNumber с prefix / suffix — ширина блока значения */
31
- .em-filemanager .sizeInputNumber {
32
- width: 100%;
33
- }
34
-
35
- .em-filemanager .sizeSuffix {
36
- color: var(--ant-color-text-tertiary, rgba(0, 0, 0, 0.45));
37
- font-size: 13px;
38
- line-height: 1;
39
- -webkit-user-select: none;
40
- user-select: none;
41
- }
42
-
43
- .em-filemanager .colorGrid {
44
- display: grid;
45
- grid-template-columns: 1fr 1fr;
46
- gap: 16px 24px;
47
- }
48
-
49
- .em-filemanager .colorCell {
50
- display: flex;
51
- flex-direction: column;
52
- align-items: stretch;
53
- gap: 8px;
54
- min-width: 0;
55
- }
56
-
57
- .em-filemanager .colorCellLabel {
58
- margin: 0 !important;
59
- white-space: nowrap;
60
- }
61
-
62
- .em-filemanager .colorPickerFull {
63
- width: 100%;
64
- justify-content: flex-start;
65
- }
66
-
67
- .em-filemanager .bgExtras {
68
- grid-column: 1/-1;
69
- margin-top: -8px;
70
- display: flex;
71
- flex-direction: column;
72
- gap: 12px;
73
- }
74
-
75
- .em-filemanager .bgWarning {
76
- margin: 0;
77
- }
78
-
79
- .em-filemanager .previewSection {
80
- display: flex;
81
- flex-direction: column;
82
- gap: 12px;
83
- }
84
-
85
- .em-filemanager .previewTitle {
86
- font-size: 14px;
87
- font-weight: 600;
88
- }
89
-
90
- .em-filemanager .previewWrap {
91
- display: flex;
92
- justify-content: center;
93
- align-items: center;
94
- min-height: 220px;
95
- padding: 16px;
96
- border: 1px solid var(--ant-color-border-secondary, #f0f0f0);
97
- border-radius: 8px;
98
- background-color: var(--ant-color-fill-quaternary, #fafafa);
99
- background-image: linear-gradient(45deg, #e8e8e8 25%, transparent 25%), linear-gradient(-45deg, #e8e8e8 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e8e8e8 75%), linear-gradient(-45deg, transparent 75%, #e8e8e8 75%);
100
- background-size: 16px 16px;
101
- background-position: 0 0, 0 8px, 8px -8px, -8px 0;
102
- position: relative;
103
- overflow: hidden;
104
- }
105
-
106
- .em-filemanager .scanLine {
107
- position: absolute;
108
- top: 50%;
109
- left: 20%;
110
- right: 20%;
111
- height: 2px;
112
- background-color: #ff4d4f;
113
- box-shadow: 0 0 6px #ff4d4f;
114
- z-index: 10;
115
- pointer-events: none;
116
- }
117
-
118
- .em-filemanager .scanLineBarcode {
119
- left: 10%;
120
- right: 10%;
121
- }
122
-
123
- .em-filemanager .previewWrapBarcode {
124
- min-height: 104px;
125
- padding: 12px 16px;
126
- }
127
-
128
- .em-filemanager .previewCanvas {
129
- display: block;
130
- max-width: 100%;
131
- height: auto;
132
- background: transparent;
133
- }
134
-
135
- .em-filemanager .previewCanvasBarcode {
136
- max-height: 120px;
137
- width: auto;
138
- }
139
-
140
- .em-filemanager .actions {
141
- margin-top: 8px;
142
- }
143
1
  .em-filemanager .iconsTab {
144
2
  display: flex;
145
3
  flex-direction: column;
@@ -576,6 +434,148 @@
576
434
  background: rgba(255, 255, 255, 0.6);
577
435
  pointer-events: all;
578
436
  }
437
+ @charset "UTF-8";
438
+ .em-filemanager .root {
439
+ padding: 16px 20px 24px;
440
+ max-width: 520px;
441
+ }
442
+
443
+ .em-filemanager .controls {
444
+ display: flex;
445
+ flex-direction: column;
446
+ gap: 20px;
447
+ }
448
+
449
+ .em-filemanager .segmentedControl {
450
+ background-color: var(--ant-color-fill-secondary, rgba(0, 0, 0, 0.06));
451
+ padding: 4px;
452
+ }
453
+
454
+ .em-filemanager .sizeRow {
455
+ display: grid;
456
+ grid-template-columns: 1fr 1fr;
457
+ gap: 16px 24px;
458
+ align-items: center;
459
+ width: 100%;
460
+ }
461
+
462
+ .em-filemanager .sizeRowLabel {
463
+ margin: 0;
464
+ }
465
+
466
+ /** InputNumber с prefix / suffix — ширина блока значения */
467
+ .em-filemanager .sizeInputNumber {
468
+ width: 100%;
469
+ }
470
+
471
+ .em-filemanager .sizeSuffix {
472
+ color: var(--ant-color-text-tertiary, rgba(0, 0, 0, 0.45));
473
+ font-size: 13px;
474
+ line-height: 1;
475
+ -webkit-user-select: none;
476
+ user-select: none;
477
+ }
478
+
479
+ .em-filemanager .colorGrid {
480
+ display: grid;
481
+ grid-template-columns: 1fr 1fr;
482
+ gap: 16px 24px;
483
+ }
484
+
485
+ .em-filemanager .colorCell {
486
+ display: flex;
487
+ flex-direction: column;
488
+ align-items: stretch;
489
+ gap: 8px;
490
+ min-width: 0;
491
+ }
492
+
493
+ .em-filemanager .colorCellLabel {
494
+ margin: 0 !important;
495
+ white-space: nowrap;
496
+ }
497
+
498
+ .em-filemanager .colorPickerFull {
499
+ width: 100%;
500
+ justify-content: flex-start;
501
+ }
502
+
503
+ .em-filemanager .bgExtras {
504
+ grid-column: 1/-1;
505
+ margin-top: -8px;
506
+ display: flex;
507
+ flex-direction: column;
508
+ gap: 12px;
509
+ }
510
+
511
+ .em-filemanager .bgWarning {
512
+ margin: 0;
513
+ }
514
+
515
+ .em-filemanager .previewSection {
516
+ display: flex;
517
+ flex-direction: column;
518
+ gap: 12px;
519
+ }
520
+
521
+ .em-filemanager .previewTitle {
522
+ font-size: 14px;
523
+ font-weight: 600;
524
+ }
525
+
526
+ .em-filemanager .previewWrap {
527
+ display: flex;
528
+ justify-content: center;
529
+ align-items: center;
530
+ min-height: 220px;
531
+ padding: 16px;
532
+ border: 1px solid var(--ant-color-border-secondary, #f0f0f0);
533
+ border-radius: 8px;
534
+ background-color: var(--ant-color-fill-quaternary, #fafafa);
535
+ background-image: linear-gradient(45deg, #e8e8e8 25%, transparent 25%), linear-gradient(-45deg, #e8e8e8 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e8e8e8 75%), linear-gradient(-45deg, transparent 75%, #e8e8e8 75%);
536
+ background-size: 16px 16px;
537
+ background-position: 0 0, 0 8px, 8px -8px, -8px 0;
538
+ position: relative;
539
+ overflow: hidden;
540
+ }
541
+
542
+ .em-filemanager .scanLine {
543
+ position: absolute;
544
+ top: 50%;
545
+ left: 20%;
546
+ right: 20%;
547
+ height: 2px;
548
+ background-color: #ff4d4f;
549
+ box-shadow: 0 0 6px #ff4d4f;
550
+ z-index: 10;
551
+ pointer-events: none;
552
+ }
553
+
554
+ .em-filemanager .scanLineBarcode {
555
+ left: 10%;
556
+ right: 10%;
557
+ }
558
+
559
+ .em-filemanager .previewWrapBarcode {
560
+ min-height: 104px;
561
+ padding: 12px 16px;
562
+ }
563
+
564
+ .em-filemanager .previewCanvas {
565
+ display: block;
566
+ max-width: 100%;
567
+ height: auto;
568
+ background: transparent;
569
+ }
570
+
571
+ .em-filemanager .previewCanvasBarcode {
572
+ max-height: 120px;
573
+ width: auto;
574
+ }
575
+
576
+ .em-filemanager .actions {
577
+ margin-top: 8px;
578
+ }
579
579
  .em-filemanager .noFilesContainer {
580
580
  text-align: center;
581
581
  }
@@ -1609,6 +1609,10 @@
1609
1609
  border-radius: 100%;
1610
1610
  background-color: var(--colorBgContainer);
1611
1611
  }
1612
+
1613
+ .em-filemanager .lockedTabLabel {
1614
+ opacity: 0.55;
1615
+ }
1612
1616
  @charset "UTF-8";
1613
1617
  .em-filemanager .uploadProgress {
1614
1618
  position: fixed;
@@ -1,2 +1,2 @@
1
- export{a1 as DEFAULT_FILE_MANAGER_CACHE_TTL_MS,a3 as DataSourceProxyBase,L as FailedRequestCache,A as FileContent,G as FileManagerApiError,z as FileManagerApp,t as FileManagerAppWithContext,B as FileModals,C as FolderSidebar,M as MutationRegistry,a4 as PathAwareStorageAdapter,P as PixieOnlyApp,X as TRASH_FOLDER_ID,$ as TreeCache,a0 as ViewCacheManager,I as buildAssetsPath,O as compareFileSystemItems,Y as createSystemFolderByPathResolver,y as default,Q as defaultChildrenViewFilterMatch,R as defaultFileSystemItemComparator,S as defaultHasSortValue,a2 as defaultIsFolderNotFoundError,a5 as fetchRemoteImageBlobByUrl,K as getAssetsBase,Z as getTrashFolderLookupCandidates,T as hasComparableSortValue,q as init,x as initFileManager,v as initPixieEditor,D as installResizeObserverErrorHandler,J as joinUrls,H as mapHttpStatusToErrorCode,U as matchesChildrenViewFilter,_ as normalizeSystemFolderPath,V as resolveSortParams,W as resolveViewStrategyOptions,E as uninstallResizeObserverErrorHandler,s as unmount,w as unmountPixieEditor}from"./file-manager-index-D2RmKLjd.js";import"react/jsx-runtime";import"react";import"react-dom/client";import"antd";import"@ant-design/icons";import"@ant-design/cssinjs";import"react-dom";import"@untitledui/icons";import"browser-image-compression";import"pixie";
1
+ export{a1 as DEFAULT_FILE_MANAGER_CACHE_TTL_MS,a3 as DataSourceProxyBase,L as FailedRequestCache,A as FileContent,G as FileManagerApiError,z as FileManagerApp,t as FileManagerAppWithContext,B as FileModals,C as FolderSidebar,M as MutationRegistry,a4 as PathAwareStorageAdapter,P as PixieOnlyApp,X as TRASH_FOLDER_ID,$ as TreeCache,a0 as ViewCacheManager,I as buildAssetsPath,O as compareFileSystemItems,Y as createSystemFolderByPathResolver,y as default,Q as defaultChildrenViewFilterMatch,R as defaultFileSystemItemComparator,S as defaultHasSortValue,a2 as defaultIsFolderNotFoundError,a5 as fetchRemoteImageBlobByUrl,K as getAssetsBase,Z as getTrashFolderLookupCandidates,T as hasComparableSortValue,q as init,x as initFileManager,v as initPixieEditor,D as installResizeObserverErrorHandler,J as joinUrls,H as mapHttpStatusToErrorCode,U as matchesChildrenViewFilter,_ as normalizeSystemFolderPath,V as resolveSortParams,W as resolveViewStrategyOptions,E as uninstallResizeObserverErrorHandler,s as unmount,w as unmountPixieEditor}from"./file-manager-index-fJUXPiJ_.js";import"react/jsx-runtime";import"react";import"react-dom/client";import"antd";import"@ant-design/icons";import"@ant-design/cssinjs";import"react-dom";import"@untitledui/icons";import"browser-image-compression";import"pixie";
2
2
  //# sourceMappingURL=file-manager.esm.js.map
package/file-manager.js CHANGED
@@ -48475,7 +48475,7 @@ var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(1354);
48475
48475
  var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(6314);
48476
48476
  var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);
48477
48477
  // Module
48478
- ___CSS_LOADER_EXPORT___.push([module.id, `.FolderSidebar-module__button__Yf2rX.ant-btn.ant-btn-icon-only{padding:calc(var(--paddingXXS)*1px) calc(var(--paddingSM)*1px);cursor:pointer;color:var(--colorTextSecondary);display:flex;gap:calc(var(--marginXS)*1px);align-items:center;justify-content:center;border-radius:calc(var(--borderRadiusSM)*1px);transition:all var(--motionDurationFast);box-shadow:none;border:none;width:32px;height:32px}.FolderSidebar-module__button__Yf2rX.ant-btn.ant-btn-icon-only:hover{background-color:var(--colorBgLayout);color:inherit}.FolderSidebar-module__button__Yf2rX:hover{background-color:var(--colorBgContainer);color:var(--colorPrimary)}.FolderSidebar-module__foldersTitle__Uh6u7{display:flex;align-items:center;flex:1;cursor:pointer}.FolderSidebar-module__folderActions__qA2Bk{position:absolute;top:4px;right:4px;display:flex;align-items:center;gap:4px;z-index:10}.FolderSidebar-module__folderActions__qA2Bk .FolderSidebar-module__button__Yf2rX.FolderSidebar-module__ant-btn__LXAXm.FolderSidebar-module__ant-btn-icon-only__j_wVF{padding:calc(var(--paddingXXS)*1px) calc(var(--paddingSM)*1px);cursor:pointer;color:var(--colorTextSecondary);display:flex;gap:calc(var(--marginXS)*1px);align-items:center;justify-content:center;border-radius:calc(var(--borderRadiusSM)*1px);transition:all var(--motionDurationFast);box-shadow:none;border:none;width:32px;height:32px}.FolderSidebar-module__folderActions__qA2Bk .FolderSidebar-module__button__Yf2rX.FolderSidebar-module__ant-btn__LXAXm.FolderSidebar-module__ant-btn-icon-only__j_wVF:hover{background-color:var(--colorBgLayout);color:inherit}.FolderSidebar-module__customExpandIcon__IhZJl{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;cursor:pointer;color:#666;font-size:10px;transition:transform .2s ease}.FolderSidebar-module__customExpandIcon__IhZJl:hover{color:var(--colorPrimary)}.FolderSidebar-module__fileCount__bD9DD{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:100%;padding:0 6px;margin-left:8px;color:#8d8d8d;font-size:14px;font-weight:500;transition:all .2s ease;white-space:nowrap;cursor:default;flex-shrink:0;margin-right:10px}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode-selected .folder-label span,.FolderSidebar-module__folderMenu__JCzLF .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected .folderLabelItem,.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode-selected .folderLabelItem,.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-selected .folderLabelItem{font-weight:600 !important}.FolderSidebar-module__uploadButton__QQUid{width:100%;justify-content:flex-start}.FolderSidebar-module__uploadButton__QQUid button:hover{background-color:var(--colorPrimaryHover) !important}.FolderSidebar-module__folderMenu__JCzLF{padding-left:0;padding-right:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode{display:flex;align-items:center;justify-content:space-between;padding:4px 0;border-radius:4px;transition:background-color .2s ease;width:100%;margin-bottom:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-content-wrapper{flex:1;align-items:center;padding:0;transition:background-color .2s ease}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0)}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher{height:24px;width:24px;margin-top:5px;display:flex !important;align-items:center;justify-content:center;transition:color .2s ease;flex-shrink:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher-noop{width:24px}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher-line-icon{color:#d9d9d9}.FolderSidebar-module__folderMenu__JCzLF .FolderSidebar-module__folderItemContainer__byl5b{width:100%;display:flex;align-items:center;justify-content:space-between;padding:2px 0;min-width:0}.FolderSidebar-module__folderMenu__JCzLF .folder-label{display:flex;align-items:center;flex:1;color:#595959;font-size:14px;min-width:0;overflow:hidden}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"]{border-bottom:1px solid var(--colorBorderSecondary);margin-bottom:8px;padding-bottom:8px}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"].ant-tree-treenode-selected{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"] .ant-tree-node-content-wrapper{padding:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"] .ant-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.FolderSidebar-module__folderMenu__JCzLF .FolderSidebar-module__emptyFolderContainer__WK6tx{padding:20px;text-align:center}.FolderSidebar-module__folderMenu__JCzLF .ant-tree > .ant-tree-treenode{padding-left:0 !important}.FolderSidebar-module__folderIcon__UoZzH{margin-right:8px;font-size:18px;flex-shrink:0}.FolderSidebar-module__folderLabelItem__uJ062{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;user-select:none}.FolderSidebar-module__foldersTitleItem__gapOI{display:flex;align-items:center;flex:1;cursor:pointer;min-width:0;overflow:hidden}.FolderSidebar-module__folderLabel__fHWMp{display:flex;align-items:center;flex:1;min-width:0;overflow:hidden}.FolderSidebar-module__foldersContainer__zdBVU{position:relative;width:100%}.FolderSidebar-module__uploadButton__QQUid .FolderSidebar-module__ant-btn__LXAXm,.FolderSidebar-module__uploadButton__QQUid .ant-btn{display:flex;align-items:center;justify-content:center;gap:3px}.FolderSidebar-module__buttonWrapper__a9Qi5{margin-bottom:24px;display:flex;gap:4px}.FolderSidebar-module__buttonWrapper__a9Qi5>:first-child{flex:1;height:40px;padding-left:10px}.FolderSidebar-module__buttonWrapper__a9Qi5>:last-child{width:40px;height:40px;flex-shrink:0}.FolderSidebar-module__uploadByURLButton__epMiC.ant-btn.ant-btn-icon-only{width:40px;min-width:40px;height:40px;padding:0;flex-shrink:0}.FolderSidebar-module__uploadButtonIcon__mWQmq{font-size:20px}.FolderSidebar-module__uploadButtonTitle__wk_o6{line-height:1em}.FolderSidebar-module__emptyFolderContainer__WK6tx{user-select:none;cursor:default;color:var(--colorTextTertiary)}.FolderSidebar-module__folderItemContainer__byl5b{width:100%;display:flex;align-items:center;justify-content:space-between;padding:2px 0;min-width:0}.FolderSidebar-module__lockedTabIcon__gYKRY{position:relative;display:inline-flex;opacity:.55}.FolderSidebar-module__lockedTabLock__rbkfX{position:absolute;right:-4px;bottom:-2px;opacity:1;border-radius:100%;background-color:var(--colorBgContainer)}`, "",{"version":3,"sources":["webpack://./src/components/FolderSidebar/FolderSidebar.module.scss"],"names":[],"mappings":"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","sourcesContent":[".button:global(.ant-btn.ant-btn-icon-only) {\n padding: calc(var(--paddingXXS) * 1px) calc(var(--paddingSM) * 1px);\n cursor: pointer;\n color: var(--colorTextSecondary);\n display: flex;\n gap: calc(var(--marginXS) * 1px);\n align-items: center;\n justify-content: center;\n border-radius: calc(var(--borderRadiusSM) * 1px);\n transition: all var(--motionDurationFast);\n box-shadow: none;\n\n border: none;\n width: 32px;\n height: 32px;\n\n &:hover {\n background-color: var(--colorBgLayout);\n color: inherit;\n }\n}\n\n.button:hover {\n background-color: var(--colorBgContainer);\n color: var(--colorPrimary);\n}\n\n.foldersTitle {\n display: flex;\n align-items: center;\n flex: 1;\n cursor: pointer;\n}\n\n.folderActions {\n position: absolute;\n top: 4px; /* Выравниваем по заголовку Folders */\n right: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n z-index: 10;\n\n .button.ant-btn.ant-btn-icon-only {\n padding: calc(var(--paddingXXS) * 1px) calc(var(--paddingSM) * 1px);\n cursor: pointer;\n color: var(--colorTextSecondary);\n display: flex;\n gap: calc(var(--marginXS) * 1px);\n align-items: center;\n justify-content: center;\n border-radius: calc(var(--borderRadiusSM) * 1px);\n transition: all var(--motionDurationFast);\n box-shadow: none;\n\n border: none;\n width: 32px;\n height: 32px;\n\n &:hover {\n background-color: var(--colorBgLayout);\n color: inherit;\n }\n }\n}\n\n.customExpandIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-right: 8px;\n cursor: pointer;\n color: #666;\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.customExpandIcon:hover {\n color: var(--colorPrimary);\n}\n\n.fileCount {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 100%;\n padding: 0 6px;\n margin-left: 8px;\n color: #8D8D8D;\n font-size: 14px;\n font-weight: 500;\n transition: all 0.2s ease;\n white-space: nowrap;\n cursor: default;\n flex-shrink: 0; /* Запрещаем сжатие счетчика */\n margin-right: 10px;\n}\n\n// .fileCount:hover {\n// border-color: var(--colorPrimary);\n// color: var(--colorPrimary);\n// }\n\n:global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected) {\n background-color: transparent !important;\n}\n\n/* :global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected):hover {\n color: red !important;\n} */\n\n/* Стили для выделения текста в выбранной папке */\n.folderMenu :global(.ant-tree-treenode-selected .folder-label span),\n.folderMenu :global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected .folderLabelItem),\n.folderMenu :global(.ant-tree-treenode-selected .folderLabelItem),\n.folderMenu :global(.ant-tree-node-selected .folderLabelItem) {\n font-weight: 600 !important;\n}\n\n/* Стили для иконки в выбранной папке */\n/* .folderMenu :global(.ant-tree-treenode-selected .folderIcon),\n.folderMenu :global(.ant-tree-node-selected .folderIcon) {\n color: red !important;\n} */\n\n/* CSS переменные для упрощения расчетов */\n\n.uploadButton {\n width: 100%;\n justify-content: flex-start;\n\n & button:hover {\n background-color: var(--colorPrimaryHover) !important;\n }\n}\n\n.folderMenu {\n padding-left: 0;\n padding-right: 0; /* Место для кнопки справа */\n}\n\n.folderMenu :global(.ant-tree-treenode) {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 4px 0;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n width: 100%;\n margin-bottom: 0;\n}\n\n.folderMenu :global(.ant-tree-node-content-wrapper) {\n flex: 1;\n /* display: flex; */\n align-items: center;\n padding: 0;\n /* border-radius: 4px; */\n transition: background-color 0.2s ease;\n}\n\n.folderMenu :global(.ant-tree-node-content-wrapper:hover) {\n background-color: transparent;\n}\n\n.folderMenu :global(.ant-tree-switcher) {\n height: 24px;\n width: 24px;\n margin-top: 5px;\n display: flex !important;\n align-items: center;\n justify-content: center;\n transition: color 0.2s ease;\n flex-shrink: 0; /* Запрещаем сжатие переключателя */\n}\n\n.folderMenu :global(.ant-tree-switcher-noop) {\n width: 24px;\n}\n\n/* Стили для линий дерева */\n.folderMenu :global(.ant-tree-switcher-line-icon) {\n color: #d9d9d9;\n}\n\n/* Улучшение отображения folder-item-container */\n.folderMenu .folderItemContainer {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 2px 0;\n min-width: 0; /* Позволяет flex-элементам сжиматься */\n}\n\n.folderMenu :global(.folder-label) {\n display: flex;\n align-items: center;\n flex: 1;\n color: #595959;\n font-size: 14px;\n min-width: 0;\n overflow: hidden;\n}\n\n/* Стили для корневого элемента Folders */\n.folderMenu :global(.ant-tree-treenode[data-key='folders']) {\n border-bottom: 1px solid var(--colorBorderSecondary);\n margin-bottom: 8px;\n padding-bottom: 8px;\n}\n\n.folderMenu :global(.ant-tree-treenode[data-key='folders'].ant-tree-treenode-selected) {\n background-color: transparent !important;\n}\n\n.folderMenu :global(.ant-tree-treenode[data-key='folders'] .ant-tree-node-content-wrapper) {\n padding: 0;\n}\n\n.folderMenu :global(.ant-tree-treenode[data-key='folders'] .ant-tree-node-content-wrapper:hover) {\n background-color: transparent !important;\n}\n\n/* Стили для ellipsis - удаляем max-width для гибкости */\n.folderMenu :global(.ellipsis) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n}\n\n/* Стили для пустого состояния */\n.folderMenu .emptyFolderContainer {\n padding: 20px;\n text-align: center;\n}\n\n/* Убираем отступы у корневого узла */\n.folderMenu :global(.ant-tree > .ant-tree-treenode) {\n padding-left: 0 !important;\n}\n.folderIcon {\n margin-right: 8px;\n font-size: 18px;\n flex-shrink: 0; /* Запрещаем сжатие иконки */\n}\n\n.folderLabelItem {\n font-size: 14px;\n white-space: nowrap; /* Запрещаем перенос строк */\n overflow: hidden; /* Скрываем переполнение */\n text-overflow: ellipsis; /* Показываем троеточие */\n flex: 1; /* Занимает доступное место */\n min-width: 0; /* Позволяет сжиматься */\n user-select: none;\n}\n\n.foldersTitleItem {\n display: flex;\n align-items: center;\n flex: 1;\n cursor: pointer;\n min-width: 0; /* Позволяет сжиматься */\n overflow: hidden; /* Скрываем переполнение */\n}\n\n/* .foldersTitleItem .folderLabelItem {\n font-weight: 500;\n color: #262626;\n} */\n\n/* Класс для заголовка папок */\n.folderLabel {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n\n.foldersContainer {\n position: relative;\n width: 100%;\n}\n\n/* Дополнительные стили для улучшения визуала */\n/* .folderMenu :global(.ant-tree-treenode:hover .folder-label span) {\n color: #1890ff;\n} */\n\n/* Стили для дивайдера между папками */\n\n\n.uploadButton .ant-btn,\n.uploadButton :global(.ant-btn) {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n}\n/* .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {\n color: #1890ff !important;\n} */\n\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabel .folderLabelItem,\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabel .folderIcon,\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {\n// color: var(--colorLink);\n// }\n\n\n.buttonWrapper {\n // overflow: hidden;\n margin-bottom: 24px;\n display: flex;\n gap: 4px;\n // border-radius: calc(var(--borderRadius) * 1px);\n \n // Левая кнопка занимает всю доступную ширину\n > :first-child {\n flex: 1;\n height: 40px;\n padding-left: 10px;\n }\n \n // Правая кнопка строго 40px\n > :last-child {\n width: 40px;\n height: 40px;\n flex-shrink: 0;\n }\n}\n\n/* Кнопка «Загрузить по URL» — icon-only, поэтому хост-приложение может задать ей\n свои размеры глобальным правилом `.ant-btn.ant-btn-icon-only` (в emailmaker это\n --formControlHeight: 34) и она становится ниже кнопки «Загрузить файл».\n Три класса в селекторе перебивают такие правила без !important. */\n.uploadByURLButton:global(.ant-btn.ant-btn-icon-only) {\n width: 40px;\n min-width: 40px;\n height: 40px;\n padding: 0;\n flex-shrink: 0;\n}\n\n.uploadButtonIcon {\n font-size: 20px;\n}\n\n.uploadButtonTitle {\n line-height: 1em;\n}\n\n.emptyFolderContainer {\n user-select: none;\n cursor: default;\n color: var(--colorTextTertiary);\n}\n\n.folderItemContainer {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 2px 0;\n min-width: 0; /* Позволяет flex-элементам сжиматься */\n}\n\n/** Tab locked by the host (e.g. by subscription plan): still shown, but badged with a lock. */\n.lockedTabIcon {\n position: relative;\n display: inline-flex;\n opacity: 0.55;\n}\n\n.lockedTabLock {\n position: absolute;\n right: -4px;\n bottom: -2px;\n opacity: 1;\n border-radius: 100%;\n background-color: var(--colorBgContainer);\n}\n"],"sourceRoot":""}]);
48478
+ ___CSS_LOADER_EXPORT___.push([module.id, `.FolderSidebar-module__button__Yf2rX.ant-btn.ant-btn-icon-only{padding:calc(var(--paddingXXS)*1px) calc(var(--paddingSM)*1px);cursor:pointer;color:var(--colorTextSecondary);display:flex;gap:calc(var(--marginXS)*1px);align-items:center;justify-content:center;border-radius:calc(var(--borderRadiusSM)*1px);transition:all var(--motionDurationFast);box-shadow:none;border:none;width:32px;height:32px}.FolderSidebar-module__button__Yf2rX.ant-btn.ant-btn-icon-only:hover{background-color:var(--colorBgLayout);color:inherit}.FolderSidebar-module__button__Yf2rX:hover{background-color:var(--colorBgContainer);color:var(--colorPrimary)}.FolderSidebar-module__foldersTitle__Uh6u7{display:flex;align-items:center;flex:1;cursor:pointer}.FolderSidebar-module__folderActions__qA2Bk{position:absolute;top:4px;right:4px;display:flex;align-items:center;gap:4px;z-index:10}.FolderSidebar-module__folderActions__qA2Bk .FolderSidebar-module__button__Yf2rX.FolderSidebar-module__ant-btn__LXAXm.FolderSidebar-module__ant-btn-icon-only__j_wVF{padding:calc(var(--paddingXXS)*1px) calc(var(--paddingSM)*1px);cursor:pointer;color:var(--colorTextSecondary);display:flex;gap:calc(var(--marginXS)*1px);align-items:center;justify-content:center;border-radius:calc(var(--borderRadiusSM)*1px);transition:all var(--motionDurationFast);box-shadow:none;border:none;width:32px;height:32px}.FolderSidebar-module__folderActions__qA2Bk .FolderSidebar-module__button__Yf2rX.FolderSidebar-module__ant-btn__LXAXm.FolderSidebar-module__ant-btn-icon-only__j_wVF:hover{background-color:var(--colorBgLayout);color:inherit}.FolderSidebar-module__customExpandIcon__IhZJl{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;cursor:pointer;color:#666;font-size:10px;transition:transform .2s ease}.FolderSidebar-module__customExpandIcon__IhZJl:hover{color:var(--colorPrimary)}.FolderSidebar-module__fileCount__bD9DD{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:100%;padding:0 6px;margin-left:8px;color:#8d8d8d;font-size:14px;font-weight:500;transition:all .2s ease;white-space:nowrap;cursor:default;flex-shrink:0;margin-right:10px}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode-selected .folder-label span,.FolderSidebar-module__folderMenu__JCzLF .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected .folderLabelItem,.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode-selected .folderLabelItem,.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-selected .folderLabelItem{font-weight:600 !important}.FolderSidebar-module__uploadButton__QQUid{width:100%;justify-content:flex-start}.FolderSidebar-module__uploadButton__QQUid button:hover{background-color:var(--colorPrimaryHover) !important}.FolderSidebar-module__folderMenu__JCzLF{padding-left:0;padding-right:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode{display:flex;align-items:center;justify-content:space-between;padding:4px 0;border-radius:4px;transition:background-color .2s ease;width:100%;margin-bottom:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-content-wrapper{flex:1;align-items:center;padding:0;transition:background-color .2s ease}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0)}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher{height:24px;width:24px;margin-top:5px;display:flex !important;align-items:center;justify-content:center;transition:color .2s ease;flex-shrink:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher-noop{width:24px}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher-line-icon{color:#d9d9d9}.FolderSidebar-module__folderMenu__JCzLF .FolderSidebar-module__folderItemContainer__byl5b{width:100%;display:flex;align-items:center;justify-content:space-between;padding:2px 0;min-width:0}.FolderSidebar-module__folderMenu__JCzLF .folder-label{display:flex;align-items:center;flex:1;color:#595959;font-size:14px;min-width:0;overflow:hidden}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"]{border-bottom:1px solid var(--colorBorderSecondary);margin-bottom:8px;padding-bottom:8px}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"].ant-tree-treenode-selected{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"] .ant-tree-node-content-wrapper{padding:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"] .ant-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.FolderSidebar-module__folderMenu__JCzLF .FolderSidebar-module__emptyFolderContainer__WK6tx{padding:20px;text-align:center}.FolderSidebar-module__folderMenu__JCzLF .ant-tree > .ant-tree-treenode{padding-left:0 !important}.FolderSidebar-module__folderIcon__UoZzH{margin-right:8px;font-size:18px;flex-shrink:0}.FolderSidebar-module__folderLabelItem__uJ062{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;user-select:none}.FolderSidebar-module__foldersTitleItem__gapOI{display:flex;align-items:center;flex:1;cursor:pointer;min-width:0;overflow:hidden}.FolderSidebar-module__folderLabel__fHWMp{display:flex;align-items:center;flex:1;min-width:0;overflow:hidden}.FolderSidebar-module__foldersContainer__zdBVU{position:relative;width:100%}.FolderSidebar-module__uploadButton__QQUid .FolderSidebar-module__ant-btn__LXAXm,.FolderSidebar-module__uploadButton__QQUid .ant-btn{display:flex;align-items:center;justify-content:center;gap:3px}.FolderSidebar-module__buttonWrapper__a9Qi5{margin-bottom:24px;display:flex;gap:4px}.FolderSidebar-module__buttonWrapper__a9Qi5>:first-child{flex:1;height:40px;padding-left:10px}.FolderSidebar-module__buttonWrapper__a9Qi5>:last-child{width:40px;height:40px;flex-shrink:0}.FolderSidebar-module__uploadByURLButton__epMiC.ant-btn.ant-btn-icon-only{width:40px;min-width:40px;height:40px;padding:0;flex-shrink:0}.FolderSidebar-module__uploadButtonIcon__mWQmq{font-size:20px}.FolderSidebar-module__uploadButtonTitle__wk_o6{line-height:1em}.FolderSidebar-module__emptyFolderContainer__WK6tx{user-select:none;cursor:default;color:var(--colorTextTertiary)}.FolderSidebar-module__folderItemContainer__byl5b{width:100%;display:flex;align-items:center;justify-content:space-between;padding:2px 0;min-width:0}.FolderSidebar-module__lockedTabIcon__gYKRY{position:relative;display:inline-flex;opacity:.55}.FolderSidebar-module__lockedTabLock__rbkfX{position:absolute;right:-4px;bottom:-2px;opacity:1;border-radius:100%;background-color:var(--colorBgContainer)}.FolderSidebar-module__lockedTabLabel__gvifJ{opacity:.55}`, "",{"version":3,"sources":["webpack://./src/components/FolderSidebar/FolderSidebar.module.scss"],"names":[],"mappings":"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","sourcesContent":[".button:global(.ant-btn.ant-btn-icon-only) {\n padding: calc(var(--paddingXXS) * 1px) calc(var(--paddingSM) * 1px);\n cursor: pointer;\n color: var(--colorTextSecondary);\n display: flex;\n gap: calc(var(--marginXS) * 1px);\n align-items: center;\n justify-content: center;\n border-radius: calc(var(--borderRadiusSM) * 1px);\n transition: all var(--motionDurationFast);\n box-shadow: none;\n\n border: none;\n width: 32px;\n height: 32px;\n\n &:hover {\n background-color: var(--colorBgLayout);\n color: inherit;\n }\n}\n\n.button:hover {\n background-color: var(--colorBgContainer);\n color: var(--colorPrimary);\n}\n\n.foldersTitle {\n display: flex;\n align-items: center;\n flex: 1;\n cursor: pointer;\n}\n\n.folderActions {\n position: absolute;\n top: 4px; /* Выравниваем по заголовку Folders */\n right: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n z-index: 10;\n\n .button.ant-btn.ant-btn-icon-only {\n padding: calc(var(--paddingXXS) * 1px) calc(var(--paddingSM) * 1px);\n cursor: pointer;\n color: var(--colorTextSecondary);\n display: flex;\n gap: calc(var(--marginXS) * 1px);\n align-items: center;\n justify-content: center;\n border-radius: calc(var(--borderRadiusSM) * 1px);\n transition: all var(--motionDurationFast);\n box-shadow: none;\n\n border: none;\n width: 32px;\n height: 32px;\n\n &:hover {\n background-color: var(--colorBgLayout);\n color: inherit;\n }\n }\n}\n\n.customExpandIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-right: 8px;\n cursor: pointer;\n color: #666;\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.customExpandIcon:hover {\n color: var(--colorPrimary);\n}\n\n.fileCount {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 100%;\n padding: 0 6px;\n margin-left: 8px;\n color: #8D8D8D;\n font-size: 14px;\n font-weight: 500;\n transition: all 0.2s ease;\n white-space: nowrap;\n cursor: default;\n flex-shrink: 0; /* Запрещаем сжатие счетчика */\n margin-right: 10px;\n}\n\n// .fileCount:hover {\n// border-color: var(--colorPrimary);\n// color: var(--colorPrimary);\n// }\n\n:global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected) {\n background-color: transparent !important;\n}\n\n/* :global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected):hover {\n color: red !important;\n} */\n\n/* Стили для выделения текста в выбранной папке */\n.folderMenu :global(.ant-tree-treenode-selected .folder-label span),\n.folderMenu :global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected .folderLabelItem),\n.folderMenu :global(.ant-tree-treenode-selected .folderLabelItem),\n.folderMenu :global(.ant-tree-node-selected .folderLabelItem) {\n font-weight: 600 !important;\n}\n\n/* Стили для иконки в выбранной папке */\n/* .folderMenu :global(.ant-tree-treenode-selected .folderIcon),\n.folderMenu :global(.ant-tree-node-selected .folderIcon) {\n color: red !important;\n} */\n\n/* CSS переменные для упрощения расчетов */\n\n.uploadButton {\n width: 100%;\n justify-content: flex-start;\n\n & button:hover {\n background-color: var(--colorPrimaryHover) !important;\n }\n}\n\n.folderMenu {\n padding-left: 0;\n padding-right: 0; /* Место для кнопки справа */\n}\n\n.folderMenu :global(.ant-tree-treenode) {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 4px 0;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n width: 100%;\n margin-bottom: 0;\n}\n\n.folderMenu :global(.ant-tree-node-content-wrapper) {\n flex: 1;\n /* display: flex; */\n align-items: center;\n padding: 0;\n /* border-radius: 4px; */\n transition: background-color 0.2s ease;\n}\n\n.folderMenu :global(.ant-tree-node-content-wrapper:hover) {\n background-color: transparent;\n}\n\n.folderMenu :global(.ant-tree-switcher) {\n height: 24px;\n width: 24px;\n margin-top: 5px;\n display: flex !important;\n align-items: center;\n justify-content: center;\n transition: color 0.2s ease;\n flex-shrink: 0; /* Запрещаем сжатие переключателя */\n}\n\n.folderMenu :global(.ant-tree-switcher-noop) {\n width: 24px;\n}\n\n/* Стили для линий дерева */\n.folderMenu :global(.ant-tree-switcher-line-icon) {\n color: #d9d9d9;\n}\n\n/* Улучшение отображения folder-item-container */\n.folderMenu .folderItemContainer {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 2px 0;\n min-width: 0; /* Позволяет flex-элементам сжиматься */\n}\n\n.folderMenu :global(.folder-label) {\n display: flex;\n align-items: center;\n flex: 1;\n color: #595959;\n font-size: 14px;\n min-width: 0;\n overflow: hidden;\n}\n\n/* Стили для корневого элемента Folders */\n.folderMenu :global(.ant-tree-treenode[data-key='folders']) {\n border-bottom: 1px solid var(--colorBorderSecondary);\n margin-bottom: 8px;\n padding-bottom: 8px;\n}\n\n.folderMenu :global(.ant-tree-treenode[data-key='folders'].ant-tree-treenode-selected) {\n background-color: transparent !important;\n}\n\n.folderMenu :global(.ant-tree-treenode[data-key='folders'] .ant-tree-node-content-wrapper) {\n padding: 0;\n}\n\n.folderMenu :global(.ant-tree-treenode[data-key='folders'] .ant-tree-node-content-wrapper:hover) {\n background-color: transparent !important;\n}\n\n/* Стили для ellipsis - удаляем max-width для гибкости */\n.folderMenu :global(.ellipsis) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n}\n\n/* Стили для пустого состояния */\n.folderMenu .emptyFolderContainer {\n padding: 20px;\n text-align: center;\n}\n\n/* Убираем отступы у корневого узла */\n.folderMenu :global(.ant-tree > .ant-tree-treenode) {\n padding-left: 0 !important;\n}\n.folderIcon {\n margin-right: 8px;\n font-size: 18px;\n flex-shrink: 0; /* Запрещаем сжатие иконки */\n}\n\n.folderLabelItem {\n font-size: 14px;\n white-space: nowrap; /* Запрещаем перенос строк */\n overflow: hidden; /* Скрываем переполнение */\n text-overflow: ellipsis; /* Показываем троеточие */\n flex: 1; /* Занимает доступное место */\n min-width: 0; /* Позволяет сжиматься */\n user-select: none;\n}\n\n.foldersTitleItem {\n display: flex;\n align-items: center;\n flex: 1;\n cursor: pointer;\n min-width: 0; /* Позволяет сжиматься */\n overflow: hidden; /* Скрываем переполнение */\n}\n\n/* .foldersTitleItem .folderLabelItem {\n font-weight: 500;\n color: #262626;\n} */\n\n/* Класс для заголовка папок */\n.folderLabel {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n\n.foldersContainer {\n position: relative;\n width: 100%;\n}\n\n/* Дополнительные стили для улучшения визуала */\n/* .folderMenu :global(.ant-tree-treenode:hover .folder-label span) {\n color: #1890ff;\n} */\n\n/* Стили для дивайдера между папками */\n\n\n.uploadButton .ant-btn,\n.uploadButton :global(.ant-btn) {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n}\n/* .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {\n color: #1890ff !important;\n} */\n\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabel .folderLabelItem,\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabel .folderIcon,\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {\n// color: var(--colorLink);\n// }\n\n\n.buttonWrapper {\n // overflow: hidden;\n margin-bottom: 24px;\n display: flex;\n gap: 4px;\n // border-radius: calc(var(--borderRadius) * 1px);\n \n // Левая кнопка занимает всю доступную ширину\n > :first-child {\n flex: 1;\n height: 40px;\n padding-left: 10px;\n }\n \n // Правая кнопка строго 40px\n > :last-child {\n width: 40px;\n height: 40px;\n flex-shrink: 0;\n }\n}\n\n/* Кнопка «Загрузить по URL» — icon-only, поэтому хост-приложение может задать ей\n свои размеры глобальным правилом `.ant-btn.ant-btn-icon-only` (в emailmaker это\n --formControlHeight: 34) и она становится ниже кнопки «Загрузить файл».\n Три класса в селекторе перебивают такие правила без !important. */\n.uploadByURLButton:global(.ant-btn.ant-btn-icon-only) {\n width: 40px;\n min-width: 40px;\n height: 40px;\n padding: 0;\n flex-shrink: 0;\n}\n\n.uploadButtonIcon {\n font-size: 20px;\n}\n\n.uploadButtonTitle {\n line-height: 1em;\n}\n\n.emptyFolderContainer {\n user-select: none;\n cursor: default;\n color: var(--colorTextTertiary);\n}\n\n.folderItemContainer {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 2px 0;\n min-width: 0; /* Позволяет flex-элементам сжиматься */\n}\n\n/** Tab locked by the host (e.g. by subscription plan): still shown, but badged with a lock. */\n.lockedTabIcon {\n position: relative;\n display: inline-flex;\n opacity: 0.55;\n}\n\n.lockedTabLock {\n position: absolute;\n right: -4px;\n bottom: -2px;\n opacity: 1;\n border-radius: 100%;\n background-color: var(--colorBgContainer);\n}\n\n.lockedTabLabel {\n opacity: 0.55;\n}\n"],"sourceRoot":""}]);
48479
48479
  // Exports
48480
48480
  ___CSS_LOADER_EXPORT___.locals = {
48481
48481
  "button": `FolderSidebar-module__button__Yf2rX`,
@@ -48502,7 +48502,8 @@ ___CSS_LOADER_EXPORT___.locals = {
48502
48502
  "uploadButtonIcon": `FolderSidebar-module__uploadButtonIcon__mWQmq`,
48503
48503
  "uploadButtonTitle": `FolderSidebar-module__uploadButtonTitle__wk_o6`,
48504
48504
  "lockedTabIcon": `FolderSidebar-module__lockedTabIcon__gYKRY`,
48505
- "lockedTabLock": `FolderSidebar-module__lockedTabLock__rbkfX`
48505
+ "lockedTabLock": `FolderSidebar-module__lockedTabLock__rbkfX`,
48506
+ "lockedTabLabel": `FolderSidebar-module__lockedTabLabel__gvifJ`
48506
48507
  };
48507
48508
  module.exports = ___CSS_LOADER_EXPORT___;
48508
48509
 
@@ -51588,6 +51589,10 @@ fetchChildFolders, handleAddFile, setIsUrlModalVisible, handleCreateFolder, acti
51588
51589
  }
51589
51590
  return ((0,jsx_runtime.jsxs)("span", { className: FolderSidebar_FolderSidebar_module.lockedTabIcon, children: [icon, (0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.Lock01, { size: 12, strokeWidth: 2.5, className: FolderSidebar_FolderSidebar_module.lockedTabLock })] }));
51590
51591
  }, [config]);
51592
+ /** Dims the tab label the same way as its icon, so a locked tab reads as one muted item. */
51593
+ const withLockedLabel = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)((label, tab) => (0,libraryTabLock/* isLibraryTabLocked */.v)(tab, config) ?
51594
+ (0,jsx_runtime.jsx)("span", { className: FolderSidebar_FolderSidebar_module.lockedTabLabel, children: label })
51595
+ : label, [config]);
51591
51596
  // кастомные иконки не используются в этом блоке
51592
51597
  const getAllFolderKeys = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)((menuItems) => {
51593
51598
  const keys = [];
@@ -51797,37 +51802,37 @@ fetchChildFolders, handleAddFile, setIsUrlModalVisible, handleCreateFolder, acti
51797
51802
  const libraryMenuItems = [
51798
51803
  {
51799
51804
  key: constants/* MY_FILES */.Zz,
51800
- label: t('My files'),
51801
- icon: (0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.Image03, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }),
51805
+ label: withLockedLabel(t('My files'), constants/* MY_FILES */.Zz),
51806
+ icon: withLockBadge((0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.Image03, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }), constants/* MY_FILES */.Zz),
51802
51807
  },
51803
51808
  {
51804
51809
  key: constants/* GIF */.xI,
51805
- label: t('GIF'),
51810
+ label: withLockedLabel(t('GIF'), constants/* GIF */.xI),
51806
51811
  icon: withLockBadge((0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.PlaySquare, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }), constants/* GIF */.xI),
51807
51812
  disabled: !isGifEnabled,
51808
51813
  },
51809
51814
  {
51810
51815
  key: constants/* STOCK_IMAGES */.SM,
51811
- label: t('Stock images'),
51816
+ label: withLockedLabel(t('Stock images'), constants/* STOCK_IMAGES */.SM),
51812
51817
  icon: withLockBadge((0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.Colors, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }), constants/* STOCK_IMAGES */.SM),
51813
51818
  disabled: !isStockImagesEnabled,
51814
51819
  },
51815
51820
  {
51816
51821
  key: constants/* ICONS */.Ze,
51817
- label: t('Icons'),
51822
+ label: withLockedLabel(t('Icons'), constants/* ICONS */.Ze),
51818
51823
  icon: withLockBadge((0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.ThumbsUp, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }), constants/* ICONS */.Ze),
51819
51824
  disabled: !isIconStockEnabled,
51820
51825
  },
51821
51826
  {
51822
51827
  key: constants/* IMAGE_CODES */.jY,
51823
- label: t('QR & Barcode'),
51824
- icon: (0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.QrCode02, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }),
51828
+ label: withLockedLabel(t('QR & Barcode'), constants/* IMAGE_CODES */.jY),
51829
+ icon: withLockBadge((0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.QrCode02, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }), constants/* IMAGE_CODES */.jY),
51825
51830
  disabled: !isImageCodesEnabled,
51826
51831
  },
51827
51832
  {
51828
51833
  key: constants.AI,
51829
- label: t('AI'),
51830
- icon: (0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.Stars02, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }),
51834
+ label: withLockedLabel(t('AI'), constants.AI),
51835
+ icon: withLockBadge((0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.Stars02, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }), constants.AI),
51831
51836
  disabled: !(config === null || config === void 0 ? void 0 : config.sseQuery),
51832
51837
  },
51833
51838
  ].filter(item => !item.disabled);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emailmaker/filemanager",
3
- "version": "0.10.99",
3
+ "version": "0.10.100",
4
4
  "main": "./file-manager.js",
5
5
  "module": "./file-manager.esm.js",
6
6
  "types": "./index.d.ts",