brd-ui-kit 0.1.83 → 0.1.84
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/dist/{calendar-Cf3VkgyX.js → calendar-B78l3uF9.js} +2 -2
- package/dist/{calendar-Cf3VkgyX.js.map → calendar-B78l3uF9.js.map} +1 -1
- package/dist/calendar-BClkfQSD.cjs +2 -0
- package/dist/{calendar-DvDG9hIB.cjs.map → calendar-BClkfQSD.cjs.map} +1 -1
- package/dist/{calendar-locale-Br6M-e1P.cjs → calendar-locale-CbU8VmD3.cjs} +2 -2
- package/dist/{calendar-locale-Br6M-e1P.cjs.map → calendar-locale-CbU8VmD3.cjs.map} +1 -1
- package/dist/{calendar-locale-DivjTEYg.js → calendar-locale-CtuBfQOO.js} +2 -2
- package/dist/{calendar-locale-DivjTEYg.js.map → calendar-locale-CtuBfQOO.js.map} +1 -1
- package/dist/components/icons/ArrowCounterClockwise.d.ts +1 -1
- package/dist/components/icons/BoundingBox.d.ts +1 -1
- package/dist/components/icons/Briefcase.d.ts +1 -1
- package/dist/components/icons/Building.d.ts +1 -1
- package/dist/components/icons/Buildings.d.ts +1 -1
- package/dist/components/icons/CaretDown.d.ts +1 -1
- package/dist/components/icons/CaretLeft.d.ts +1 -1
- package/dist/components/icons/CaretRight.d.ts +1 -1
- package/dist/components/icons/CaretUp.d.ts +1 -1
- package/dist/components/icons/CaretUpDown.d.ts +1 -1
- package/dist/components/icons/ChartLine.d.ts +1 -1
- package/dist/components/icons/Check.d.ts +1 -1
- package/dist/components/icons/CheckCircle.d.ts +1 -1
- package/dist/components/icons/Clock.d.ts +1 -1
- package/dist/components/icons/CreditCard.d.ts +1 -1
- package/dist/components/icons/DotsThree.d.ts +1 -1
- package/dist/components/icons/DownloadSimple.d.ts +1 -1
- package/dist/components/icons/EnvelopeSimple.d.ts +1 -1
- package/dist/components/icons/Eye.d.ts +1 -1
- package/dist/components/icons/EyeSlash.d.ts +1 -1
- package/dist/components/icons/FileText.d.ts +1 -1
- package/dist/components/icons/Folder.d.ts +1 -1
- package/dist/components/icons/Funnel.d.ts +1 -1
- package/dist/components/icons/Gear.d.ts +1 -1
- package/dist/components/icons/Info.d.ts +1 -1
- package/dist/components/icons/LockKey.d.ts +1 -1
- package/dist/components/icons/MagnifyingGlass.d.ts +1 -1
- package/dist/components/icons/MaxLogo.d.ts +1 -1
- package/dist/components/icons/Package.d.ts +1 -1
- package/dist/components/icons/Pencil.d.ts +1 -1
- package/dist/components/icons/Phone.d.ts +1 -1
- package/dist/components/icons/Plus.d.ts +1 -1
- package/dist/components/icons/PresentationChart.d.ts +1 -1
- package/dist/components/icons/SpinnerGap.d.ts +1 -1
- package/dist/components/icons/TelegramLogo.d.ts +1 -1
- package/dist/components/icons/Trash.d.ts +1 -1
- package/dist/components/icons/UserCircleGear.d.ts +1 -1
- package/dist/components/icons/Users.d.ts +1 -1
- package/dist/components/icons/UsersFour.d.ts +1 -1
- package/dist/components/icons/Warning.d.ts +1 -1
- package/dist/components/icons/WarningCircle.d.ts +1 -1
- package/dist/components/icons/WhatsAppLogoFilled.d.ts +1 -1
- package/dist/components/icons/Wrench.d.ts +1 -1
- package/dist/components/icons/X.d.ts +1 -1
- package/dist/components/icons/XCircle.d.ts +1 -1
- package/dist/components/icons/index.d.ts +46 -46
- package/dist/components/icons/stroke-icon.d.ts +1 -1
- package/dist/components/ui/icon/icon-map.d.ts +1 -1
- package/dist/components/ui/icon/icon.d.ts +2 -2
- package/dist/components-app-pagination-app-pagination.cjs +1 -1
- package/dist/components-app-pagination-app-pagination.cjs.map +1 -1
- package/dist/components-app-pagination-app-pagination.js +2 -2
- package/dist/components-app-sidebar-app-sidebar.cjs +1 -1
- package/dist/components-app-sidebar-app-sidebar.cjs.map +1 -1
- package/dist/components-app-sidebar-app-sidebar.js +1 -1
- package/dist/components-approval-log-approval-log.cjs +1 -1
- package/dist/components-approval-log-approval-log.cjs.map +1 -1
- package/dist/components-approval-log-approval-log.js +21 -21
- package/dist/components-avatar-uploader-avatar-uploader.cjs +1 -1
- package/dist/components-avatar-uploader-avatar-uploader.cjs.map +1 -1
- package/dist/components-avatar-uploader-avatar-uploader.js +21 -21
- package/dist/components-basic-avatar-basic-avatar.cjs +1 -1
- package/dist/components-basic-avatar-basic-avatar.cjs.map +1 -1
- package/dist/components-basic-avatar-basic-avatar.js +21 -21
- package/dist/components-checkbox-group-checkbox-group.cjs +1 -1
- package/dist/components-checkbox-group-checkbox-group.cjs.map +1 -1
- package/dist/components-checkbox-group-checkbox-group.js +21 -21
- package/dist/components-data-table-data-table-actions-column.cjs +1 -1
- package/dist/components-data-table-data-table-actions-column.cjs.map +1 -1
- package/dist/components-data-table-data-table-actions-column.js +1 -1
- package/dist/components-data-table-data-table-column-visibility.cjs +1 -1
- package/dist/components-data-table-data-table-column-visibility.cjs.map +1 -1
- package/dist/components-data-table-data-table-column-visibility.js +1 -1
- package/dist/components-data-table-data-table-row-actions-column.cjs +1 -1
- package/dist/components-data-table-data-table-row-actions-column.cjs.map +1 -1
- package/dist/components-data-table-data-table-row-actions-column.js +1 -1
- package/dist/components-files-uploader-files-uploader.cjs +1 -1
- package/dist/components-files-uploader-files-uploader.cjs.map +1 -1
- package/dist/components-files-uploader-files-uploader.js +3 -3
- package/dist/components-icons-ArrowCounterClockwise.cjs +1 -1
- package/dist/components-icons-ArrowCounterClockwise.js +1 -1
- package/dist/components-icons-BoundingBox.cjs +1 -1
- package/dist/components-icons-BoundingBox.js +1 -1
- package/dist/components-icons-Briefcase.cjs +1 -1
- package/dist/components-icons-Briefcase.js +1 -1
- package/dist/components-icons-Building.cjs +1 -1
- package/dist/components-icons-Building.js +1 -1
- package/dist/components-icons-Buildings.cjs +1 -1
- package/dist/components-icons-Buildings.js +1 -1
- package/dist/components-icons-CaretDown.cjs +1 -1
- package/dist/components-icons-CaretDown.js +1 -1
- package/dist/components-icons-CaretLeft.cjs +1 -1
- package/dist/components-icons-CaretLeft.js +1 -1
- package/dist/components-icons-CaretRight.cjs +1 -1
- package/dist/components-icons-CaretRight.js +1 -1
- package/dist/components-icons-CaretUp.cjs +1 -1
- package/dist/components-icons-CaretUp.js +1 -1
- package/dist/components-icons-CaretUpDown.cjs +1 -1
- package/dist/components-icons-CaretUpDown.js +1 -1
- package/dist/components-icons-ChartLine.cjs +1 -1
- package/dist/components-icons-ChartLine.js +1 -1
- package/dist/components-icons-Check.cjs +1 -1
- package/dist/components-icons-Check.js +1 -1
- package/dist/components-icons-CheckCircle.cjs +1 -1
- package/dist/components-icons-CheckCircle.js +1 -1
- package/dist/components-icons-Clock.cjs +1 -1
- package/dist/components-icons-Clock.js +1 -1
- package/dist/components-icons-CreditCard.cjs +1 -1
- package/dist/components-icons-CreditCard.js +1 -1
- package/dist/components-icons-DotsThree.cjs +1 -1
- package/dist/components-icons-DotsThree.js +1 -1
- package/dist/components-icons-DownloadSimple.cjs +1 -1
- package/dist/components-icons-DownloadSimple.js +1 -1
- package/dist/components-icons-EnvelopeSimple.cjs +1 -1
- package/dist/components-icons-EnvelopeSimple.js +1 -1
- package/dist/components-icons-Eye.cjs +1 -1
- package/dist/components-icons-Eye.js +1 -1
- package/dist/components-icons-EyeSlash.cjs +1 -1
- package/dist/components-icons-EyeSlash.js +1 -1
- package/dist/components-icons-FileText.cjs +1 -1
- package/dist/components-icons-FileText.js +1 -1
- package/dist/components-icons-Folder.cjs +1 -1
- package/dist/components-icons-Folder.js +1 -1
- package/dist/components-icons-Funnel.cjs +1 -1
- package/dist/components-icons-Funnel.js +1 -1
- package/dist/components-icons-Gear.cjs +1 -1
- package/dist/components-icons-Gear.js +1 -1
- package/dist/components-icons-Info.cjs +1 -1
- package/dist/components-icons-Info.js +1 -1
- package/dist/components-icons-LockKey.cjs +1 -1
- package/dist/components-icons-LockKey.js +1 -1
- package/dist/components-icons-MagnifyingGlass.cjs +1 -1
- package/dist/components-icons-MagnifyingGlass.js +1 -1
- package/dist/components-icons-MaxLogo.cjs +1 -1
- package/dist/components-icons-MaxLogo.js +1 -1
- package/dist/components-icons-Package.cjs +1 -1
- package/dist/components-icons-Package.js +1 -1
- package/dist/components-icons-Pencil.cjs +1 -1
- package/dist/components-icons-Pencil.js +1 -1
- package/dist/components-icons-Phone.cjs +1 -1
- package/dist/components-icons-Phone.js +1 -1
- package/dist/components-icons-Plus.cjs +1 -1
- package/dist/components-icons-Plus.js +1 -1
- package/dist/components-icons-PresentationChart.cjs +1 -1
- package/dist/components-icons-PresentationChart.js +1 -1
- package/dist/components-icons-SpinnerGap.cjs +1 -1
- package/dist/components-icons-SpinnerGap.js +1 -1
- package/dist/components-icons-TelegramLogo.cjs +1 -1
- package/dist/components-icons-TelegramLogo.js +1 -1
- package/dist/components-icons-Trash.cjs +1 -1
- package/dist/components-icons-Trash.js +1 -1
- package/dist/components-icons-UserCircleGear.cjs +1 -1
- package/dist/components-icons-UserCircleGear.js +1 -1
- package/dist/components-icons-Users.cjs +1 -1
- package/dist/components-icons-Users.js +1 -1
- package/dist/components-icons-UsersFour.cjs +1 -1
- package/dist/components-icons-UsersFour.js +1 -1
- package/dist/components-icons-Warning.cjs +1 -1
- package/dist/components-icons-Warning.js +1 -1
- package/dist/components-icons-WarningCircle.cjs +1 -1
- package/dist/components-icons-WarningCircle.js +1 -1
- package/dist/components-icons-WhatsAppLogoFilled.cjs +1 -1
- package/dist/components-icons-WhatsAppLogoFilled.js +1 -1
- package/dist/components-icons-Wrench.cjs +1 -1
- package/dist/components-icons-Wrench.js +1 -1
- package/dist/components-icons-X.cjs +1 -1
- package/dist/components-icons-X.js +1 -1
- package/dist/components-icons-XCircle.cjs +1 -1
- package/dist/components-icons-XCircle.js +1 -1
- package/dist/components-icons-stroke-icon.cjs.map +1 -1
- package/dist/components-icons-stroke-icon.js.map +1 -1
- package/dist/components-icons.cjs +1 -1
- package/dist/components-icons.js +45 -45
- package/dist/components-input-contact-input-contact.cjs +1 -1
- package/dist/components-input-contact-input-contact.cjs.map +1 -1
- package/dist/components-input-contact-input-contact.js +21 -21
- package/dist/components-input-password-input-password.cjs +1 -1
- package/dist/components-input-password-input-password.cjs.map +1 -1
- package/dist/components-input-password-input-password.js +2 -2
- package/dist/components-story-drawer-story-drawer.cjs +1 -1
- package/dist/components-story-drawer-story-drawer.cjs.map +1 -1
- package/dist/components-story-drawer-story-drawer.js +21 -21
- package/dist/components-transfer-list-transfer-list-card.cjs +1 -1
- package/dist/components-transfer-list-transfer-list-card.cjs.map +1 -1
- package/dist/components-transfer-list-transfer-list-card.js +1 -1
- package/dist/components-transfer-list-transfer-list.cjs +1 -1
- package/dist/components-transfer-list-transfer-list.cjs.map +1 -1
- package/dist/components-transfer-list-transfer-list.js +1 -1
- package/dist/components-ui-calendar-calendar.cjs +1 -1
- package/dist/components-ui-calendar-calendar.js +2 -2
- package/dist/components-ui-calendar.cjs +1 -1
- package/dist/components-ui-calendar.js +2 -2
- package/dist/components-ui-checkbox-checkbox.cjs +1 -1
- package/dist/components-ui-checkbox-checkbox.cjs.map +1 -1
- package/dist/components-ui-checkbox-checkbox.js +1 -1
- package/dist/components-ui-combobox-combobox.cjs +1 -1
- package/dist/components-ui-combobox-combobox.cjs.map +1 -1
- package/dist/components-ui-combobox-combobox.js +1 -1
- package/dist/components-ui-dialog-dialog.cjs +1 -1
- package/dist/components-ui-dialog-dialog.cjs.map +1 -1
- package/dist/components-ui-dialog-dialog.js +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.cjs +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.cjs.map +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.js +1 -1
- package/dist/components-ui-icon-icon-map.cjs +1 -1
- package/dist/components-ui-icon-icon-map.cjs.map +1 -1
- package/dist/components-ui-icon-icon-map.js +1 -1
- package/dist/components-ui-icon-icon-map.js.map +1 -1
- package/dist/components-ui-icon-icon.cjs +1 -1
- package/dist/components-ui-icon-icon.cjs.map +1 -1
- package/dist/components-ui-icon-icon.js +23 -23
- package/dist/components-ui-icon-icon.js.map +1 -1
- package/dist/components-ui-pagination-pagination.cjs +1 -1
- package/dist/components-ui-pagination-pagination.cjs.map +1 -1
- package/dist/components-ui-pagination-pagination.js +3 -3
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs +1 -1
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs.map +1 -1
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.js +2 -2
- package/dist/components-ui-select-select.cjs +1 -1
- package/dist/components-ui-select-select.cjs.map +1 -1
- package/dist/components-ui-select-select.js +1 -1
- package/dist/components-ui-sonner-sonner.cjs +1 -1
- package/dist/components-ui-sonner-sonner.cjs.map +1 -1
- package/dist/components-ui-sonner-sonner.js +6 -6
- package/dist/index.cjs +1 -1
- package/dist/index.js +3 -3
- package/package.json +2 -2
- package/dist/calendar-DvDG9hIB.cjs +0 -2
|
@@ -7,11 +7,11 @@ import "./components-ui-button-button.js";
|
|
|
7
7
|
import "./components-ui-button-button.styles.js";
|
|
8
8
|
import "./components-ui-card-card.js";
|
|
9
9
|
import "./components-ui-checkbox-checkbox.js";
|
|
10
|
-
import "phosphor-strokes-icons/icons/CaretDown";
|
|
10
|
+
import "brd-phosphor-strokes-icons/icons/CaretDown";
|
|
11
11
|
import "react";
|
|
12
|
-
import "./calendar-
|
|
12
|
+
import "./calendar-B78l3uF9.js";
|
|
13
13
|
import { Icon as f } from "./components-ui-icon-icon.js";
|
|
14
|
-
import "phosphor-strokes-icons/icons";
|
|
14
|
+
import "brd-phosphor-strokes-icons/icons";
|
|
15
15
|
import "./components-ui-combobox-combobox.js";
|
|
16
16
|
import "./components-ui-dialog-dialog.js";
|
|
17
17
|
import "./components-ui-label-label.js";
|
|
@@ -34,33 +34,33 @@ import "./components-ui-tooltip-tooltip.js";
|
|
|
34
34
|
import { Typography as u } from "./components-ui-typography-typography.js";
|
|
35
35
|
import "./components-ui-typography-typography.styles.js";
|
|
36
36
|
import { Avatar as d, AvatarImage as x, AvatarFallback as N } from "./components-ui-avatar-avatar.js";
|
|
37
|
-
import "phosphor-strokes-icons/icons/CaretLeft";
|
|
38
|
-
import "phosphor-strokes-icons/icons/CaretRight";
|
|
37
|
+
import "brd-phosphor-strokes-icons/icons/CaretLeft";
|
|
38
|
+
import "brd-phosphor-strokes-icons/icons/CaretRight";
|
|
39
39
|
import "./components-app-pagination-app-pagination.styles.js";
|
|
40
|
-
import "phosphor-strokes-icons/icons/CaretUpDown";
|
|
40
|
+
import "brd-phosphor-strokes-icons/icons/CaretUpDown";
|
|
41
41
|
import "./components-app-sidebar-app-sidebar.styles.js";
|
|
42
42
|
import "./components-data-table-data-table.styles.js";
|
|
43
43
|
import "./components-ui-dropdown-menu-dropdown-menu.styles.js";
|
|
44
|
-
import "phosphor-strokes-icons/icons/Eye";
|
|
45
|
-
import "phosphor-strokes-icons/icons/EyeSlash";
|
|
44
|
+
import "brd-phosphor-strokes-icons/icons/Eye";
|
|
45
|
+
import "brd-phosphor-strokes-icons/icons/EyeSlash";
|
|
46
46
|
import "./components-select-field-select-field.js";
|
|
47
47
|
import "./lodash-FemA_LCk.js";
|
|
48
48
|
import "./chart-DFbmMKiQ.js";
|
|
49
|
-
import "phosphor-strokes-icons/icons/CheckCircle";
|
|
50
|
-
import "phosphor-strokes-icons/icons/Info";
|
|
51
|
-
import "phosphor-strokes-icons/icons/SpinnerGap";
|
|
52
|
-
import "phosphor-strokes-icons/icons/Warning";
|
|
53
|
-
import "phosphor-strokes-icons/icons/X";
|
|
54
|
-
import "phosphor-strokes-icons/icons/XCircle";
|
|
49
|
+
import "brd-phosphor-strokes-icons/icons/CheckCircle";
|
|
50
|
+
import "brd-phosphor-strokes-icons/icons/Info";
|
|
51
|
+
import "brd-phosphor-strokes-icons/icons/SpinnerGap";
|
|
52
|
+
import "brd-phosphor-strokes-icons/icons/Warning";
|
|
53
|
+
import "brd-phosphor-strokes-icons/icons/X";
|
|
54
|
+
import "brd-phosphor-strokes-icons/icons/XCircle";
|
|
55
55
|
import "./index-C4iHL8Gs.js";
|
|
56
56
|
import "./index-C6N9aMq_.js";
|
|
57
|
-
import "phosphor-strokes-icons/icons/Plus";
|
|
58
|
-
import "phosphor-strokes-icons/icons/CaretUp";
|
|
59
|
-
import "phosphor-strokes-icons/icons/EnvelopeSimple";
|
|
60
|
-
import "phosphor-strokes-icons/icons/MaxLogo";
|
|
61
|
-
import "phosphor-strokes-icons/icons/Phone";
|
|
62
|
-
import "phosphor-strokes-icons/icons/TelegramLogo";
|
|
63
|
-
import "phosphor-strokes-icons/icons/WhatsAppLogoFilled";
|
|
57
|
+
import "brd-phosphor-strokes-icons/icons/Plus";
|
|
58
|
+
import "brd-phosphor-strokes-icons/icons/CaretUp";
|
|
59
|
+
import "brd-phosphor-strokes-icons/icons/EnvelopeSimple";
|
|
60
|
+
import "brd-phosphor-strokes-icons/icons/MaxLogo";
|
|
61
|
+
import "brd-phosphor-strokes-icons/icons/Phone";
|
|
62
|
+
import "brd-phosphor-strokes-icons/icons/TelegramLogo";
|
|
63
|
+
import "brd-phosphor-strokes-icons/icons/WhatsAppLogoFilled";
|
|
64
64
|
import "./components-input-phone-input-phone.js";
|
|
65
65
|
import "./components-card-info-card-info.styles.js";
|
|
66
66
|
const h = (m) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./brd-ui-kit.css');const e=require("react/jsx-runtime");;/* empty css */const A=require("./lib-utils.cjs");require("class-variance-authority");require("./components-ui-badge-badge.styles.cjs");const h=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");require("./components-ui-card-card.cjs");const g=require("./components-ui-checkbox-checkbox.cjs");require("phosphor-strokes-icons/icons/CaretDown");const B=require("./hooks-usePopupControls.cjs");require("./calendar-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./brd-ui-kit.css');const e=require("react/jsx-runtime");;/* empty css */const A=require("./lib-utils.cjs");require("class-variance-authority");require("./components-ui-badge-badge.styles.cjs");const h=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");require("./components-ui-card-card.cjs");const g=require("./components-ui-checkbox-checkbox.cjs");require("brd-phosphor-strokes-icons/icons/CaretDown");const B=require("./hooks-usePopupControls.cjs");require("./calendar-BClkfQSD.cjs");const q=require("./components-ui-icon-icon.cjs");require("brd-phosphor-strokes-icons/icons");require("./components-ui-combobox-combobox.cjs");require("./components-ui-dialog-dialog.cjs");const o=require("react"),j=require("./components-ui-label-label.cjs");require("./components-ui-separator-separator.cjs");require("./components-ui-field-field.styles.cjs");require("./components-ui-input-input.styles.cjs");require("./components-ui-textarea-textarea.cjs");require("./components-ui-input-group-input-group.styles.cjs");require("./components-ui-navigation-item-navigation-item.styles.cjs");require("./components-ui-navigation-menu-navigation-menu.styles.cjs");require("./components-ui-pagination-pagination.cjs");require("./components-ui-progress-progress.cjs");require("./components-ui-radio-group-radio-group.cjs");require("./components-ui-switch-switch.cjs");require("./components-ui-toggle-toggle.styles.cjs");require("./components-ui-toggle-group-toggle-group.cjs");require("./components-ui-table-table.cjs");require("./components-ui-tabs-tabs.cjs");require("./components-ui-tooltip-tooltip.cjs");const d=require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");require("brd-phosphor-strokes-icons/icons/CaretLeft");require("brd-phosphor-strokes-icons/icons/CaretRight");require("./components-app-pagination-app-pagination.styles.cjs");require("brd-phosphor-strokes-icons/icons/CaretUpDown");require("./components-app-sidebar-app-sidebar.styles.cjs");require("./components-data-table-data-table.styles.cjs");require("./components-ui-dropdown-menu-dropdown-menu.styles.cjs");const L=require("./components-input-field-input-field.cjs");require("brd-phosphor-strokes-icons/icons/Eye");require("brd-phosphor-strokes-icons/icons/EyeSlash");require("./components-select-field-select-field.cjs");require("./lodash-kqhtUJfz.cjs");require("./chart-9H_9wEfR.cjs");require("brd-phosphor-strokes-icons/icons/CheckCircle");require("brd-phosphor-strokes-icons/icons/Info");require("brd-phosphor-strokes-icons/icons/SpinnerGap");require("brd-phosphor-strokes-icons/icons/Warning");require("brd-phosphor-strokes-icons/icons/X");require("brd-phosphor-strokes-icons/icons/XCircle");const k=require("./index-DGxwh2Ms.cjs");require("./index-fTTv8YY8.cjs");require("brd-phosphor-strokes-icons/icons/Plus");require("brd-phosphor-strokes-icons/icons/CaretUp");require("brd-phosphor-strokes-icons/icons/EnvelopeSimple");require("brd-phosphor-strokes-icons/icons/MaxLogo");require("brd-phosphor-strokes-icons/icons/Phone");require("brd-phosphor-strokes-icons/icons/TelegramLogo");require("brd-phosphor-strokes-icons/icons/WhatsAppLogoFilled");require("./components-input-phone-input-phone.cjs");require("./components-card-info-card-info.styles.cjs");const R=50,V=({data:s,errTexts:c,label:v="Нужно проверить для расчета",dataEmpty:_="Нет данных",btnAddText:C="Добавить свой пункт",onChange:u})=>{const p=o.useRef(null),{isOpened:N,openPopup:w}=B.usePopupControls(),[a,x]=o.useState(""),b=o.useMemo(()=>s.flatMap(r=>r.items.map(t=>t.value)),[s]),D=o.useMemo(()=>s.flatMap(r=>r.items.filter(t=>t.checked).map(t=>t.value)),[s]).length===b.length&&b.length>0,y=o.useCallback(()=>{setTimeout(()=>{p.current&&p.current.scrollTo({top:p.current.scrollHeight,behavior:"smooth"})},R)},[]),O=r=>{const t=s.map(n=>({...n,items:n.items.map(i=>({...i,checked:r}))}));u(t)},F=o.useCallback((r,t)=>{const n=s.map(i=>i.id!==r?i:{...i,items:i.items.map(l=>l.value===t?{...l,checked:!l.checked}:l)});u(n)},[s,u]),M=o.useCallback((r,t)=>{const n=s.map(i=>i.id!==r?i:{...i,items:i.items.filter(l=>l.value!==t)});u(n)},[s,u]),f=o.useCallback(()=>{if(a.trim().length===0){k.toast.error(c?.empty?.title,{description:c?.empty?.description});return}if(s[s.length-1].items.some(l=>l.value===a.trim())){k.toast.error(c?.add?.title,{description:c?.add?.description});return}const n={value:a.trim(),label:a.trim(),checked:!1},i=s.map((l,m)=>m===s.length-1?{...l,items:[...l.items,n]}:l);u(i),x(""),y()},[a,s,u,y,c?.empty?.title,c?.empty?.description,c?.add?.title,c?.add?.description]),S=o.useCallback(r=>{const t=r.target.value;x(t)},[]);return e.jsxs("div",{className:"border-delicate-border flex h-full max-w-200 flex-col rounded-xl border",children:[e.jsx("div",{className:"bg-primary-bg rounded-t-xl px-8 py-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(g.Checkbox,{id:"all",checked:D,onCheckedChange:O}),e.jsx(j.Label,{htmlFor:"all",children:e.jsx(d.Typography,{variant:"body-lg-semibold",className:"text-primary-text",children:v})})]})}),e.jsx("div",{ref:p,className:"bg-secondary-bg flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto",children:s.map(({id:r,name:t,items:n})=>e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`bg-tertiary-bg border-delicate-border border-t border-b px-8
|
|
2
2
|
py-2`,children:e.jsx(d.Typography,{variant:"body-sm-medium",className:"text-primary-text",children:t})}),n.length>0?n.map(({value:i,label:l,checked:m},I)=>{const T=I===n.length-1;return e.jsx("div",{className:A.cn(`${T&&"mb-2"}`),children:e.jsxs("div",{className:`bg-primary-bg hover:bg-primary-hover-bg flex
|
|
3
3
|
justify-between px-8 py-4`,children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(g.Checkbox,{id:`checkbox-${i}`,checked:m,onCheckedChange:()=>F(r,i)}),e.jsx(j.Label,{htmlFor:`checkbox-${i}`,children:e.jsx(d.Typography,{variant:"body-md-regular",className:"text-primary-text",children:l})})]}),e.jsx(h.Button,{variant:"circleGhost",onClick:()=>M(r,i),children:e.jsx(q.Icon,{type:"x",className:"text-secondary-text cursor-pointer"})})]})},i)}):null,n.length===0&&e.jsx(d.Typography,{className:"px-8 py-4 text-center",children:_})]},r))}),N?e.jsx(L.InputField,{value:a,onChange:S,placeholder:"Написать свой пункт",classes:{fieldset:"flex-none! overflow-hidden"},onKeyDown:r=>{r.key==="Enter"&&(r.preventDefault(),f())},date:[{id:0,position:"inline-end",component:e.jsx(h.Button,{variant:"circleGhost",onClick:f,children:e.jsx(q.Icon,{type:"x-circle",className:"text-secondary-text rotate-45"})})}]}):e.jsxs(h.Button,{variant:"secondary",className:"border-delicate-border w-full overflow-hidden border-t",onClick:w,children:[e.jsx(d.Typography,{children:C}),e.jsx(q.Icon,{type:"plus",size:"small",className:"text-primary-text"})]})]})};exports.CheckboxGroup=V;
|
|
4
4
|
//# sourceMappingURL=components-checkbox-group-checkbox-group.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-checkbox-group-checkbox-group.cjs","sources":["../src/components/checkbox-group/checkbox-group.tsx"],"sourcesContent":["import {\n Button,\n Checkbox,\n cn,\n Icon,\n InputField,\n Label,\n sonner,\n Typography,\n usePopupControls,\n} from \"@/index\";\nimport { useCallback, useMemo, useRef, useState, type ChangeEvent } from \"react\";\nimport { Fragment } from \"react/jsx-runtime\";\n\ntype CheckboxGroupOptionItem = {\n value: string;\n label: string;\n checked: boolean;\n};\n\ntype CheckboxGroupOption = {\n id: number;\n name: string;\n items: CheckboxGroupOptionItem[];\n};\n\ntype Props = {\n data: CheckboxGroupOption[];\n onChange: (values: CheckboxGroupOption[]) => void;\n errTexts?: {\n add?: {\n title?: string;\n description?: string;\n };\n empty?: {\n title?: string;\n description?: string;\n };\n };\n label?: string;\n dataEmpty?: string;\n btnAddText?: string;\n};\n\nconst DEFAULT_MS_SCROLL_TO_BOTTOM = 50;\n\nexport const CheckboxGroup = ({\n data,\n errTexts,\n label = \"Нужно проверить для расчета\",\n dataEmpty = \"Нет данных\",\n btnAddText = \"Добавить свой пункт\",\n onChange,\n}: Props) => {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const { isOpened, openPopup: openAdd } = usePopupControls();\n const [value, setValue] = useState(\"\");\n\n const allValues = useMemo(() => {\n return data.flatMap((values) => values.items.map((item) => item.value));\n }, [data]);\n\n const selectedValues = useMemo(() => {\n return data.flatMap((values) =>\n values.items.filter((item) => item.checked).map((item) => item.value),\n );\n }, [data]);\n\n const isAllSelected =\n selectedValues.length === allValues.length && allValues.length > 0;\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n if (scrollContainerRef.current) {\n scrollContainerRef.current.scrollTo({\n top: scrollContainerRef.current.scrollHeight,\n behavior: \"smooth\",\n });\n }\n }, DEFAULT_MS_SCROLL_TO_BOTTOM);\n }, []);\n\n const handleSelectAll = (checked: boolean) => {\n const newData = data.map((values) => ({\n ...values,\n items: values.items.map((item) => ({\n ...item,\n checked,\n })),\n }));\n onChange(newData);\n };\n\n const handleCheckboxChange = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.map((item) =>\n item.value === itemValue ? { ...item, checked: !item.checked } : item,\n ),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleOptionDelete = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.filter((item) => item.value !== itemValue),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleAddOption = useCallback(() => {\n if (value.trim().length === 0) {\n sonner.error(errTexts?.empty?.title, {\n description: errTexts?.empty?.description,\n });\n return;\n }\n\n const lastCategory = data[data.length - 1];\n\n const isExist = lastCategory.items.some((item) => item.value === value.trim());\n\n if (isExist) {\n sonner.error(errTexts?.add?.title, {\n description: errTexts?.add?.description,\n });\n return;\n }\n\n const newItem: CheckboxGroupOptionItem = {\n value: value.trim(),\n label: value.trim(),\n checked: false,\n };\n\n const newData = data.map((values, index) => {\n if (index === data.length - 1) {\n return {\n ...values,\n items: [...values.items, newItem],\n };\n }\n return values;\n });\n\n onChange(newData);\n setValue(\"\");\n scrollToBottom();\n }, [\n value,\n data,\n onChange,\n scrollToBottom,\n errTexts?.empty?.title,\n errTexts?.empty?.description,\n errTexts?.add?.title,\n errTexts?.add?.description,\n ]);\n\n const handleChangeValue = useCallback((e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setValue(value);\n }, []);\n\n return (\n <div\n className=\"border-delicate-border flex h-full max-w-200 flex-col rounded-xl border\"\n >\n <div className=\"bg-primary-bg rounded-t-xl px-8 py-6\">\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id=\"all\"\n checked={isAllSelected}\n onCheckedChange={handleSelectAll}\n />\n <Label htmlFor=\"all\">\n <Typography\n variant=\"body-lg-semibold\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n </div>\n\n <div\n ref={scrollContainerRef}\n className=\"bg-secondary-bg flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto\"\n >\n {data.map(({ id, name, items }) => {\n return (\n <Fragment key={id}>\n <div\n className=\"bg-tertiary-bg border-delicate-border border-t border-b px-8\n py-2\"\n >\n <Typography\n variant=\"body-sm-medium\"\n className=\"text-primary-text\"\n >\n {name}\n </Typography>\n </div>\n\n {items.length > 0\n ? items.map(({ value, label, checked }, index) => {\n const lastItem = index === items.length - 1;\n\n return (\n <div\n key={value}\n className={cn(`${lastItem && \"mb-2\"}`)}\n >\n <div\n className=\"bg-primary-bg hover:bg-primary-hover-bg flex\n justify-between px-8 py-4\"\n >\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id={`checkbox-${value}`}\n checked={checked}\n onCheckedChange={() => handleCheckboxChange(id, value)}\n />\n <Label htmlFor={`checkbox-${value}`}>\n <Typography\n variant=\"body-md-regular\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n\n <Button\n variant=\"circleGhost\"\n onClick={() => handleOptionDelete(id, value)}\n >\n <Icon\n type=\"x\"\n className=\"text-secondary-text cursor-pointer\"\n />\n </Button>\n </div>\n </div>\n );\n })\n : null}\n {items.length === 0 && (\n <Typography className=\"px-8 py-4 text-center\">{dataEmpty}</Typography>\n )}\n </Fragment>\n );\n })}\n </div>\n\n {isOpened ? (\n <InputField\n value={value}\n onChange={handleChangeValue}\n placeholder=\"Написать свой пункт\"\n classes={{\n fieldset: \"flex-none! overflow-hidden\",\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddOption();\n }\n }}\n date={[\n {\n id: 0,\n position: \"inline-end\",\n component: (\n <Button\n variant=\"circleGhost\"\n onClick={handleAddOption}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-secondary-text rotate-45\"\n />\n </Button>\n ),\n },\n ]}\n />\n ) : (\n <Button\n variant=\"secondary\"\n className=\"border-delicate-border w-full overflow-hidden border-t\"\n onClick={openAdd}\n >\n <Typography>{btnAddText}</Typography>\n <Icon\n type=\"plus\"\n size=\"small\"\n className=\"text-primary-text\"\n />\n </Button>\n )}\n </div>\n );\n};\n\nexport type { CheckboxGroupOption, CheckboxGroupOptionItem, Props as CheckboxGroupProps };\n"],"names":["DEFAULT_MS_SCROLL_TO_BOTTOM","CheckboxGroup","data","errTexts","label","dataEmpty","btnAddText","onChange","scrollContainerRef","useRef","isOpened","openAdd","usePopupControls","value","setValue","useState","allValues","useMemo","values","item","isAllSelected","scrollToBottom","useCallback","handleSelectAll","checked","newData","handleCheckboxChange","categoryId","itemValue","category","handleOptionDelete","handleAddOption","sonner","newItem","index","handleChangeValue","e","jsxs","jsx","Checkbox","Label","Typography","id","name","items","Fragment","lastItem","cn","Button","Icon","InputField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-checkbox-group-checkbox-group.cjs","sources":["../src/components/checkbox-group/checkbox-group.tsx"],"sourcesContent":["import {\n Button,\n Checkbox,\n cn,\n Icon,\n InputField,\n Label,\n sonner,\n Typography,\n usePopupControls,\n} from \"@/index\";\nimport { useCallback, useMemo, useRef, useState, type ChangeEvent } from \"react\";\nimport { Fragment } from \"react/jsx-runtime\";\n\ntype CheckboxGroupOptionItem = {\n value: string;\n label: string;\n checked: boolean;\n};\n\ntype CheckboxGroupOption = {\n id: number;\n name: string;\n items: CheckboxGroupOptionItem[];\n};\n\ntype Props = {\n data: CheckboxGroupOption[];\n onChange: (values: CheckboxGroupOption[]) => void;\n errTexts?: {\n add?: {\n title?: string;\n description?: string;\n };\n empty?: {\n title?: string;\n description?: string;\n };\n };\n label?: string;\n dataEmpty?: string;\n btnAddText?: string;\n};\n\nconst DEFAULT_MS_SCROLL_TO_BOTTOM = 50;\n\nexport const CheckboxGroup = ({\n data,\n errTexts,\n label = \"Нужно проверить для расчета\",\n dataEmpty = \"Нет данных\",\n btnAddText = \"Добавить свой пункт\",\n onChange,\n}: Props) => {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const { isOpened, openPopup: openAdd } = usePopupControls();\n const [value, setValue] = useState(\"\");\n\n const allValues = useMemo(() => {\n return data.flatMap((values) => values.items.map((item) => item.value));\n }, [data]);\n\n const selectedValues = useMemo(() => {\n return data.flatMap((values) =>\n values.items.filter((item) => item.checked).map((item) => item.value),\n );\n }, [data]);\n\n const isAllSelected =\n selectedValues.length === allValues.length && allValues.length > 0;\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n if (scrollContainerRef.current) {\n scrollContainerRef.current.scrollTo({\n top: scrollContainerRef.current.scrollHeight,\n behavior: \"smooth\",\n });\n }\n }, DEFAULT_MS_SCROLL_TO_BOTTOM);\n }, []);\n\n const handleSelectAll = (checked: boolean) => {\n const newData = data.map((values) => ({\n ...values,\n items: values.items.map((item) => ({\n ...item,\n checked,\n })),\n }));\n onChange(newData);\n };\n\n const handleCheckboxChange = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.map((item) =>\n item.value === itemValue ? { ...item, checked: !item.checked } : item,\n ),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleOptionDelete = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.filter((item) => item.value !== itemValue),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleAddOption = useCallback(() => {\n if (value.trim().length === 0) {\n sonner.error(errTexts?.empty?.title, {\n description: errTexts?.empty?.description,\n });\n return;\n }\n\n const lastCategory = data[data.length - 1];\n\n const isExist = lastCategory.items.some((item) => item.value === value.trim());\n\n if (isExist) {\n sonner.error(errTexts?.add?.title, {\n description: errTexts?.add?.description,\n });\n return;\n }\n\n const newItem: CheckboxGroupOptionItem = {\n value: value.trim(),\n label: value.trim(),\n checked: false,\n };\n\n const newData = data.map((values, index) => {\n if (index === data.length - 1) {\n return {\n ...values,\n items: [...values.items, newItem],\n };\n }\n return values;\n });\n\n onChange(newData);\n setValue(\"\");\n scrollToBottom();\n }, [\n value,\n data,\n onChange,\n scrollToBottom,\n errTexts?.empty?.title,\n errTexts?.empty?.description,\n errTexts?.add?.title,\n errTexts?.add?.description,\n ]);\n\n const handleChangeValue = useCallback((e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setValue(value);\n }, []);\n\n return (\n <div\n className=\"border-delicate-border flex h-full max-w-200 flex-col rounded-xl border\"\n >\n <div className=\"bg-primary-bg rounded-t-xl px-8 py-6\">\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id=\"all\"\n checked={isAllSelected}\n onCheckedChange={handleSelectAll}\n />\n <Label htmlFor=\"all\">\n <Typography\n variant=\"body-lg-semibold\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n </div>\n\n <div\n ref={scrollContainerRef}\n className=\"bg-secondary-bg flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto\"\n >\n {data.map(({ id, name, items }) => {\n return (\n <Fragment key={id}>\n <div\n className=\"bg-tertiary-bg border-delicate-border border-t border-b px-8\n py-2\"\n >\n <Typography\n variant=\"body-sm-medium\"\n className=\"text-primary-text\"\n >\n {name}\n </Typography>\n </div>\n\n {items.length > 0\n ? items.map(({ value, label, checked }, index) => {\n const lastItem = index === items.length - 1;\n\n return (\n <div\n key={value}\n className={cn(`${lastItem && \"mb-2\"}`)}\n >\n <div\n className=\"bg-primary-bg hover:bg-primary-hover-bg flex\n justify-between px-8 py-4\"\n >\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id={`checkbox-${value}`}\n checked={checked}\n onCheckedChange={() => handleCheckboxChange(id, value)}\n />\n <Label htmlFor={`checkbox-${value}`}>\n <Typography\n variant=\"body-md-regular\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n\n <Button\n variant=\"circleGhost\"\n onClick={() => handleOptionDelete(id, value)}\n >\n <Icon\n type=\"x\"\n className=\"text-secondary-text cursor-pointer\"\n />\n </Button>\n </div>\n </div>\n );\n })\n : null}\n {items.length === 0 && (\n <Typography className=\"px-8 py-4 text-center\">{dataEmpty}</Typography>\n )}\n </Fragment>\n );\n })}\n </div>\n\n {isOpened ? (\n <InputField\n value={value}\n onChange={handleChangeValue}\n placeholder=\"Написать свой пункт\"\n classes={{\n fieldset: \"flex-none! overflow-hidden\",\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddOption();\n }\n }}\n date={[\n {\n id: 0,\n position: \"inline-end\",\n component: (\n <Button\n variant=\"circleGhost\"\n onClick={handleAddOption}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-secondary-text rotate-45\"\n />\n </Button>\n ),\n },\n ]}\n />\n ) : (\n <Button\n variant=\"secondary\"\n className=\"border-delicate-border w-full overflow-hidden border-t\"\n onClick={openAdd}\n >\n <Typography>{btnAddText}</Typography>\n <Icon\n type=\"plus\"\n size=\"small\"\n className=\"text-primary-text\"\n />\n </Button>\n )}\n </div>\n );\n};\n\nexport type { CheckboxGroupOption, CheckboxGroupOptionItem, Props as CheckboxGroupProps };\n"],"names":["DEFAULT_MS_SCROLL_TO_BOTTOM","CheckboxGroup","data","errTexts","label","dataEmpty","btnAddText","onChange","scrollContainerRef","useRef","isOpened","openAdd","usePopupControls","value","setValue","useState","allValues","useMemo","values","item","isAllSelected","scrollToBottom","useCallback","handleSelectAll","checked","newData","handleCheckboxChange","categoryId","itemValue","category","handleOptionDelete","handleAddOption","sonner","newItem","index","handleChangeValue","e","jsxs","jsx","Checkbox","Label","Typography","id","name","items","Fragment","lastItem","cn","Button","Icon","InputField"],"mappings":"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"}
|
|
@@ -7,11 +7,11 @@ import { Button as f } from "./components-ui-button-button.js";
|
|
|
7
7
|
import "./components-ui-button-button.styles.js";
|
|
8
8
|
import "./components-ui-card-card.js";
|
|
9
9
|
import { Checkbox as k } from "./components-ui-checkbox-checkbox.js";
|
|
10
|
-
import "phosphor-strokes-icons/icons/CaretDown";
|
|
10
|
+
import "brd-phosphor-strokes-icons/icons/CaretDown";
|
|
11
11
|
import { usePopupControls as R } from "./hooks-usePopupControls.js";
|
|
12
|
-
import "./calendar-
|
|
12
|
+
import "./calendar-B78l3uF9.js";
|
|
13
13
|
import { Icon as b } from "./components-ui-icon-icon.js";
|
|
14
|
-
import "phosphor-strokes-icons/icons";
|
|
14
|
+
import "brd-phosphor-strokes-icons/icons";
|
|
15
15
|
import "./components-ui-combobox-combobox.js";
|
|
16
16
|
import "./components-ui-dialog-dialog.js";
|
|
17
17
|
import { useRef as $, useState as P, useMemo as N, useCallback as a } from "react";
|
|
@@ -34,34 +34,34 @@ import "./components-ui-tabs-tabs.js";
|
|
|
34
34
|
import "./components-ui-tooltip-tooltip.js";
|
|
35
35
|
import { Typography as d } from "./components-ui-typography-typography.js";
|
|
36
36
|
import "./components-ui-typography-typography.styles.js";
|
|
37
|
-
import "phosphor-strokes-icons/icons/CaretLeft";
|
|
38
|
-
import "phosphor-strokes-icons/icons/CaretRight";
|
|
37
|
+
import "brd-phosphor-strokes-icons/icons/CaretLeft";
|
|
38
|
+
import "brd-phosphor-strokes-icons/icons/CaretRight";
|
|
39
39
|
import "./components-app-pagination-app-pagination.styles.js";
|
|
40
|
-
import "phosphor-strokes-icons/icons/CaretUpDown";
|
|
40
|
+
import "brd-phosphor-strokes-icons/icons/CaretUpDown";
|
|
41
41
|
import "./components-app-sidebar-app-sidebar.styles.js";
|
|
42
42
|
import "./components-data-table-data-table.styles.js";
|
|
43
43
|
import "./components-ui-dropdown-menu-dropdown-menu.styles.js";
|
|
44
44
|
import { InputField as z } from "./components-input-field-input-field.js";
|
|
45
|
-
import "phosphor-strokes-icons/icons/Eye";
|
|
46
|
-
import "phosphor-strokes-icons/icons/EyeSlash";
|
|
45
|
+
import "brd-phosphor-strokes-icons/icons/Eye";
|
|
46
|
+
import "brd-phosphor-strokes-icons/icons/EyeSlash";
|
|
47
47
|
import "./components-select-field-select-field.js";
|
|
48
48
|
import "./lodash-FemA_LCk.js";
|
|
49
49
|
import "./chart-DFbmMKiQ.js";
|
|
50
|
-
import "phosphor-strokes-icons/icons/CheckCircle";
|
|
51
|
-
import "phosphor-strokes-icons/icons/Info";
|
|
52
|
-
import "phosphor-strokes-icons/icons/SpinnerGap";
|
|
53
|
-
import "phosphor-strokes-icons/icons/Warning";
|
|
54
|
-
import "phosphor-strokes-icons/icons/X";
|
|
55
|
-
import "phosphor-strokes-icons/icons/XCircle";
|
|
50
|
+
import "brd-phosphor-strokes-icons/icons/CheckCircle";
|
|
51
|
+
import "brd-phosphor-strokes-icons/icons/Info";
|
|
52
|
+
import "brd-phosphor-strokes-icons/icons/SpinnerGap";
|
|
53
|
+
import "brd-phosphor-strokes-icons/icons/Warning";
|
|
54
|
+
import "brd-phosphor-strokes-icons/icons/X";
|
|
55
|
+
import "brd-phosphor-strokes-icons/icons/XCircle";
|
|
56
56
|
import { t as w } from "./index-C4iHL8Gs.js";
|
|
57
57
|
import "./index-C6N9aMq_.js";
|
|
58
|
-
import "phosphor-strokes-icons/icons/Plus";
|
|
59
|
-
import "phosphor-strokes-icons/icons/CaretUp";
|
|
60
|
-
import "phosphor-strokes-icons/icons/EnvelopeSimple";
|
|
61
|
-
import "phosphor-strokes-icons/icons/MaxLogo";
|
|
62
|
-
import "phosphor-strokes-icons/icons/Phone";
|
|
63
|
-
import "phosphor-strokes-icons/icons/TelegramLogo";
|
|
64
|
-
import "phosphor-strokes-icons/icons/WhatsAppLogoFilled";
|
|
58
|
+
import "brd-phosphor-strokes-icons/icons/Plus";
|
|
59
|
+
import "brd-phosphor-strokes-icons/icons/CaretUp";
|
|
60
|
+
import "brd-phosphor-strokes-icons/icons/EnvelopeSimple";
|
|
61
|
+
import "brd-phosphor-strokes-icons/icons/MaxLogo";
|
|
62
|
+
import "brd-phosphor-strokes-icons/icons/Phone";
|
|
63
|
+
import "brd-phosphor-strokes-icons/icons/TelegramLogo";
|
|
64
|
+
import "brd-phosphor-strokes-icons/icons/WhatsAppLogoFilled";
|
|
65
65
|
import "./components-input-phone-input-phone.js";
|
|
66
66
|
import "./components-card-info-card-info.styles.js";
|
|
67
67
|
const H = 50, ot = ({
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");const f=require("./components-ui-dropdown-menu-dropdown-menu.cjs"),y=require("./components-ui-icon-icon.cjs");require("phosphor-strokes-icons/icons");function _(c={}){const{id:i="actions",header:u,renderCell:a,trigger:s,menuItems:t,align:d="end",ariaLabel:m="Открыть действия строки"}=c;return{id:i,header:u,enableSorting:!1,enableHiding:!1,meta:{label:"Действия",headClassName:"w-[4.5625rem]",cellClassName:"w-[4.5625rem]"},cell:({row:l})=>{const n={row:l,data:l.original};if(a)return a(n);const o=typeof t=="function"?t(n):t,p=[{id:`${i}-empty`,type:"item",label:"Нет действий",readOnly:!0}],g=s?s(n):e.jsx(b.Button,{type:"button",variant:"circleGhost",size:"icon-xs","aria-label":m,children:e.jsx(y.Icon,{type:"dots-three","aria-hidden":!0})});return e.jsx("div",{className:"flex justify-end",onClick:r=>r.stopPropagation(),onKeyDown:r=>r.stopPropagation(),role:"presentation",children:e.jsx(f.ConfigurableDropdownMenu,{trigger:g,items:o&&o.length>0?o:p,contentProps:{align:d}})})}}}exports.createDataTableActionsColumn=_;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");const f=require("./components-ui-dropdown-menu-dropdown-menu.cjs"),y=require("./components-ui-icon-icon.cjs");require("brd-phosphor-strokes-icons/icons");function _(c={}){const{id:i="actions",header:u,renderCell:a,trigger:s,menuItems:t,align:d="end",ariaLabel:m="Открыть действия строки"}=c;return{id:i,header:u,enableSorting:!1,enableHiding:!1,meta:{label:"Действия",headClassName:"w-[4.5625rem]",cellClassName:"w-[4.5625rem]"},cell:({row:l})=>{const n={row:l,data:l.original};if(a)return a(n);const o=typeof t=="function"?t(n):t,p=[{id:`${i}-empty`,type:"item",label:"Нет действий",readOnly:!0}],g=s?s(n):e.jsx(b.Button,{type:"button",variant:"circleGhost",size:"icon-xs","aria-label":m,children:e.jsx(y.Icon,{type:"dots-three","aria-hidden":!0})});return e.jsx("div",{className:"flex justify-end",onClick:r=>r.stopPropagation(),onKeyDown:r=>r.stopPropagation(),role:"presentation",children:e.jsx(f.ConfigurableDropdownMenu,{trigger:g,items:o&&o.length>0?o:p,contentProps:{align:d}})})}}}exports.createDataTableActionsColumn=_;
|
|
2
2
|
//# sourceMappingURL=components-data-table-data-table-actions-column.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data-table-data-table-actions-column.cjs","sources":["../src/components/data-table/data-table-actions-column.tsx"],"sourcesContent":["import type { ColumnDef, Row } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ConfigurableDropdownMenu,\n type DropdownMenuConfigNode,\n} from \"@/components/ui/dropdown-menu\";\nimport { Icon } from \"@/components/ui/icon\";\n\ntype DataTableActionsColumnOptions<TData> = {\n id?: string;\n header?: ColumnDef<TData>[\"header\"];\n renderCell?: (ctx: { row: Row<TData>; data: TData }) => ReactNode;\n trigger?: (ctx: { row: Row<TData>; data: TData }) => ReactNode;\n menuItems?:\n | DropdownMenuConfigNode[]\n | ((ctx: { row: Row<TData>; data: TData }) => DropdownMenuConfigNode[]);\n align?: \"start\" | \"center\" | \"end\";\n ariaLabel?: string;\n};\n\nexport function createDataTableActionsColumn<TData>(\n options: DataTableActionsColumnOptions<TData> = {},\n): ColumnDef<TData> {\n const {\n id = \"actions\",\n header,\n renderCell,\n trigger,\n menuItems,\n align = \"end\",\n ariaLabel = \"Открыть действия строки\",\n } = options;\n\n return {\n id,\n header,\n enableSorting: false,\n enableHiding: false,\n meta: {\n label: \"Действия\",\n headClassName: \"w-[4.5625rem]\",\n cellClassName: \"w-[4.5625rem]\",\n },\n cell: ({ row }) => {\n const context = { row, data: row.original };\n\n if (renderCell) {\n return renderCell(context);\n }\n\n const resolvedItems =\n typeof menuItems === \"function\" ? menuItems(context) : menuItems;\n\n const fallbackItems: DropdownMenuConfigNode[] = [\n { id: `${id}-empty`, type: \"item\", label: \"Нет действий\", readOnly: true },\n ];\n\n const resolvedTrigger = trigger ? (\n trigger(context)\n ) : (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-xs\"\n aria-label={ariaLabel}\n >\n <Icon\n type=\"dots-three\"\n aria-hidden\n />\n </Button>\n );\n\n return (\n <div\n className=\"flex justify-end\"\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n <ConfigurableDropdownMenu\n trigger={resolvedTrigger}\n items={\n resolvedItems && resolvedItems.length > 0 ? resolvedItems : fallbackItems\n }\n contentProps={{ align }}\n />\n </div>\n );\n },\n };\n}\n\nexport type { DataTableActionsColumnOptions };\n"],"names":["createDataTableActionsColumn","options","id","header","renderCell","trigger","menuItems","align","ariaLabel","row","context","resolvedItems","fallbackItems","resolvedTrigger","jsx","Button","Icon","event","ConfigurableDropdownMenu"],"mappings":"
|
|
1
|
+
{"version":3,"file":"components-data-table-data-table-actions-column.cjs","sources":["../src/components/data-table/data-table-actions-column.tsx"],"sourcesContent":["import type { ColumnDef, Row } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ConfigurableDropdownMenu,\n type DropdownMenuConfigNode,\n} from \"@/components/ui/dropdown-menu\";\nimport { Icon } from \"@/components/ui/icon\";\n\ntype DataTableActionsColumnOptions<TData> = {\n id?: string;\n header?: ColumnDef<TData>[\"header\"];\n renderCell?: (ctx: { row: Row<TData>; data: TData }) => ReactNode;\n trigger?: (ctx: { row: Row<TData>; data: TData }) => ReactNode;\n menuItems?:\n | DropdownMenuConfigNode[]\n | ((ctx: { row: Row<TData>; data: TData }) => DropdownMenuConfigNode[]);\n align?: \"start\" | \"center\" | \"end\";\n ariaLabel?: string;\n};\n\nexport function createDataTableActionsColumn<TData>(\n options: DataTableActionsColumnOptions<TData> = {},\n): ColumnDef<TData> {\n const {\n id = \"actions\",\n header,\n renderCell,\n trigger,\n menuItems,\n align = \"end\",\n ariaLabel = \"Открыть действия строки\",\n } = options;\n\n return {\n id,\n header,\n enableSorting: false,\n enableHiding: false,\n meta: {\n label: \"Действия\",\n headClassName: \"w-[4.5625rem]\",\n cellClassName: \"w-[4.5625rem]\",\n },\n cell: ({ row }) => {\n const context = { row, data: row.original };\n\n if (renderCell) {\n return renderCell(context);\n }\n\n const resolvedItems =\n typeof menuItems === \"function\" ? menuItems(context) : menuItems;\n\n const fallbackItems: DropdownMenuConfigNode[] = [\n { id: `${id}-empty`, type: \"item\", label: \"Нет действий\", readOnly: true },\n ];\n\n const resolvedTrigger = trigger ? (\n trigger(context)\n ) : (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-xs\"\n aria-label={ariaLabel}\n >\n <Icon\n type=\"dots-three\"\n aria-hidden\n />\n </Button>\n );\n\n return (\n <div\n className=\"flex justify-end\"\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n <ConfigurableDropdownMenu\n trigger={resolvedTrigger}\n items={\n resolvedItems && resolvedItems.length > 0 ? resolvedItems : fallbackItems\n }\n contentProps={{ align }}\n />\n </div>\n );\n },\n };\n}\n\nexport type { DataTableActionsColumnOptions };\n"],"names":["createDataTableActionsColumn","options","id","header","renderCell","trigger","menuItems","align","ariaLabel","row","context","resolvedItems","fallbackItems","resolvedTrigger","jsx","Button","Icon","event","ConfigurableDropdownMenu"],"mappings":"kXAsBO,SAASA,EACdC,EAAgD,GAC9B,CAClB,KAAM,CACJ,GAAAC,EAAK,UACL,OAAAC,EACA,WAAAC,EACA,QAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,MACR,UAAAC,EAAY,yBAAA,EACVP,EAEJ,MAAO,CACL,GAAAC,EACA,OAAAC,EACA,cAAe,GACf,aAAc,GACd,KAAM,CACJ,MAAO,WACP,cAAe,gBACf,cAAe,eAAA,EAEjB,KAAM,CAAC,CAAE,IAAAM,KAAU,CACjB,MAAMC,EAAU,CAAE,IAAAD,EAAK,KAAMA,EAAI,QAAA,EAEjC,GAAIL,EACF,OAAOA,EAAWM,CAAO,EAG3B,MAAMC,EACJ,OAAOL,GAAc,WAAaA,EAAUI,CAAO,EAAIJ,EAEnDM,EAA0C,CAC9C,CAAE,GAAI,GAAGV,CAAE,SAAU,KAAM,OAAQ,MAAO,eAAgB,SAAU,EAAA,CAAK,EAGrEW,EAAkBR,EACtBA,EAAQK,CAAO,EAEfI,EAAAA,IAACC,EAAAA,OAAA,CACC,KAAK,SACL,QAAQ,cACR,KAAK,UACL,aAAYP,EAEZ,SAAAM,EAAAA,IAACE,EAAAA,KAAA,CACC,KAAK,aACL,cAAW,EAAA,CAAA,CACb,CAAA,EAIJ,OACEF,EAAAA,IAAC,MAAA,CACC,UAAU,mBACV,QAAUG,GAAUA,EAAM,gBAAA,EAC1B,UAAYA,GAAUA,EAAM,gBAAA,EAC5B,KAAK,eAEL,SAAAH,EAAAA,IAACI,EAAAA,yBAAA,CACC,QAASL,EACT,MACEF,GAAiBA,EAAc,OAAS,EAAIA,EAAgBC,EAE9D,aAAc,CAAE,MAAAL,CAAA,CAAM,CAAA,CACxB,CAAA,CAGN,CAAA,CAEJ"}
|
|
@@ -3,7 +3,7 @@ import { Button as u } from "./components-ui-button-button.js";
|
|
|
3
3
|
import "./components-ui-button-button.styles.js";
|
|
4
4
|
import { ConfigurableDropdownMenu as b } from "./components-ui-dropdown-menu-dropdown-menu.js";
|
|
5
5
|
import { Icon as h } from "./components-ui-icon-icon.js";
|
|
6
|
-
import "phosphor-strokes-icons/icons";
|
|
6
|
+
import "brd-phosphor-strokes-icons/icons";
|
|
7
7
|
function D(m = {}) {
|
|
8
8
|
const {
|
|
9
9
|
id: a = "actions",
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),k=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");const j=require("./components-ui-dropdown-menu-dropdown-menu.cjs"),d=require("./components-ui-icon-icon.cjs");require("phosphor-strokes-icons/icons");const s=require("./lib-utils.cjs");require("react");const g=require("./components-ui-typography-typography.styles.cjs");function m(t,n){return t.getColumn(n)?.columnDef.meta?.label??n}function w({table:t,columnVisibility:n,onColumnVisibilityChange:o,triggerLabel:u="Колонки",trigger:p,menuLabel:y="Видимость колонок",includeColumnIds:l,excludeColumnIds:a,align:b="end",dropdownWidthClassName:h="w-56"}){const c=t.getAllColumns().filter(e=>typeof e.accessorFn<"u").filter(e=>e.getCanHide()).filter(e=>!l?.length||l.includes(e.id)).filter(e=>!a?.length||!a.includes(e.id));if(!c.length)return null;const f=e=>n?n[e]??!0:t.getColumn(e)?.getIsVisible()??!0,_=(e,r)=>{if(o){o(q=>({...q,[e]:r}));return}t.getColumn(e)?.toggleVisibility(r)},C=p??i.jsxs(k.Button,{type:"button",variant:"outlined",size:"sm",children:[u,i.jsx(d.Icon,{type:"columns-plus-right","aria-hidden":!0})]}),x=c.map(e=>{const r=f(e.id);return{key:e.id,checked:r,itemIndicator:null,className:s.cn("rounded-none px-4 py-2",g.getTypographyClassName("body-sm-regular")),checkedClassName:s.cn("bg-tertiary-bg text-primary-text data-[highlighted]:bg-tertiary-bg",g.getTypographyClassName("body-sm-medium")),label:m(t,e.id),checkedEndAdornment:i.jsx(d.Icon,{type:"check","aria-hidden":!0,size:"small"}),textValue:m(t,e.id)}});return i.jsx(j.CheckboxDropdownMenu,{trigger:C,items:x,onItemCheckedChange:_,keepOpenOnItemSelect:!0,contentProps:{align:b,"aria-label":y,className:s.cn(h,`border-inp-focus-border bg-primary-bg overflow-hidden rounded-xl border py-2
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),k=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");const j=require("./components-ui-dropdown-menu-dropdown-menu.cjs"),d=require("./components-ui-icon-icon.cjs");require("brd-phosphor-strokes-icons/icons");const s=require("./lib-utils.cjs");require("react");const g=require("./components-ui-typography-typography.styles.cjs");function m(t,n){return t.getColumn(n)?.columnDef.meta?.label??n}function w({table:t,columnVisibility:n,onColumnVisibilityChange:o,triggerLabel:u="Колонки",trigger:p,menuLabel:y="Видимость колонок",includeColumnIds:l,excludeColumnIds:a,align:b="end",dropdownWidthClassName:h="w-56"}){const c=t.getAllColumns().filter(e=>typeof e.accessorFn<"u").filter(e=>e.getCanHide()).filter(e=>!l?.length||l.includes(e.id)).filter(e=>!a?.length||!a.includes(e.id));if(!c.length)return null;const f=e=>n?n[e]??!0:t.getColumn(e)?.getIsVisible()??!0,_=(e,r)=>{if(o){o(q=>({...q,[e]:r}));return}t.getColumn(e)?.toggleVisibility(r)},C=p??i.jsxs(k.Button,{type:"button",variant:"outlined",size:"sm",children:[u,i.jsx(d.Icon,{type:"columns-plus-right","aria-hidden":!0})]}),x=c.map(e=>{const r=f(e.id);return{key:e.id,checked:r,itemIndicator:null,className:s.cn("rounded-none px-4 py-2",g.getTypographyClassName("body-sm-regular")),checkedClassName:s.cn("bg-tertiary-bg text-primary-text data-[highlighted]:bg-tertiary-bg",g.getTypographyClassName("body-sm-medium")),label:m(t,e.id),checkedEndAdornment:i.jsx(d.Icon,{type:"check","aria-hidden":!0,size:"small"}),textValue:m(t,e.id)}});return i.jsx(j.CheckboxDropdownMenu,{trigger:C,items:x,onItemCheckedChange:_,keepOpenOnItemSelect:!0,contentProps:{align:b,"aria-label":y,className:s.cn(h,`border-inp-focus-border bg-primary-bg overflow-hidden rounded-xl border py-2
|
|
2
2
|
shadow-none`)}})}exports.DataTableColumnVisibility=w;
|
|
3
3
|
//# sourceMappingURL=components-data-table-data-table-column-visibility.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data-table-data-table-column-visibility.cjs","sources":["../src/components/data-table/data-table-column-visibility.tsx"],"sourcesContent":["import type { Table, Updater, VisibilityState } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { CheckboxDropdownMenu } from \"@/components/ui/dropdown-menu\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\nimport { getTypographyClassName } from \"../ui/typography\";\n\ntype DataTableColumnVisibilityProps<TData> = {\n table: Table<TData>;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (updater: Updater<VisibilityState>) => void;\n triggerLabel?: string;\n trigger?: ReactNode;\n menuLabel?: string;\n includeColumnIds?: string[];\n excludeColumnIds?: string[];\n align?: \"start\" | \"center\" | \"end\";\n dropdownWidthClassName?: string;\n};\n\nfunction getColumnTitle<TData>(table: Table<TData>, columnId: string): string {\n const column = table.getColumn(columnId);\n const meta = column?.columnDef.meta as { label?: string } | undefined;\n return meta?.label ?? columnId;\n}\n\nfunction DataTableColumnVisibility<TData>({\n table,\n columnVisibility,\n onColumnVisibilityChange,\n triggerLabel = \"Колонки\",\n trigger,\n menuLabel = \"Видимость колонок\",\n includeColumnIds,\n excludeColumnIds,\n align = \"end\",\n dropdownWidthClassName = \"w-56\",\n}: DataTableColumnVisibilityProps<TData>) {\n const hideableColumns = table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== \"undefined\")\n .filter((column) => column.getCanHide())\n .filter((column) => !includeColumnIds?.length || includeColumnIds.includes(column.id))\n .filter(\n (column) => !excludeColumnIds?.length || !excludeColumnIds.includes(column.id),\n );\n\n if (!hideableColumns.length) {\n return null;\n }\n\n const getIsColumnVisible = (columnId: string) =>\n columnVisibility\n ? (columnVisibility[columnId] ?? true)\n : (table.getColumn(columnId)?.getIsVisible() ?? true);\n\n const toggleColumnVisibility = (columnId: string, isVisible: boolean) => {\n if (onColumnVisibilityChange) {\n onColumnVisibilityChange((previousState) => ({\n ...previousState,\n [columnId]: isVisible,\n }));\n return;\n }\n\n table.getColumn(columnId)?.toggleVisibility(isVisible);\n };\n\n const triggerNode = trigger ?? (\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"sm\"\n >\n {triggerLabel}\n <Icon\n type=\"columns-plus-right\"\n aria-hidden\n />\n </Button>\n );\n\n const items = hideableColumns.map((column) => {\n const isVisible = getIsColumnVisible(column.id);\n\n return {\n key: column.id,\n checked: isVisible,\n itemIndicator: null,\n className: cn(\"rounded-none px-4 py-2\", getTypographyClassName(\"body-sm-regular\")),\n checkedClassName: cn(\n \"bg-tertiary-bg text-primary-text data-[highlighted]:bg-tertiary-bg\",\n getTypographyClassName(\"body-sm-medium\"),\n ),\n label: getColumnTitle(table, column.id),\n checkedEndAdornment: (\n <Icon\n type=\"check\"\n aria-hidden\n size=\"small\"\n />\n ),\n textValue: getColumnTitle(table, column.id),\n };\n });\n\n return (\n <CheckboxDropdownMenu\n trigger={triggerNode}\n items={items}\n onItemCheckedChange={toggleColumnVisibility}\n keepOpenOnItemSelect\n contentProps={{\n align,\n \"aria-label\": menuLabel,\n className: cn(\n dropdownWidthClassName,\n `border-inp-focus-border bg-primary-bg overflow-hidden rounded-xl border py-2\n shadow-none`,\n ),\n }}\n />\n );\n}\n\nexport { DataTableColumnVisibility };\nexport type { DataTableColumnVisibilityProps };\n"],"names":["getColumnTitle","table","columnId","DataTableColumnVisibility","columnVisibility","onColumnVisibilityChange","triggerLabel","trigger","menuLabel","includeColumnIds","excludeColumnIds","align","dropdownWidthClassName","hideableColumns","column","getIsColumnVisible","toggleColumnVisibility","isVisible","previousState","triggerNode","jsxs","Button","jsx","Icon","items","cn","getTypographyClassName","CheckboxDropdownMenu"],"mappings":"
|
|
1
|
+
{"version":3,"file":"components-data-table-data-table-column-visibility.cjs","sources":["../src/components/data-table/data-table-column-visibility.tsx"],"sourcesContent":["import type { Table, Updater, VisibilityState } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { CheckboxDropdownMenu } from \"@/components/ui/dropdown-menu\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\nimport { getTypographyClassName } from \"../ui/typography\";\n\ntype DataTableColumnVisibilityProps<TData> = {\n table: Table<TData>;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (updater: Updater<VisibilityState>) => void;\n triggerLabel?: string;\n trigger?: ReactNode;\n menuLabel?: string;\n includeColumnIds?: string[];\n excludeColumnIds?: string[];\n align?: \"start\" | \"center\" | \"end\";\n dropdownWidthClassName?: string;\n};\n\nfunction getColumnTitle<TData>(table: Table<TData>, columnId: string): string {\n const column = table.getColumn(columnId);\n const meta = column?.columnDef.meta as { label?: string } | undefined;\n return meta?.label ?? columnId;\n}\n\nfunction DataTableColumnVisibility<TData>({\n table,\n columnVisibility,\n onColumnVisibilityChange,\n triggerLabel = \"Колонки\",\n trigger,\n menuLabel = \"Видимость колонок\",\n includeColumnIds,\n excludeColumnIds,\n align = \"end\",\n dropdownWidthClassName = \"w-56\",\n}: DataTableColumnVisibilityProps<TData>) {\n const hideableColumns = table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== \"undefined\")\n .filter((column) => column.getCanHide())\n .filter((column) => !includeColumnIds?.length || includeColumnIds.includes(column.id))\n .filter(\n (column) => !excludeColumnIds?.length || !excludeColumnIds.includes(column.id),\n );\n\n if (!hideableColumns.length) {\n return null;\n }\n\n const getIsColumnVisible = (columnId: string) =>\n columnVisibility\n ? (columnVisibility[columnId] ?? true)\n : (table.getColumn(columnId)?.getIsVisible() ?? true);\n\n const toggleColumnVisibility = (columnId: string, isVisible: boolean) => {\n if (onColumnVisibilityChange) {\n onColumnVisibilityChange((previousState) => ({\n ...previousState,\n [columnId]: isVisible,\n }));\n return;\n }\n\n table.getColumn(columnId)?.toggleVisibility(isVisible);\n };\n\n const triggerNode = trigger ?? (\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"sm\"\n >\n {triggerLabel}\n <Icon\n type=\"columns-plus-right\"\n aria-hidden\n />\n </Button>\n );\n\n const items = hideableColumns.map((column) => {\n const isVisible = getIsColumnVisible(column.id);\n\n return {\n key: column.id,\n checked: isVisible,\n itemIndicator: null,\n className: cn(\"rounded-none px-4 py-2\", getTypographyClassName(\"body-sm-regular\")),\n checkedClassName: cn(\n \"bg-tertiary-bg text-primary-text data-[highlighted]:bg-tertiary-bg\",\n getTypographyClassName(\"body-sm-medium\"),\n ),\n label: getColumnTitle(table, column.id),\n checkedEndAdornment: (\n <Icon\n type=\"check\"\n aria-hidden\n size=\"small\"\n />\n ),\n textValue: getColumnTitle(table, column.id),\n };\n });\n\n return (\n <CheckboxDropdownMenu\n trigger={triggerNode}\n items={items}\n onItemCheckedChange={toggleColumnVisibility}\n keepOpenOnItemSelect\n contentProps={{\n align,\n \"aria-label\": menuLabel,\n className: cn(\n dropdownWidthClassName,\n `border-inp-focus-border bg-primary-bg overflow-hidden rounded-xl border py-2\n shadow-none`,\n ),\n }}\n />\n );\n}\n\nexport { DataTableColumnVisibility };\nexport type { DataTableColumnVisibilityProps };\n"],"names":["getColumnTitle","table","columnId","DataTableColumnVisibility","columnVisibility","onColumnVisibilityChange","triggerLabel","trigger","menuLabel","includeColumnIds","excludeColumnIds","align","dropdownWidthClassName","hideableColumns","column","getIsColumnVisible","toggleColumnVisibility","isVisible","previousState","triggerNode","jsxs","Button","jsx","Icon","items","cn","getTypographyClassName","CheckboxDropdownMenu"],"mappings":"0eAsBA,SAASA,EAAsBC,EAAqBC,EAA0B,CAG5E,OAFeD,EAAM,UAAUC,CAAQ,GAClB,UAAU,MAClB,OAASA,CACxB,CAEA,SAASC,EAAiC,CACxC,MAAAF,EACA,iBAAAG,EACA,yBAAAC,EACA,aAAAC,EAAe,UACf,QAAAC,EACA,UAAAC,EAAY,oBACZ,iBAAAC,EACA,iBAAAC,EACA,MAAAC,EAAQ,MACR,uBAAAC,EAAyB,MAC3B,EAA0C,CACxC,MAAMC,EAAkBZ,EACrB,cAAA,EACA,OAAQa,GAAW,OAAOA,EAAO,WAAe,GAAW,EAC3D,OAAQA,GAAWA,EAAO,WAAA,CAAY,EACtC,OAAQA,GAAW,CAACL,GAAkB,QAAUA,EAAiB,SAASK,EAAO,EAAE,CAAC,EACpF,OACEA,GAAW,CAACJ,GAAkB,QAAU,CAACA,EAAiB,SAASI,EAAO,EAAE,CAAA,EAGjF,GAAI,CAACD,EAAgB,OACnB,OAAO,KAGT,MAAME,EAAsBb,GAC1BE,EACKA,EAAiBF,CAAQ,GAAK,GAC9BD,EAAM,UAAUC,CAAQ,GAAG,gBAAkB,GAE9Cc,EAAyB,CAACd,EAAkBe,IAAuB,CACvE,GAAIZ,EAA0B,CAC5BA,EAA0Ba,IAAmB,CAC3C,GAAGA,EACH,CAAChB,CAAQ,EAAGe,CAAA,EACZ,EACF,MACF,CAEAhB,EAAM,UAAUC,CAAQ,GAAG,iBAAiBe,CAAS,CACvD,EAEME,EAAcZ,GAClBa,EAAAA,KAACC,EAAAA,OAAA,CACC,KAAK,SACL,QAAQ,WACR,KAAK,KAEJ,SAAA,CAAAf,EACDgB,EAAAA,IAACC,EAAAA,KAAA,CACC,KAAK,qBACL,cAAW,EAAA,CAAA,CACb,CAAA,CAAA,EAIEC,EAAQX,EAAgB,IAAKC,GAAW,CAC5C,MAAMG,EAAYF,EAAmBD,EAAO,EAAE,EAE9C,MAAO,CACL,IAAKA,EAAO,GACZ,QAASG,EACT,cAAe,KACf,UAAWQ,EAAAA,GAAG,yBAA0BC,EAAAA,uBAAuB,iBAAiB,CAAC,EACjF,iBAAkBD,EAAAA,GAChB,qEACAC,EAAAA,uBAAuB,gBAAgB,CAAA,EAEzC,MAAO1B,EAAeC,EAAOa,EAAO,EAAE,EACtC,oBACEQ,EAAAA,IAACC,EAAAA,KAAA,CACC,KAAK,QACL,cAAW,GACX,KAAK,OAAA,CAAA,EAGT,UAAWvB,EAAeC,EAAOa,EAAO,EAAE,CAAA,CAE9C,CAAC,EAED,OACEQ,EAAAA,IAACK,EAAAA,qBAAA,CACC,QAASR,EACT,MAAAK,EACA,oBAAqBR,EACrB,qBAAoB,GACpB,aAAc,CACZ,MAAAL,EACA,aAAcH,EACd,UAAWiB,EAAAA,GACTb,EACA;AAAA,sBAAA,CAEF,CACF,CAAA,CAGN"}
|
|
@@ -3,7 +3,7 @@ import { Button as V } from "./components-ui-button-button.js";
|
|
|
3
3
|
import "./components-ui-button-button.styles.js";
|
|
4
4
|
import { CheckboxDropdownMenu as D } from "./components-ui-dropdown-menu-dropdown-menu.js";
|
|
5
5
|
import { Icon as g } from "./components-ui-icon-icon.js";
|
|
6
|
-
import "phosphor-strokes-icons/icons";
|
|
6
|
+
import "brd-phosphor-strokes-icons/icons";
|
|
7
7
|
import { cn as l } from "./lib-utils.js";
|
|
8
8
|
import "react";
|
|
9
9
|
import { getTypographyClassName as u } from "./components-ui-typography-typography.styles.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),p=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");const A=require("./components-ui-dropdown-menu-dropdown-menu.cjs"),b=require("./components-ui-icon-icon.cjs");require("phosphor-strokes-icons/icons");const S=require("./lib-utils.cjs"),q=require("./components-data-table-data-table-actions-column.cjs");function f(e,o){if(e.hidden)return null;if(e.type==="separator")return{id:e.id,type:"separator"};if(e.type==="label")return{id:e.id,type:"label",label:e.label};const c=e.children?.map(i=>f(i,o)).filter(i=>i!==null);return{id:e.id,type:"item",label:e.label,disabled:e.disabled,readOnly:e.readOnly,alert:e.alert,icon:e.icon,iconType:e.iconType,shortcut:e.shortcut,children:c,onSelect:e.onSelect?()=>e.onSelect?.(o):void 0}}function D(e={}){const{id:o="actions",header:c,align:i="end",editingRowId:j,trigger:y,actions:s,onStartEdit:h,onSaveEdit:d,onCancelEdit:u,onDelete:g,labels:l,includeDefaultActions:m=!0}=e;return q.createDataTableActionsColumn({id:o,header:c,renderCell:({row:r,data:_})=>{const a={row:r,data:_};if(j===r.id&&(d||u))return n.jsxs("div",{className:"flex flex-col items-center gap-6",onClick:t=>t.stopPropagation(),onKeyDown:t=>t.stopPropagation(),role:"presentation",children:[d?n.jsx(p.Button,{type:"button",variant:"circleGhost",size:"icon-md","aria-label":l?.saveAriaLabel??"Сохранить изменения",onClick:()=>d(a),children:n.jsx(b.Icon,{type:"check-circle",className:"text-success-text","aria-hidden":!0})}):null,u?n.jsx(p.Button,{type:"button",variant:"circleGhost",size:"icon-md","aria-label":l?.cancelAriaLabel??"Отменить редактирование",onClick:()=>u(a),children:n.jsx(b.Icon,{type:"x-circle",className:"text-error-text","aria-hidden":!0})}):null]});const v=typeof s=="function"?s(a):s??[],C=[...h?[{id:`${o}-edit-${r.id}`,label:l?.edit??"Редактировать",onSelect:h,iconType:"pencil-simple"}]:[],...g?[{type:"separator"},{id:`${o}-delete-${r.id}`,label:l?.delete??"Удалить",iconType:"trash",alert:!0,onSelect:g}]:[]],x=[...v,...m?C:[]].map(t=>f(t,a)).filter(t=>t!==null),T=y?y(a):n.jsx(p.Button,{type:"button",variant:"circleGhost",size:"icon-xs","aria-label":"Открыть действия строки",children:n.jsx(b.Icon,{type:"dots-three","aria-hidden":!0})});return n.jsx("div",{className:S.cn("flex justify-end"),onClick:t=>t.stopPropagation(),onKeyDown:t=>t.stopPropagation(),role:"presentation",children:n.jsx(A.ConfigurableDropdownMenu,{trigger:T,items:x.length>0?x:[{id:`${o}-empty-${r.id}`,type:"item",label:l?.empty??"Нет действий",readOnly:!0}],contentProps:{align:i}})})}})}exports.createDataTableRowActionsColumn=D;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),p=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");const A=require("./components-ui-dropdown-menu-dropdown-menu.cjs"),b=require("./components-ui-icon-icon.cjs");require("brd-phosphor-strokes-icons/icons");const S=require("./lib-utils.cjs"),q=require("./components-data-table-data-table-actions-column.cjs");function f(e,o){if(e.hidden)return null;if(e.type==="separator")return{id:e.id,type:"separator"};if(e.type==="label")return{id:e.id,type:"label",label:e.label};const c=e.children?.map(i=>f(i,o)).filter(i=>i!==null);return{id:e.id,type:"item",label:e.label,disabled:e.disabled,readOnly:e.readOnly,alert:e.alert,icon:e.icon,iconType:e.iconType,shortcut:e.shortcut,children:c,onSelect:e.onSelect?()=>e.onSelect?.(o):void 0}}function D(e={}){const{id:o="actions",header:c,align:i="end",editingRowId:j,trigger:y,actions:s,onStartEdit:h,onSaveEdit:d,onCancelEdit:u,onDelete:g,labels:l,includeDefaultActions:m=!0}=e;return q.createDataTableActionsColumn({id:o,header:c,renderCell:({row:r,data:_})=>{const a={row:r,data:_};if(j===r.id&&(d||u))return n.jsxs("div",{className:"flex flex-col items-center gap-6",onClick:t=>t.stopPropagation(),onKeyDown:t=>t.stopPropagation(),role:"presentation",children:[d?n.jsx(p.Button,{type:"button",variant:"circleGhost",size:"icon-md","aria-label":l?.saveAriaLabel??"Сохранить изменения",onClick:()=>d(a),children:n.jsx(b.Icon,{type:"check-circle",className:"text-success-text","aria-hidden":!0})}):null,u?n.jsx(p.Button,{type:"button",variant:"circleGhost",size:"icon-md","aria-label":l?.cancelAriaLabel??"Отменить редактирование",onClick:()=>u(a),children:n.jsx(b.Icon,{type:"x-circle",className:"text-error-text","aria-hidden":!0})}):null]});const v=typeof s=="function"?s(a):s??[],C=[...h?[{id:`${o}-edit-${r.id}`,label:l?.edit??"Редактировать",onSelect:h,iconType:"pencil-simple"}]:[],...g?[{type:"separator"},{id:`${o}-delete-${r.id}`,label:l?.delete??"Удалить",iconType:"trash",alert:!0,onSelect:g}]:[]],x=[...v,...m?C:[]].map(t=>f(t,a)).filter(t=>t!==null),T=y?y(a):n.jsx(p.Button,{type:"button",variant:"circleGhost",size:"icon-xs","aria-label":"Открыть действия строки",children:n.jsx(b.Icon,{type:"dots-three","aria-hidden":!0})});return n.jsx("div",{className:S.cn("flex justify-end"),onClick:t=>t.stopPropagation(),onKeyDown:t=>t.stopPropagation(),role:"presentation",children:n.jsx(A.ConfigurableDropdownMenu,{trigger:T,items:x.length>0?x:[{id:`${o}-empty-${r.id}`,type:"item",label:l?.empty??"Нет действий",readOnly:!0}],contentProps:{align:i}})})}})}exports.createDataTableRowActionsColumn=D;
|
|
2
2
|
//# sourceMappingURL=components-data-table-data-table-row-actions-column.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data-table-data-table-row-actions-column.cjs","sources":["../src/components/data-table/data-table-row-actions-column.tsx"],"sourcesContent":["import type { ColumnDef, Row } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ConfigurableDropdownMenu,\n type DropdownMenuConfigNode,\n} from \"@/components/ui/dropdown-menu\";\nimport { Icon } from \"@/components/ui/icon\";\nimport type { IconType } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\n\nimport { createDataTableActionsColumn } from \"./data-table-actions-column\";\n\ntype DataTableRowActionContext<TData> = {\n row: Row<TData>;\n data: TData;\n};\n\ntype DataTableRowActionBase = {\n hidden?: boolean;\n id?: string;\n};\n\ntype DataTableRowActionLabel = DataTableRowActionBase & {\n label: string;\n type: \"label\";\n};\n\ntype DataTableRowActionSeparator = DataTableRowActionBase & {\n type: \"separator\";\n};\n\ntype DataTableRowActionItem<TData> = DataTableRowActionBase & {\n type?: \"item\";\n label: string;\n icon?: ReactNode;\n iconType?: IconType;\n shortcut?: string;\n disabled?: boolean;\n readOnly?: boolean;\n alert?: boolean;\n children?: DataTableRowActionNode<TData>[];\n onSelect?: (ctx: DataTableRowActionContext<TData>) => void;\n};\n\ntype DataTableRowActionNode<TData> =\n | DataTableRowActionItem<TData>\n | DataTableRowActionLabel\n | DataTableRowActionSeparator;\n\ntype DataTableRowActionsColumnOptions<TData> = {\n id?: string;\n header?: ColumnDef<TData>[\"header\"];\n align?: \"start\" | \"center\" | \"end\";\n editingRowId?: string | null;\n trigger?: (ctx: DataTableRowActionContext<TData>) => ReactNode;\n actions?:\n | DataTableRowActionNode<TData>[]\n | ((ctx: DataTableRowActionContext<TData>) => DataTableRowActionNode<TData>[]);\n onStartEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onSaveEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onCancelEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onDelete?: (ctx: DataTableRowActionContext<TData>) => void;\n includeDefaultActions?: boolean;\n labels?: {\n cancelAriaLabel?: string;\n delete?: string;\n edit?: string;\n empty?: string;\n saveAriaLabel?: string;\n };\n};\n\nfunction mapRowActionNode<TData>(\n item: DataTableRowActionNode<TData>,\n ctx: DataTableRowActionContext<TData>,\n): DropdownMenuConfigNode | null {\n if (item.hidden) {\n return null;\n }\n\n if (item.type === \"separator\") {\n return {\n id: item.id,\n type: \"separator\",\n };\n }\n\n if (item.type === \"label\") {\n return {\n id: item.id,\n type: \"label\",\n label: item.label,\n };\n }\n\n const children = item.children\n ?.map((child) => mapRowActionNode(child, ctx))\n .filter((child): child is DropdownMenuConfigNode => child !== null);\n\n return {\n id: item.id,\n type: \"item\",\n label: item.label,\n disabled: item.disabled,\n readOnly: item.readOnly,\n alert: item.alert,\n icon: item.icon,\n iconType: item.iconType,\n shortcut: item.shortcut,\n children,\n onSelect: item.onSelect ? () => item.onSelect?.(ctx) : undefined,\n };\n}\n\nexport function createDataTableRowActionsColumn<TData>(\n options: DataTableRowActionsColumnOptions<TData> = {},\n): ColumnDef<TData> {\n const {\n id = \"actions\",\n header,\n align = \"end\",\n editingRowId,\n trigger,\n actions,\n onStartEdit,\n onSaveEdit,\n onCancelEdit,\n onDelete,\n labels,\n includeDefaultActions = true,\n } = options;\n\n return createDataTableActionsColumn<TData>({\n id,\n header,\n renderCell: ({ row, data }) => {\n const ctx = { row, data };\n const isEditingRow = editingRowId === row.id;\n\n if (isEditingRow && (onSaveEdit || onCancelEdit)) {\n return (\n <div\n className=\"flex flex-col items-center gap-6\"\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n {onSaveEdit ? (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-md\"\n aria-label={labels?.saveAriaLabel ?? \"Сохранить изменения\"}\n onClick={() => onSaveEdit(ctx)}\n >\n <Icon\n type=\"check-circle\"\n className=\"text-success-text\"\n aria-hidden\n />\n </Button>\n ) : null}\n {onCancelEdit ? (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-md\"\n aria-label={labels?.cancelAriaLabel ?? \"Отменить редактирование\"}\n onClick={() => onCancelEdit(ctx)}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-error-text\"\n aria-hidden\n />\n </Button>\n ) : null}\n </div>\n );\n }\n\n const resolvedActions =\n typeof actions === \"function\" ? actions(ctx) : (actions ?? []);\n const defaultActions: DataTableRowActionNode<TData>[] = [\n ...(onStartEdit\n ? [\n {\n id: `${id}-edit-${row.id}`,\n label: labels?.edit ?? \"Редактировать\",\n onSelect: onStartEdit,\n iconType: \"pencil-simple\",\n } satisfies DataTableRowActionItem<TData>,\n ]\n : []),\n ...(onDelete\n ? [\n { type: \"separator\" } satisfies DataTableRowActionSeparator,\n {\n id: `${id}-delete-${row.id}`,\n label: labels?.delete ?? \"Удалить\",\n iconType: \"trash\",\n alert: true,\n onSelect: onDelete,\n } satisfies DataTableRowActionItem<TData>,\n ]\n : []),\n ];\n\n const menuItems = [\n ...resolvedActions,\n ...(includeDefaultActions ? defaultActions : []),\n ]\n .map((item) => mapRowActionNode(item, ctx))\n .filter((item): item is DropdownMenuConfigNode => item !== null);\n\n const resolvedTrigger = trigger ? (\n trigger(ctx)\n ) : (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-xs\"\n aria-label=\"Открыть действия строки\"\n >\n <Icon\n type=\"dots-three\"\n aria-hidden\n />\n </Button>\n );\n\n return (\n <div\n className={cn(\"flex justify-end\")}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n <ConfigurableDropdownMenu\n trigger={resolvedTrigger}\n items={\n menuItems.length > 0\n ? menuItems\n : [\n {\n id: `${id}-empty-${row.id}`,\n type: \"item\",\n label: labels?.empty ?? \"Нет действий\",\n readOnly: true,\n },\n ]\n }\n contentProps={{ align }}\n />\n </div>\n );\n },\n });\n}\n\nexport type {\n DataTableRowActionContext,\n DataTableRowActionItem,\n DataTableRowActionLabel,\n DataTableRowActionNode,\n DataTableRowActionSeparator,\n DataTableRowActionsColumnOptions,\n};\n"],"names":["mapRowActionNode","item","ctx","children","child","createDataTableRowActionsColumn","options","id","header","align","editingRowId","trigger","actions","onStartEdit","onSaveEdit","onCancelEdit","onDelete","labels","includeDefaultActions","createDataTableActionsColumn","row","data","jsxs","event","jsx","Button","Icon","resolvedActions","defaultActions","menuItems","resolvedTrigger","cn","ConfigurableDropdownMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-data-table-data-table-row-actions-column.cjs","sources":["../src/components/data-table/data-table-row-actions-column.tsx"],"sourcesContent":["import type { ColumnDef, Row } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ConfigurableDropdownMenu,\n type DropdownMenuConfigNode,\n} from \"@/components/ui/dropdown-menu\";\nimport { Icon } from \"@/components/ui/icon\";\nimport type { IconType } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\n\nimport { createDataTableActionsColumn } from \"./data-table-actions-column\";\n\ntype DataTableRowActionContext<TData> = {\n row: Row<TData>;\n data: TData;\n};\n\ntype DataTableRowActionBase = {\n hidden?: boolean;\n id?: string;\n};\n\ntype DataTableRowActionLabel = DataTableRowActionBase & {\n label: string;\n type: \"label\";\n};\n\ntype DataTableRowActionSeparator = DataTableRowActionBase & {\n type: \"separator\";\n};\n\ntype DataTableRowActionItem<TData> = DataTableRowActionBase & {\n type?: \"item\";\n label: string;\n icon?: ReactNode;\n iconType?: IconType;\n shortcut?: string;\n disabled?: boolean;\n readOnly?: boolean;\n alert?: boolean;\n children?: DataTableRowActionNode<TData>[];\n onSelect?: (ctx: DataTableRowActionContext<TData>) => void;\n};\n\ntype DataTableRowActionNode<TData> =\n | DataTableRowActionItem<TData>\n | DataTableRowActionLabel\n | DataTableRowActionSeparator;\n\ntype DataTableRowActionsColumnOptions<TData> = {\n id?: string;\n header?: ColumnDef<TData>[\"header\"];\n align?: \"start\" | \"center\" | \"end\";\n editingRowId?: string | null;\n trigger?: (ctx: DataTableRowActionContext<TData>) => ReactNode;\n actions?:\n | DataTableRowActionNode<TData>[]\n | ((ctx: DataTableRowActionContext<TData>) => DataTableRowActionNode<TData>[]);\n onStartEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onSaveEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onCancelEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onDelete?: (ctx: DataTableRowActionContext<TData>) => void;\n includeDefaultActions?: boolean;\n labels?: {\n cancelAriaLabel?: string;\n delete?: string;\n edit?: string;\n empty?: string;\n saveAriaLabel?: string;\n };\n};\n\nfunction mapRowActionNode<TData>(\n item: DataTableRowActionNode<TData>,\n ctx: DataTableRowActionContext<TData>,\n): DropdownMenuConfigNode | null {\n if (item.hidden) {\n return null;\n }\n\n if (item.type === \"separator\") {\n return {\n id: item.id,\n type: \"separator\",\n };\n }\n\n if (item.type === \"label\") {\n return {\n id: item.id,\n type: \"label\",\n label: item.label,\n };\n }\n\n const children = item.children\n ?.map((child) => mapRowActionNode(child, ctx))\n .filter((child): child is DropdownMenuConfigNode => child !== null);\n\n return {\n id: item.id,\n type: \"item\",\n label: item.label,\n disabled: item.disabled,\n readOnly: item.readOnly,\n alert: item.alert,\n icon: item.icon,\n iconType: item.iconType,\n shortcut: item.shortcut,\n children,\n onSelect: item.onSelect ? () => item.onSelect?.(ctx) : undefined,\n };\n}\n\nexport function createDataTableRowActionsColumn<TData>(\n options: DataTableRowActionsColumnOptions<TData> = {},\n): ColumnDef<TData> {\n const {\n id = \"actions\",\n header,\n align = \"end\",\n editingRowId,\n trigger,\n actions,\n onStartEdit,\n onSaveEdit,\n onCancelEdit,\n onDelete,\n labels,\n includeDefaultActions = true,\n } = options;\n\n return createDataTableActionsColumn<TData>({\n id,\n header,\n renderCell: ({ row, data }) => {\n const ctx = { row, data };\n const isEditingRow = editingRowId === row.id;\n\n if (isEditingRow && (onSaveEdit || onCancelEdit)) {\n return (\n <div\n className=\"flex flex-col items-center gap-6\"\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n {onSaveEdit ? (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-md\"\n aria-label={labels?.saveAriaLabel ?? \"Сохранить изменения\"}\n onClick={() => onSaveEdit(ctx)}\n >\n <Icon\n type=\"check-circle\"\n className=\"text-success-text\"\n aria-hidden\n />\n </Button>\n ) : null}\n {onCancelEdit ? (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-md\"\n aria-label={labels?.cancelAriaLabel ?? \"Отменить редактирование\"}\n onClick={() => onCancelEdit(ctx)}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-error-text\"\n aria-hidden\n />\n </Button>\n ) : null}\n </div>\n );\n }\n\n const resolvedActions =\n typeof actions === \"function\" ? actions(ctx) : (actions ?? []);\n const defaultActions: DataTableRowActionNode<TData>[] = [\n ...(onStartEdit\n ? [\n {\n id: `${id}-edit-${row.id}`,\n label: labels?.edit ?? \"Редактировать\",\n onSelect: onStartEdit,\n iconType: \"pencil-simple\",\n } satisfies DataTableRowActionItem<TData>,\n ]\n : []),\n ...(onDelete\n ? [\n { type: \"separator\" } satisfies DataTableRowActionSeparator,\n {\n id: `${id}-delete-${row.id}`,\n label: labels?.delete ?? \"Удалить\",\n iconType: \"trash\",\n alert: true,\n onSelect: onDelete,\n } satisfies DataTableRowActionItem<TData>,\n ]\n : []),\n ];\n\n const menuItems = [\n ...resolvedActions,\n ...(includeDefaultActions ? defaultActions : []),\n ]\n .map((item) => mapRowActionNode(item, ctx))\n .filter((item): item is DropdownMenuConfigNode => item !== null);\n\n const resolvedTrigger = trigger ? (\n trigger(ctx)\n ) : (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-xs\"\n aria-label=\"Открыть действия строки\"\n >\n <Icon\n type=\"dots-three\"\n aria-hidden\n />\n </Button>\n );\n\n return (\n <div\n className={cn(\"flex justify-end\")}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n <ConfigurableDropdownMenu\n trigger={resolvedTrigger}\n items={\n menuItems.length > 0\n ? menuItems\n : [\n {\n id: `${id}-empty-${row.id}`,\n type: \"item\",\n label: labels?.empty ?? \"Нет действий\",\n readOnly: true,\n },\n ]\n }\n contentProps={{ align }}\n />\n </div>\n );\n },\n });\n}\n\nexport type {\n DataTableRowActionContext,\n DataTableRowActionItem,\n DataTableRowActionLabel,\n DataTableRowActionNode,\n DataTableRowActionSeparator,\n DataTableRowActionsColumnOptions,\n};\n"],"names":["mapRowActionNode","item","ctx","children","child","createDataTableRowActionsColumn","options","id","header","align","editingRowId","trigger","actions","onStartEdit","onSaveEdit","onCancelEdit","onDelete","labels","includeDefaultActions","createDataTableActionsColumn","row","data","jsxs","event","jsx","Button","Icon","resolvedActions","defaultActions","menuItems","resolvedTrigger","cn","ConfigurableDropdownMenu"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Button as u } from "./components-ui-button-button.js";
|
|
|
3
3
|
import "./components-ui-button-button.styles.js";
|
|
4
4
|
import { ConfigurableDropdownMenu as $ } from "./components-ui-dropdown-menu-dropdown-menu.js";
|
|
5
5
|
import { Icon as y } from "./components-ui-icon-icon.js";
|
|
6
|
-
import "phosphor-strokes-icons/icons";
|
|
6
|
+
import "brd-phosphor-strokes-icons/icons";
|
|
7
7
|
import { cn as k } from "./lib-utils.js";
|
|
8
8
|
import { createDataTableActionsColumn as E } from "./components-data-table-data-table-actions-column.js";
|
|
9
9
|
function g(e, o) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("./lib-utils.cjs"),U=require("react"),V=require("./index-DJD-8LQA.cjs"),H=require("phosphor-strokes-icons/icons/Plus"),J=require("phosphor-strokes-icons/icons/SpinnerGap"),v=require("./components-icons-stroke-icon.cjs"),Q=require("phosphor-strokes-icons/icons/X"),q=require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");const W=["B","KB","MB","GB","TB"],f=1024,Y=5*f*f,ee=5,te=["all"],re=800,se={image:{"image/*":[".jpg",".jpeg",".png",".webp"]},pdf:{"application/pdf":[".pdf"]},doc:{"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},excel:{"application/vnd.ms-excel":[".xls"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":[".xlsx"]},text:{"text/plain":[".txt"]},all:{}},oe=e=>{if(!e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(f));return`${(e/Math.pow(f,t)).toFixed(2)} ${W[t]}`},S=e=>`${e.name}:${e.size}`,ne=e=>e.reduce((t,o)=>({...t,...se[o]}),{}),ce=(e,t)=>{const o=e.filter(n=>n.status==="uploaded"),c=e.filter(n=>n.status==="error"),a=Math.max(0,t-o.length);return[...o,...c.slice(0,a)]},F=(e,t,o)=>({url:URL.createObjectURL(e),name:e.name,size:oe(e.size),addedAt:new Date().toISOString(),status:t,error:o}),le=e=>e==="file-too-large"?"Файл слишком большой":"Неподдерживаемый формат",ie=(e,t,o)=>{const c=new Set(o.map(S)),a=new Set(t.map(S));return e.filter(n=>{if(n.status!=="error")return!0;const g=S(n);return!c.has(g)&&!a.has(g)})},ae=e=>{const t=e.name.split(".").pop()?.toLowerCase();return t?["jpg","jpeg","png","webp"].includes(t)?"image":t==="pdf"?"pdf":["doc","docx"].includes(t)?"doc":["xls","xlsx"].includes(t)?"excel":t==="txt"?"text":"other":"other"},de=({value:e=[],onChange:t,multiple:o=!1,maxFiles:c=ee,disabled:a=!1,className:n,maxSize:g=Y,variant:h="grid",accepts:L=te,icon:$,title:w,text:I,showFiles:_=!0,isErrorText:D=!1})=>{const[b,E]=U.useState(!1),[T,A]=U.useState(null),m=e,j=m.filter(r=>r.status==="uploaded").length,N=(r,l)=>{A(null);const u=Math.max(0,c-j),x=r.slice(0,u),G=r.slice(u),d=[...l.map(i=>F(i.file,"error",le(i.errors[0]?.code))),...G.map(i=>F(i,"error",`Максимальное количество файлов: ${c}`))];d.length&&A(d[0].error||"Ошибка загрузки"),!(!x.length&&!d.length)&&(E(!0),setTimeout(()=>{const i=x.map(K=>F(K,"uploaded")),Z=ie(m,i,d),M=o?ce([...Z,...i,...d],c):[...i,...d].slice(0,1);t?.(M.length?M:[]),E(!1)},re))},{getRootProps:B,getInputProps:C,isDragActive:P}=V.useDropzone({onDrop:N,accept:ne(L),maxSize:g,multiple:o&&c>1,disabled:a||b}),k=r=>()=>{const l=m.filter((u,x)=>x!==r);t?.(l.length?l:[])},R=m.map((r,l)=>({file:r,index:l})).filter(({file:r})=>r.status==="uploaded"),y=j>=c,z=$??H.Plus,O={grid:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4",list:"grid-cols-1",compact:"grid-cols-2 sm:grid-cols-3"},X=!(y&&_);return s.jsxs("div",{className:p.cn("w-full space-y-4",n?.container),children:[s.jsxs("div",{className:p.cn("grid h-full w-full gap-4",h==="list"?"grid-cols-1":O[h]),children:[_&&R.map(({file:r,index:l})=>{const u=ae(r);return s.jsxs("div",{className:`group bg-primary-bg relative aspect-square h-full w-full
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("./lib-utils.cjs"),U=require("react"),V=require("./index-DJD-8LQA.cjs"),H=require("brd-phosphor-strokes-icons/icons/Plus"),J=require("brd-phosphor-strokes-icons/icons/SpinnerGap"),v=require("./components-icons-stroke-icon.cjs"),Q=require("brd-phosphor-strokes-icons/icons/X"),q=require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");const W=["B","KB","MB","GB","TB"],f=1024,Y=5*f*f,ee=5,te=["all"],re=800,se={image:{"image/*":[".jpg",".jpeg",".png",".webp"]},pdf:{"application/pdf":[".pdf"]},doc:{"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},excel:{"application/vnd.ms-excel":[".xls"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":[".xlsx"]},text:{"text/plain":[".txt"]},all:{}},oe=e=>{if(!e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(f));return`${(e/Math.pow(f,t)).toFixed(2)} ${W[t]}`},S=e=>`${e.name}:${e.size}`,ne=e=>e.reduce((t,o)=>({...t,...se[o]}),{}),ce=(e,t)=>{const o=e.filter(n=>n.status==="uploaded"),c=e.filter(n=>n.status==="error"),a=Math.max(0,t-o.length);return[...o,...c.slice(0,a)]},F=(e,t,o)=>({url:URL.createObjectURL(e),name:e.name,size:oe(e.size),addedAt:new Date().toISOString(),status:t,error:o}),le=e=>e==="file-too-large"?"Файл слишком большой":"Неподдерживаемый формат",ie=(e,t,o)=>{const c=new Set(o.map(S)),a=new Set(t.map(S));return e.filter(n=>{if(n.status!=="error")return!0;const g=S(n);return!c.has(g)&&!a.has(g)})},ae=e=>{const t=e.name.split(".").pop()?.toLowerCase();return t?["jpg","jpeg","png","webp"].includes(t)?"image":t==="pdf"?"pdf":["doc","docx"].includes(t)?"doc":["xls","xlsx"].includes(t)?"excel":t==="txt"?"text":"other":"other"},de=({value:e=[],onChange:t,multiple:o=!1,maxFiles:c=ee,disabled:a=!1,className:n,maxSize:g=Y,variant:h="grid",accepts:L=te,icon:$,title:w,text:I,showFiles:_=!0,isErrorText:D=!1})=>{const[b,E]=U.useState(!1),[T,A]=U.useState(null),m=e,j=m.filter(r=>r.status==="uploaded").length,N=(r,l)=>{A(null);const u=Math.max(0,c-j),x=r.slice(0,u),G=r.slice(u),d=[...l.map(i=>F(i.file,"error",le(i.errors[0]?.code))),...G.map(i=>F(i,"error",`Максимальное количество файлов: ${c}`))];d.length&&A(d[0].error||"Ошибка загрузки"),!(!x.length&&!d.length)&&(E(!0),setTimeout(()=>{const i=x.map(K=>F(K,"uploaded")),Z=ie(m,i,d),M=o?ce([...Z,...i,...d],c):[...i,...d].slice(0,1);t?.(M.length?M:[]),E(!1)},re))},{getRootProps:B,getInputProps:C,isDragActive:P}=V.useDropzone({onDrop:N,accept:ne(L),maxSize:g,multiple:o&&c>1,disabled:a||b}),k=r=>()=>{const l=m.filter((u,x)=>x!==r);t?.(l.length?l:[])},R=m.map((r,l)=>({file:r,index:l})).filter(({file:r})=>r.status==="uploaded"),y=j>=c,z=$??H.Plus,O={grid:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4",list:"grid-cols-1",compact:"grid-cols-2 sm:grid-cols-3"},X=!(y&&_);return s.jsxs("div",{className:p.cn("w-full space-y-4",n?.container),children:[s.jsxs("div",{className:p.cn("grid h-full w-full gap-4",h==="list"?"grid-cols-1":O[h]),children:[_&&R.map(({file:r,index:l})=>{const u=ae(r);return s.jsxs("div",{className:`group bg-primary-bg relative aspect-square h-full w-full
|
|
2
2
|
overflow-hidden rounded-lg`,children:[u==="image"?s.jsx("img",{src:r.url,className:"h-full w-full object-cover"}):s.jsx("div",{className:`bg-tertiary-bg flex h-full w-full items-center
|
|
3
3
|
justify-center text-sm font-semibold`,children:r.name.split(".").pop()?.toUpperCase()}),s.jsx("div",{className:`bg-primary-inverse-bg/50 text-primary-bg absolute inset-0
|
|
4
4
|
flex items-center justify-center opacity-0 transition-opacity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-files-uploader-files-uploader.cjs","sources":["../src/components/files-uploader/files-uploader.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport { useState } from \"react\";\nimport { type FileRejection, useDropzone } from \"react-dropzone\";\nimport { Plus } from \"@/components/icons/Plus\";\nimport { SpinnerGap } from \"@/components/icons/SpinnerGap\";\nimport { StrokeIcon, type StrokeIconComponent } from \"@/components/icons/stroke-icon\";\nimport { X } from \"@/components/icons/X\";\nimport { Typography } from \"../ui/typography\";\n\ntype Variant = \"grid\" | \"list\" | \"compact\";\ntype AcceptType = \"image\" | \"pdf\" | \"doc\" | \"excel\" | \"text\" | \"all\";\n\nexport type UploadedFileData = {\n url: string;\n name: string;\n size: string;\n addedAt: string;\n status: \"uploaded\" | \"error\";\n error?: string;\n};\n\nexport type FilesUploaderValue = UploadedFileData[] | [];\n\nexport type PropsFilesUploader = {\n value?: FilesUploaderValue;\n onChange?: (value: FilesUploaderValue) => void;\n multiple?: boolean;\n maxFiles?: number;\n disabled?: boolean;\n isErrorText?: boolean;\n className?: {\n container?: string;\n blockAdd?: string;\n title?: string;\n text?: string;\n icon?: string;\n };\n maxSize?: number;\n variant?: Variant;\n accepts?: AcceptType[];\n icon?: StrokeIconComponent;\n title?: string;\n text?: string;\n showFiles?: boolean;\n};\n\nconst FILE_SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\nconst FILE_SIZE_KB = 1024;\n\nconst DEFAULT_MAX_SIZE = 5 * FILE_SIZE_KB * FILE_SIZE_KB;\nconst DEFAULT_MAX_FILES = 5;\nconst DEFAULT_ACCEPT: AcceptType[] = [\"all\"];\nconst DEFAULT_TIMEOUT = 800;\n\nconst ACCEPT_MAP: Record<AcceptType, Record<string, string[]>> = {\n image: { \"image/*\": [\".jpg\", \".jpeg\", \".png\", \".webp\"] },\n pdf: { \"application/pdf\": [\".pdf\"] },\n doc: {\n \"application/msword\": [\".doc\"],\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": [\".docx\"],\n },\n excel: {\n \"application/vnd.ms-excel\": [\".xls\"],\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": [\".xlsx\"],\n },\n text: { \"text/plain\": [\".txt\"] },\n all: {},\n};\n\nconst formatFileSize = (bytes: number) => {\n if (!bytes) return \"0 B\";\n const i = Math.floor(Math.log(bytes) / Math.log(FILE_SIZE_KB));\n return `${(bytes / Math.pow(FILE_SIZE_KB, i)).toFixed(2)} ${FILE_SIZE_UNITS[i]}`;\n};\n\nconst getFileIdentity = (file: Pick<UploadedFileData, \"name\" | \"size\">) =>\n `${file.name}:${file.size}`;\n\nconst fileAcceptMap = (accepts: AcceptType[]) =>\n accepts.reduce((acc, t) => ({ ...acc, ...ACCEPT_MAP[t] }), {});\n\nconst limitFilesForValue = (\n nextFiles: UploadedFileData[],\n maxFiles: number,\n): UploadedFileData[] => {\n const uploadedFiles = nextFiles.filter((file) => file.status === \"uploaded\");\n const errorFiles = nextFiles.filter((file) => file.status === \"error\");\n const availableErrorSlots = Math.max(0, maxFiles - uploadedFiles.length);\n\n return [...uploadedFiles, ...errorFiles.slice(0, availableErrorSlots)];\n};\n\nconst mapFile = (\n file: File,\n status: UploadedFileData[\"status\"],\n error?: string,\n): UploadedFileData => ({\n url: URL.createObjectURL(file),\n name: file.name,\n size: formatFileSize(file.size),\n addedAt: new Date().toISOString(),\n status,\n error,\n});\n\nconst getRejectedError = (code?: string) =>\n code === \"file-too-large\" ? \"Файл слишком большой\" : \"Неподдерживаемый формат\";\n\nconst replaceDuplicateErrors = (\n currentFiles: UploadedFileData[],\n newFiles: UploadedFileData[],\n rejectedFiles: UploadedFileData[],\n) => {\n const rejectedFileIds = new Set(rejectedFiles.map(getFileIdentity));\n const acceptedFileIds = new Set(newFiles.map(getFileIdentity));\n\n return currentFiles.filter((existingFile) => {\n if (existingFile.status !== \"error\") return true;\n const id = getFileIdentity(existingFile);\n return !rejectedFileIds.has(id) && !acceptedFileIds.has(id);\n });\n};\n\nconst getFileType = (file: UploadedFileData) => {\n const ext = file.name.split(\".\").pop()?.toLowerCase();\n\n if (!ext) return \"other\";\n if ([\"jpg\", \"jpeg\", \"png\", \"webp\"].includes(ext)) return \"image\";\n if (ext === \"pdf\") return \"pdf\";\n if ([\"doc\", \"docx\"].includes(ext)) return \"doc\";\n if ([\"xls\", \"xlsx\"].includes(ext)) return \"excel\";\n if (ext === \"txt\") return \"text\";\n\n return \"other\";\n};\n\nexport const FilesUploader = ({\n value = [],\n onChange,\n multiple = false,\n maxFiles = DEFAULT_MAX_FILES,\n disabled = false,\n className,\n maxSize = DEFAULT_MAX_SIZE,\n variant = \"grid\",\n accepts = DEFAULT_ACCEPT,\n icon,\n title,\n text,\n showFiles = true,\n isErrorText = false,\n}: PropsFilesUploader) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const files = value;\n const uploadedCount = files.filter((file) => file.status === \"uploaded\").length;\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n setError(null);\n const remainingUploadSlots = Math.max(0, maxFiles - uploadedCount);\n const acceptedFilesToUpload = acceptedFiles.slice(0, remainingUploadSlots);\n const overflowAcceptedFiles = acceptedFiles.slice(remainingUploadSlots);\n\n const rejectedMapped = [\n ...rejectedFiles.map((rejection) =>\n mapFile(rejection.file, \"error\", getRejectedError(rejection.errors[0]?.code)),\n ),\n ...overflowAcceptedFiles.map((file) =>\n mapFile(file, \"error\", `Максимальное количество файлов: ${maxFiles}`),\n ),\n ];\n\n if (rejectedMapped.length) {\n setError(rejectedMapped[0].error || \"Ошибка загрузки\");\n }\n\n if (!acceptedFilesToUpload.length && !rejectedMapped.length) return;\n\n setLoading(true);\n\n setTimeout(() => {\n const newFiles = acceptedFilesToUpload.map((file) => mapFile(file, \"uploaded\"));\n const nextBaseFiles = replaceDuplicateErrors(files, newFiles, rejectedMapped);\n const nextFiles = multiple\n ? limitFilesForValue([...nextBaseFiles, ...newFiles, ...rejectedMapped], maxFiles)\n : [...newFiles, ...rejectedMapped].slice(0, 1);\n\n onChange?.(nextFiles.length ? nextFiles : []);\n setLoading(false);\n }, DEFAULT_TIMEOUT);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: fileAcceptMap(accepts),\n maxSize,\n multiple: multiple && maxFiles > 1,\n disabled: disabled || loading,\n });\n\n const removeFile = (index: number) => () => {\n const updated = files.filter((_, i) => i !== index);\n onChange?.(updated.length ? updated : []);\n };\n\n const uploadedFiles = files\n .map((file, index) => ({ file, index }))\n .filter(({ file }) => file.status === \"uploaded\");\n\n const isMaxFilesReached = uploadedCount >= maxFiles;\n const uploadIcon = icon ?? Plus;\n\n const gridClasses = {\n grid: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n list: \"grid-cols-1\",\n compact: \"grid-cols-2 sm:grid-cols-3\",\n };\n const isFileDisplayBlocked = !(isMaxFilesReached && showFiles);\n\n return (\n <div className={cn(\"w-full space-y-4\", className?.container)}>\n <div\n className={cn(\n \"grid h-full w-full gap-4\",\n variant === \"list\" ? \"grid-cols-1\" : gridClasses[variant],\n )}\n >\n {showFiles &&\n uploadedFiles.map(({ file, index }) => {\n const type = getFileType(file);\n\n return (\n <div\n key={`${file.url}-${file.addedAt}-${index}`}\n className=\"group bg-primary-bg relative aspect-square h-full w-full\n overflow-hidden rounded-lg\"\n >\n {type === \"image\" ? (\n <img\n src={file.url}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <div\n className=\"bg-tertiary-bg flex h-full w-full items-center\n justify-center text-sm font-semibold\"\n >\n {file.name.split(\".\").pop()?.toUpperCase()}\n </div>\n )}\n\n <div\n className=\"bg-primary-inverse-bg/50 text-primary-bg absolute inset-0\n flex items-center justify-center opacity-0 transition-opacity\n hover:opacity-100\"\n >\n <StrokeIcon\n onClick={removeFile(index)}\n icon={X}\n />\n </div>\n </div>\n );\n })}\n\n {isFileDisplayBlocked && (\n <div\n {...getRootProps()}\n className={cn(\n `border-delicate-border bg-secondary-bg hover:bg-tertiary-bg relative flex\n cursor-pointer flex-col items-center justify-center rounded-lg border-2\n border-dashed transition-colors`,\n isDragActive && \"border-primary bg-primary/5\",\n variant === \"list\" ? \"min-h-37.5\" : \"aspect-square\",\n className?.blockAdd,\n (disabled || loading || isMaxFilesReached) &&\n \"bg-disabled-bg text-disabled-text cursor-default hover:bg-none\",\n )}\n >\n <input\n disabled={isMaxFilesReached}\n {...getInputProps()}\n />\n\n {loading ? (\n <StrokeIcon\n icon={SpinnerGap}\n className=\"text-sub-label-text h-8 w-8 animate-spin\"\n />\n ) : (\n <div className=\"flex flex-col items-center space-y-2 p-4 text-center\">\n <StrokeIcon\n icon={uploadIcon}\n className={cn(\"text-sub-label-text h-8 w-8\", className?.icon)}\n />\n <Typography className={cn(\"text-sub-label-text\", className?.title)}>\n {multiple\n ? `${title || \"Добавить\"} (${uploadedCount}/${maxFiles})`\n : title || \"Добавить\"}\n </Typography>\n\n {text && (\n <Typography className={cn(\"text-sub-label-text\", className?.text)}>\n {text}\n </Typography>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {!isErrorText && error && (\n <div className=\"bg-error-bg text-error-text rounded-lg p-3 text-sm\">{error}</div>\n )}\n </div>\n );\n};\n"],"names":["FILE_SIZE_UNITS","FILE_SIZE_KB","DEFAULT_MAX_SIZE","DEFAULT_MAX_FILES","DEFAULT_ACCEPT","DEFAULT_TIMEOUT","ACCEPT_MAP","formatFileSize","bytes","i","getFileIdentity","file","fileAcceptMap","accepts","acc","t","limitFilesForValue","nextFiles","maxFiles","uploadedFiles","errorFiles","availableErrorSlots","mapFile","status","error","getRejectedError","code","replaceDuplicateErrors","currentFiles","newFiles","rejectedFiles","rejectedFileIds","acceptedFileIds","existingFile","id","getFileType","ext","FilesUploader","value","onChange","multiple","disabled","className","maxSize","variant","icon","title","text","showFiles","isErrorText","loading","setLoading","useState","setError","files","uploadedCount","onDrop","acceptedFiles","remainingUploadSlots","acceptedFilesToUpload","overflowAcceptedFiles","rejectedMapped","rejection","nextBaseFiles","getRootProps","getInputProps","isDragActive","useDropzone","removeFile","index","updated","_","isMaxFilesReached","uploadIcon","Plus","gridClasses","isFileDisplayBlocked","cn","jsxs","type","jsx","StrokeIcon","X","SpinnerGap","Typography"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-files-uploader-files-uploader.cjs","sources":["../src/components/files-uploader/files-uploader.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport { useState } from \"react\";\nimport { type FileRejection, useDropzone } from \"react-dropzone\";\nimport { Plus } from \"@/components/icons/Plus\";\nimport { SpinnerGap } from \"@/components/icons/SpinnerGap\";\nimport { StrokeIcon, type StrokeIconComponent } from \"@/components/icons/stroke-icon\";\nimport { X } from \"@/components/icons/X\";\nimport { Typography } from \"../ui/typography\";\n\ntype Variant = \"grid\" | \"list\" | \"compact\";\ntype AcceptType = \"image\" | \"pdf\" | \"doc\" | \"excel\" | \"text\" | \"all\";\n\nexport type UploadedFileData = {\n url: string;\n name: string;\n size: string;\n addedAt: string;\n status: \"uploaded\" | \"error\";\n error?: string;\n};\n\nexport type FilesUploaderValue = UploadedFileData[] | [];\n\nexport type PropsFilesUploader = {\n value?: FilesUploaderValue;\n onChange?: (value: FilesUploaderValue) => void;\n multiple?: boolean;\n maxFiles?: number;\n disabled?: boolean;\n isErrorText?: boolean;\n className?: {\n container?: string;\n blockAdd?: string;\n title?: string;\n text?: string;\n icon?: string;\n };\n maxSize?: number;\n variant?: Variant;\n accepts?: AcceptType[];\n icon?: StrokeIconComponent;\n title?: string;\n text?: string;\n showFiles?: boolean;\n};\n\nconst FILE_SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\nconst FILE_SIZE_KB = 1024;\n\nconst DEFAULT_MAX_SIZE = 5 * FILE_SIZE_KB * FILE_SIZE_KB;\nconst DEFAULT_MAX_FILES = 5;\nconst DEFAULT_ACCEPT: AcceptType[] = [\"all\"];\nconst DEFAULT_TIMEOUT = 800;\n\nconst ACCEPT_MAP: Record<AcceptType, Record<string, string[]>> = {\n image: { \"image/*\": [\".jpg\", \".jpeg\", \".png\", \".webp\"] },\n pdf: { \"application/pdf\": [\".pdf\"] },\n doc: {\n \"application/msword\": [\".doc\"],\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": [\".docx\"],\n },\n excel: {\n \"application/vnd.ms-excel\": [\".xls\"],\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": [\".xlsx\"],\n },\n text: { \"text/plain\": [\".txt\"] },\n all: {},\n};\n\nconst formatFileSize = (bytes: number) => {\n if (!bytes) return \"0 B\";\n const i = Math.floor(Math.log(bytes) / Math.log(FILE_SIZE_KB));\n return `${(bytes / Math.pow(FILE_SIZE_KB, i)).toFixed(2)} ${FILE_SIZE_UNITS[i]}`;\n};\n\nconst getFileIdentity = (file: Pick<UploadedFileData, \"name\" | \"size\">) =>\n `${file.name}:${file.size}`;\n\nconst fileAcceptMap = (accepts: AcceptType[]) =>\n accepts.reduce((acc, t) => ({ ...acc, ...ACCEPT_MAP[t] }), {});\n\nconst limitFilesForValue = (\n nextFiles: UploadedFileData[],\n maxFiles: number,\n): UploadedFileData[] => {\n const uploadedFiles = nextFiles.filter((file) => file.status === \"uploaded\");\n const errorFiles = nextFiles.filter((file) => file.status === \"error\");\n const availableErrorSlots = Math.max(0, maxFiles - uploadedFiles.length);\n\n return [...uploadedFiles, ...errorFiles.slice(0, availableErrorSlots)];\n};\n\nconst mapFile = (\n file: File,\n status: UploadedFileData[\"status\"],\n error?: string,\n): UploadedFileData => ({\n url: URL.createObjectURL(file),\n name: file.name,\n size: formatFileSize(file.size),\n addedAt: new Date().toISOString(),\n status,\n error,\n});\n\nconst getRejectedError = (code?: string) =>\n code === \"file-too-large\" ? \"Файл слишком большой\" : \"Неподдерживаемый формат\";\n\nconst replaceDuplicateErrors = (\n currentFiles: UploadedFileData[],\n newFiles: UploadedFileData[],\n rejectedFiles: UploadedFileData[],\n) => {\n const rejectedFileIds = new Set(rejectedFiles.map(getFileIdentity));\n const acceptedFileIds = new Set(newFiles.map(getFileIdentity));\n\n return currentFiles.filter((existingFile) => {\n if (existingFile.status !== \"error\") return true;\n const id = getFileIdentity(existingFile);\n return !rejectedFileIds.has(id) && !acceptedFileIds.has(id);\n });\n};\n\nconst getFileType = (file: UploadedFileData) => {\n const ext = file.name.split(\".\").pop()?.toLowerCase();\n\n if (!ext) return \"other\";\n if ([\"jpg\", \"jpeg\", \"png\", \"webp\"].includes(ext)) return \"image\";\n if (ext === \"pdf\") return \"pdf\";\n if ([\"doc\", \"docx\"].includes(ext)) return \"doc\";\n if ([\"xls\", \"xlsx\"].includes(ext)) return \"excel\";\n if (ext === \"txt\") return \"text\";\n\n return \"other\";\n};\n\nexport const FilesUploader = ({\n value = [],\n onChange,\n multiple = false,\n maxFiles = DEFAULT_MAX_FILES,\n disabled = false,\n className,\n maxSize = DEFAULT_MAX_SIZE,\n variant = \"grid\",\n accepts = DEFAULT_ACCEPT,\n icon,\n title,\n text,\n showFiles = true,\n isErrorText = false,\n}: PropsFilesUploader) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const files = value;\n const uploadedCount = files.filter((file) => file.status === \"uploaded\").length;\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n setError(null);\n const remainingUploadSlots = Math.max(0, maxFiles - uploadedCount);\n const acceptedFilesToUpload = acceptedFiles.slice(0, remainingUploadSlots);\n const overflowAcceptedFiles = acceptedFiles.slice(remainingUploadSlots);\n\n const rejectedMapped = [\n ...rejectedFiles.map((rejection) =>\n mapFile(rejection.file, \"error\", getRejectedError(rejection.errors[0]?.code)),\n ),\n ...overflowAcceptedFiles.map((file) =>\n mapFile(file, \"error\", `Максимальное количество файлов: ${maxFiles}`),\n ),\n ];\n\n if (rejectedMapped.length) {\n setError(rejectedMapped[0].error || \"Ошибка загрузки\");\n }\n\n if (!acceptedFilesToUpload.length && !rejectedMapped.length) return;\n\n setLoading(true);\n\n setTimeout(() => {\n const newFiles = acceptedFilesToUpload.map((file) => mapFile(file, \"uploaded\"));\n const nextBaseFiles = replaceDuplicateErrors(files, newFiles, rejectedMapped);\n const nextFiles = multiple\n ? limitFilesForValue([...nextBaseFiles, ...newFiles, ...rejectedMapped], maxFiles)\n : [...newFiles, ...rejectedMapped].slice(0, 1);\n\n onChange?.(nextFiles.length ? nextFiles : []);\n setLoading(false);\n }, DEFAULT_TIMEOUT);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: fileAcceptMap(accepts),\n maxSize,\n multiple: multiple && maxFiles > 1,\n disabled: disabled || loading,\n });\n\n const removeFile = (index: number) => () => {\n const updated = files.filter((_, i) => i !== index);\n onChange?.(updated.length ? updated : []);\n };\n\n const uploadedFiles = files\n .map((file, index) => ({ file, index }))\n .filter(({ file }) => file.status === \"uploaded\");\n\n const isMaxFilesReached = uploadedCount >= maxFiles;\n const uploadIcon = icon ?? Plus;\n\n const gridClasses = {\n grid: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n list: \"grid-cols-1\",\n compact: \"grid-cols-2 sm:grid-cols-3\",\n };\n const isFileDisplayBlocked = !(isMaxFilesReached && showFiles);\n\n return (\n <div className={cn(\"w-full space-y-4\", className?.container)}>\n <div\n className={cn(\n \"grid h-full w-full gap-4\",\n variant === \"list\" ? \"grid-cols-1\" : gridClasses[variant],\n )}\n >\n {showFiles &&\n uploadedFiles.map(({ file, index }) => {\n const type = getFileType(file);\n\n return (\n <div\n key={`${file.url}-${file.addedAt}-${index}`}\n className=\"group bg-primary-bg relative aspect-square h-full w-full\n overflow-hidden rounded-lg\"\n >\n {type === \"image\" ? (\n <img\n src={file.url}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <div\n className=\"bg-tertiary-bg flex h-full w-full items-center\n justify-center text-sm font-semibold\"\n >\n {file.name.split(\".\").pop()?.toUpperCase()}\n </div>\n )}\n\n <div\n className=\"bg-primary-inverse-bg/50 text-primary-bg absolute inset-0\n flex items-center justify-center opacity-0 transition-opacity\n hover:opacity-100\"\n >\n <StrokeIcon\n onClick={removeFile(index)}\n icon={X}\n />\n </div>\n </div>\n );\n })}\n\n {isFileDisplayBlocked && (\n <div\n {...getRootProps()}\n className={cn(\n `border-delicate-border bg-secondary-bg hover:bg-tertiary-bg relative flex\n cursor-pointer flex-col items-center justify-center rounded-lg border-2\n border-dashed transition-colors`,\n isDragActive && \"border-primary bg-primary/5\",\n variant === \"list\" ? \"min-h-37.5\" : \"aspect-square\",\n className?.blockAdd,\n (disabled || loading || isMaxFilesReached) &&\n \"bg-disabled-bg text-disabled-text cursor-default hover:bg-none\",\n )}\n >\n <input\n disabled={isMaxFilesReached}\n {...getInputProps()}\n />\n\n {loading ? (\n <StrokeIcon\n icon={SpinnerGap}\n className=\"text-sub-label-text h-8 w-8 animate-spin\"\n />\n ) : (\n <div className=\"flex flex-col items-center space-y-2 p-4 text-center\">\n <StrokeIcon\n icon={uploadIcon}\n className={cn(\"text-sub-label-text h-8 w-8\", className?.icon)}\n />\n <Typography className={cn(\"text-sub-label-text\", className?.title)}>\n {multiple\n ? `${title || \"Добавить\"} (${uploadedCount}/${maxFiles})`\n : title || \"Добавить\"}\n </Typography>\n\n {text && (\n <Typography className={cn(\"text-sub-label-text\", className?.text)}>\n {text}\n </Typography>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {!isErrorText && error && (\n <div className=\"bg-error-bg text-error-text rounded-lg p-3 text-sm\">{error}</div>\n )}\n </div>\n );\n};\n"],"names":["FILE_SIZE_UNITS","FILE_SIZE_KB","DEFAULT_MAX_SIZE","DEFAULT_MAX_FILES","DEFAULT_ACCEPT","DEFAULT_TIMEOUT","ACCEPT_MAP","formatFileSize","bytes","i","getFileIdentity","file","fileAcceptMap","accepts","acc","t","limitFilesForValue","nextFiles","maxFiles","uploadedFiles","errorFiles","availableErrorSlots","mapFile","status","error","getRejectedError","code","replaceDuplicateErrors","currentFiles","newFiles","rejectedFiles","rejectedFileIds","acceptedFileIds","existingFile","id","getFileType","ext","FilesUploader","value","onChange","multiple","disabled","className","maxSize","variant","icon","title","text","showFiles","isErrorText","loading","setLoading","useState","setError","files","uploadedCount","onDrop","acceptedFiles","remainingUploadSlots","acceptedFilesToUpload","overflowAcceptedFiles","rejectedMapped","rejection","nextBaseFiles","getRootProps","getInputProps","isDragActive","useDropzone","removeFile","index","updated","_","isMaxFilesReached","uploadIcon","Plus","gridClasses","isFileDisplayBlocked","cn","jsxs","type","jsx","StrokeIcon","X","SpinnerGap","Typography"],"mappings":"sgBA8CA,MAAMA,EAAkB,CAAC,IAAK,KAAM,KAAM,KAAM,IAAI,EAC9CC,EAAe,KAEfC,EAAmB,EAAID,EAAeA,EACtCE,GAAoB,EACpBC,GAA+B,CAAC,KAAK,EACrCC,GAAkB,IAElBC,GAA2D,CAC/D,MAAO,CAAE,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAO,CAAA,EACrD,IAAK,CAAE,kBAAmB,CAAC,MAAM,CAAA,EACjC,IAAK,CACH,qBAAsB,CAAC,MAAM,EAC7B,0EAA2E,CAAC,OAAO,CAAA,EAErF,MAAO,CACL,2BAA4B,CAAC,MAAM,EACnC,oEAAqE,CAAC,OAAO,CAAA,EAE/E,KAAM,CAAE,aAAc,CAAC,MAAM,CAAA,EAC7B,IAAK,CAAA,CACP,EAEMC,GAAkBC,GAAkB,CACxC,GAAI,CAACA,EAAO,MAAO,MACnB,MAAMC,EAAI,KAAK,MAAM,KAAK,IAAID,CAAK,EAAI,KAAK,IAAIP,CAAY,CAAC,EAC7D,MAAO,IAAIO,EAAQ,KAAK,IAAIP,EAAcQ,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAIT,EAAgBS,CAAC,CAAC,EAChF,EAEMC,EAAmBC,GACvB,GAAGA,EAAK,IAAI,IAAIA,EAAK,IAAI,GAErBC,GAAiBC,GACrBA,EAAQ,OAAO,CAACC,EAAKC,KAAO,CAAE,GAAGD,EAAK,GAAGR,GAAWS,CAAC,CAAA,GAAM,CAAA,CAAE,EAEzDC,GAAqB,CACzBC,EACAC,IACuB,CACvB,MAAMC,EAAgBF,EAAU,OAAQN,GAASA,EAAK,SAAW,UAAU,EACrES,EAAaH,EAAU,OAAQN,GAASA,EAAK,SAAW,OAAO,EAC/DU,EAAsB,KAAK,IAAI,EAAGH,EAAWC,EAAc,MAAM,EAEvE,MAAO,CAAC,GAAGA,EAAe,GAAGC,EAAW,MAAM,EAAGC,CAAmB,CAAC,CACvE,EAEMC,EAAU,CACdX,EACAY,EACAC,KACsB,CACtB,IAAK,IAAI,gBAAgBb,CAAI,EAC7B,KAAMA,EAAK,KACX,KAAMJ,GAAeI,EAAK,IAAI,EAC9B,QAAS,IAAI,KAAA,EAAO,YAAA,EACpB,OAAAY,EACA,MAAAC,CACF,GAEMC,GAAoBC,GACxBA,IAAS,iBAAmB,uBAAyB,0BAEjDC,GAAyB,CAC7BC,EACAC,EACAC,IACG,CACH,MAAMC,EAAkB,IAAI,IAAID,EAAc,IAAIpB,CAAe,CAAC,EAC5DsB,EAAkB,IAAI,IAAIH,EAAS,IAAInB,CAAe,CAAC,EAE7D,OAAOkB,EAAa,OAAQK,GAAiB,CAC3C,GAAIA,EAAa,SAAW,QAAS,MAAO,GAC5C,MAAMC,EAAKxB,EAAgBuB,CAAY,EACvC,MAAO,CAACF,EAAgB,IAAIG,CAAE,GAAK,CAACF,EAAgB,IAAIE,CAAE,CAC5D,CAAC,CACH,EAEMC,GAAexB,GAA2B,CAC9C,MAAMyB,EAAMzB,EAAK,KAAK,MAAM,GAAG,EAAE,IAAA,GAAO,YAAA,EAExC,OAAKyB,EACD,CAAC,MAAO,OAAQ,MAAO,MAAM,EAAE,SAASA,CAAG,EAAU,QACrDA,IAAQ,MAAc,MACtB,CAAC,MAAO,MAAM,EAAE,SAASA,CAAG,EAAU,MACtC,CAAC,MAAO,MAAM,EAAE,SAASA,CAAG,EAAU,QACtCA,IAAQ,MAAc,OAEnB,QAPU,OAQnB,EAEaC,GAAgB,CAAC,CAC5B,MAAAC,EAAQ,CAAA,EACR,SAAAC,EACA,SAAAC,EAAW,GACX,SAAAtB,EAAWf,GACX,SAAAsC,EAAW,GACX,UAAAC,EACA,QAAAC,EAAUzC,EACV,QAAA0C,EAAU,OACV,QAAA/B,EAAUT,GACV,KAAAyC,EACA,MAAAC,EACA,KAAAC,EACA,UAAAC,EAAY,GACZ,YAAAC,EAAc,EAChB,IAA0B,CACxB,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EACtC,CAAC5B,EAAO6B,CAAQ,EAAID,EAAAA,SAAwB,IAAI,EAEhDE,EAAQhB,EACRiB,EAAgBD,EAAM,OAAQ3C,GAASA,EAAK,SAAW,UAAU,EAAE,OAEnE6C,EAAS,CAACC,EAAuB3B,IAAmC,CACxEuB,EAAS,IAAI,EACb,MAAMK,EAAuB,KAAK,IAAI,EAAGxC,EAAWqC,CAAa,EAC3DI,EAAwBF,EAAc,MAAM,EAAGC,CAAoB,EACnEE,EAAwBH,EAAc,MAAMC,CAAoB,EAEhEG,EAAiB,CACrB,GAAG/B,EAAc,IAAKgC,GACpBxC,EAAQwC,EAAU,KAAM,QAASrC,GAAiBqC,EAAU,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA,EAE9E,GAAGF,EAAsB,IAAKjD,GAC5BW,EAAQX,EAAM,QAAS,mCAAmCO,CAAQ,EAAE,CAAA,CACtE,EAGE2C,EAAe,QACjBR,EAASQ,EAAe,CAAC,EAAE,OAAS,iBAAiB,EAGnD,GAACF,EAAsB,QAAU,CAACE,EAAe,UAErDV,EAAW,EAAI,EAEf,WAAW,IAAM,CACf,MAAMtB,EAAW8B,EAAsB,IAAKhD,GAASW,EAAQX,EAAM,UAAU,CAAC,EACxEoD,EAAgBpC,GAAuB2B,EAAOzB,EAAUgC,CAAc,EACtE5C,EAAYuB,EACdxB,GAAmB,CAAC,GAAG+C,EAAe,GAAGlC,EAAU,GAAGgC,CAAc,EAAG3C,CAAQ,EAC/E,CAAC,GAAGW,EAAU,GAAGgC,CAAc,EAAE,MAAM,EAAG,CAAC,EAE/CtB,IAAWtB,EAAU,OAASA,EAAY,CAAA,CAAE,EAC5CkC,EAAW,EAAK,CAClB,EAAG9C,EAAe,EACpB,EAEM,CAAE,aAAA2D,EAAc,cAAAC,EAAe,aAAAC,CAAA,EAAiBC,EAAAA,YAAY,CAChE,OAAAX,EACA,OAAQ5C,GAAcC,CAAO,EAC7B,QAAA8B,EACA,SAAUH,GAAYtB,EAAW,EACjC,SAAUuB,GAAYS,CAAA,CACvB,EAEKkB,EAAcC,GAAkB,IAAM,CAC1C,MAAMC,EAAUhB,EAAM,OAAO,CAACiB,EAAG9D,IAAMA,IAAM4D,CAAK,EAClD9B,IAAW+B,EAAQ,OAASA,EAAU,CAAA,CAAE,CAC1C,EAEMnD,EAAgBmC,EACnB,IAAI,CAAC3C,EAAM0D,KAAW,CAAE,KAAA1D,EAAM,MAAA0D,CAAA,EAAQ,EACtC,OAAO,CAAC,CAAE,KAAA1D,KAAWA,EAAK,SAAW,UAAU,EAE5C6D,EAAoBjB,GAAiBrC,EACrCuD,EAAa5B,GAAQ6B,EAAAA,KAErBC,EAAc,CAClB,KAAM,4CACN,KAAM,cACN,QAAS,4BAAA,EAELC,EAAuB,EAAEJ,GAAqBxB,GAEpD,cACG,MAAA,CAAI,UAAW6B,EAAAA,GAAG,mBAAoBnC,GAAW,SAAS,EACzD,SAAA,CAAAoC,EAAAA,KAAC,MAAA,CACC,UAAWD,EAAAA,GACT,2BACAjC,IAAY,OAAS,cAAgB+B,EAAY/B,CAAO,CAAA,EAGzD,SAAA,CAAAI,GACC7B,EAAc,IAAI,CAAC,CAAE,KAAAR,EAAM,MAAA0D,KAAY,CACrC,MAAMU,EAAO5C,GAAYxB,CAAI,EAE7B,OACEmE,EAAAA,KAAC,MAAA,CAEC,UAAU;AAAA,8CAGT,SAAA,CAAAC,IAAS,QACRC,EAAAA,IAAC,MAAA,CACC,IAAKrE,EAAK,IACV,UAAU,4BAAA,CAAA,EAGZqE,EAAAA,IAAC,MAAA,CACC,UAAU;AAAA,4DAGT,WAAK,KAAK,MAAM,GAAG,EAAE,IAAA,GAAO,YAAA,CAAY,CAAA,EAI7CA,EAAAA,IAAC,MAAA,CACC,UAAU;AAAA;AAAA,uCAIV,SAAAA,EAAAA,IAACC,EAAAA,WAAA,CACC,QAASb,EAAWC,CAAK,EACzB,KAAMa,EAAAA,CAAA,CAAA,CACR,CAAA,CACF,CAAA,EA3BK,GAAGvE,EAAK,GAAG,IAAIA,EAAK,OAAO,IAAI0D,CAAK,EAAA,CA8B/C,CAAC,EAEFO,GACCE,EAAAA,KAAC,MAAA,CACE,GAAGd,EAAA,EACJ,UAAWa,EAAAA,GACT;AAAA;AAAA,+CAGAX,GAAgB,8BAChBtB,IAAY,OAAS,aAAe,gBACpCF,GAAW,UACVD,GAAYS,GAAWsB,IACtB,gEAAA,EAGJ,SAAA,CAAAQ,EAAAA,IAAC,QAAA,CACC,SAAUR,EACT,GAAGP,EAAA,CAAc,CAAA,EAGnBf,EACC8B,EAAAA,IAACC,EAAAA,WAAA,CACC,KAAME,EAAAA,WACN,UAAU,0CAAA,CAAA,EAGZL,EAAAA,KAAC,MAAA,CAAI,UAAU,uDACb,SAAA,CAAAE,EAAAA,IAACC,EAAAA,WAAA,CACC,KAAMR,EACN,UAAWI,EAAAA,GAAG,8BAA+BnC,GAAW,IAAI,CAAA,CAAA,QAE7D0C,EAAAA,WAAA,CAAW,UAAWP,EAAAA,GAAG,sBAAuBnC,GAAW,KAAK,EAC9D,SAAAF,EACG,GAAGM,GAAS,UAAU,KAAKS,CAAa,IAAIrC,CAAQ,IACpD4B,GAAS,WACf,EAECC,SACEqC,aAAA,CAAW,UAAWP,EAAAA,GAAG,sBAAuBnC,GAAW,IAAI,EAC7D,SAAAK,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CAAA,CAAA,CAEJ,CAAA,CAAA,EAIH,CAACE,GAAezB,SACd,MAAA,CAAI,UAAU,qDAAsD,SAAAA,CAAA,CAAM,CAAA,EAE/E,CAEJ"}
|
|
@@ -2,10 +2,10 @@ import { jsxs as m, jsx as n } from "react/jsx-runtime";
|
|
|
2
2
|
import { cn as p } from "./lib-utils.js";
|
|
3
3
|
import { useState as L } from "react";
|
|
4
4
|
import { u as H } from "./index-CVlBIwtP.js";
|
|
5
|
-
import { Plus as J } from "phosphor-strokes-icons/icons/Plus";
|
|
6
|
-
import { SpinnerGap as Q } from "phosphor-strokes-icons/icons/SpinnerGap";
|
|
5
|
+
import { Plus as J } from "brd-phosphor-strokes-icons/icons/Plus";
|
|
6
|
+
import { SpinnerGap as Q } from "brd-phosphor-strokes-icons/icons/SpinnerGap";
|
|
7
7
|
import { StrokeIcon as w } from "./components-icons-stroke-icon.js";
|
|
8
|
-
import { X as W } from "phosphor-strokes-icons/icons/X";
|
|
8
|
+
import { X as W } from "brd-phosphor-strokes-icons/icons/X";
|
|
9
9
|
import { Typography as $ } from "./components-ui-typography-typography.js";
|
|
10
10
|
import "./components-ui-typography-typography.styles.js";
|
|
11
11
|
const Y = ["B", "KB", "MB", "GB", "TB"], h = 1024, ee = 5 * h * h, te = 5, re = ["all"], oe = 800, se = {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("phosphor-strokes-icons/icons/ArrowCounterClockwise");Object.defineProperty(exports,"ArrowCounterClockwise",{enumerable:!0,get:()=>e.ArrowCounterClockwise});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("brd-phosphor-strokes-icons/icons/ArrowCounterClockwise");Object.defineProperty(exports,"ArrowCounterClockwise",{enumerable:!0,get:()=>e.ArrowCounterClockwise});
|
|
2
2
|
//# sourceMappingURL=components-icons-ArrowCounterClockwise.cjs.map
|