@mattermost/compass-ui 0.1.0-alpha.6 → 0.1.0-alpha.8
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/components/action-button/ActionButton.cjs.map +1 -1
- package/dist/components/action-button/ActionButton.d.ts +1 -0
- package/dist/components/action-button/ActionButton.d.ts.map +1 -1
- package/dist/components/action-button/ActionButton.js.map +1 -1
- package/dist/components/admin-panel/AdminPanel.cjs.map +1 -1
- package/dist/components/admin-panel/AdminPanel.d.ts +1 -0
- package/dist/components/admin-panel/AdminPanel.d.ts.map +1 -1
- package/dist/components/admin-panel/AdminPanel.js.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts +1 -0
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
- package/dist/components/button/Button.cjs +1 -1
- package/dist/components/button/Button.cjs.map +1 -1
- package/dist/components/button/Button.d.ts +7 -5
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.js +29 -27
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/Button.module.css +1 -1
- package/dist/components/button/Button.module.scss.cjs +1 -1
- package/dist/components/button/Button.module.scss.js +13 -12
- package/dist/components/button/Button.module.scss.js.map +1 -1
- package/dist/components/card-button/CardButton.cjs +2 -0
- package/dist/components/card-button/CardButton.cjs.map +1 -0
- package/dist/components/card-button/CardButton.d.ts +20 -0
- package/dist/components/card-button/CardButton.d.ts.map +1 -0
- package/dist/components/card-button/CardButton.js +45 -0
- package/dist/components/card-button/CardButton.js.map +1 -0
- package/dist/components/card-button/CardButton.module.css +1 -0
- package/dist/components/card-button/CardButton.module.scss.cjs +2 -0
- package/dist/components/card-button/CardButton.module.scss.cjs.map +1 -0
- package/dist/components/card-button/CardButton.module.scss.js +13 -0
- package/dist/components/card-button/CardButton.module.scss.js.map +1 -0
- package/dist/components/card-button/CardButtonGroup.cjs +2 -0
- package/dist/components/card-button/CardButtonGroup.cjs.map +1 -0
- package/dist/components/card-button/CardButtonGroup.d.ts +13 -0
- package/dist/components/card-button/CardButtonGroup.d.ts.map +1 -0
- package/dist/components/card-button/CardButtonGroup.js +85 -0
- package/dist/components/card-button/CardButtonGroup.js.map +1 -0
- package/dist/components/card-button/CardButtonGroup.module.css +1 -0
- package/dist/components/card-button/CardButtonGroup.module.scss.cjs +2 -0
- package/dist/components/card-button/CardButtonGroup.module.scss.cjs.map +1 -0
- package/dist/components/card-button/CardButtonGroup.module.scss.js +7 -0
- package/dist/components/card-button/CardButtonGroup.module.scss.js.map +1 -0
- package/dist/components/card-button/index.cjs +2 -0
- package/dist/components/card-button/index.d.ts +5 -0
- package/dist/components/card-button/index.d.ts.map +1 -0
- package/dist/components/card-button/index.js +7 -0
- package/dist/components/card-button/index.js.map +1 -0
- package/dist/components/chip/Chip.cjs +1 -1
- package/dist/components/chip/Chip.cjs.map +1 -1
- package/dist/components/chip/Chip.d.ts +4 -2
- package/dist/components/chip/Chip.d.ts.map +1 -1
- package/dist/components/chip/Chip.js +66 -66
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/chip/Chip.module.css +1 -1
- package/dist/components/chip/Chip.module.scss.cjs +1 -1
- package/dist/components/chip/Chip.module.scss.js +12 -12
- package/dist/components/emoji-button/EmojiButton.cjs +2 -0
- package/dist/components/emoji-button/EmojiButton.cjs.map +1 -0
- package/dist/components/emoji-button/EmojiButton.d.ts +30 -0
- package/dist/components/emoji-button/EmojiButton.d.ts.map +1 -0
- package/dist/components/emoji-button/EmojiButton.js +35 -0
- package/dist/components/emoji-button/EmojiButton.js.map +1 -0
- package/dist/components/emoji-button/EmojiButton.module.css +1 -0
- package/dist/components/emoji-button/EmojiButton.module.scss.cjs +2 -0
- package/dist/components/emoji-button/EmojiButton.module.scss.cjs.map +1 -0
- package/dist/components/emoji-button/EmojiButton.module.scss.js +15 -0
- package/dist/components/emoji-button/EmojiButton.module.scss.js.map +1 -0
- package/dist/components/emoji-button/index.cjs +2 -0
- package/dist/components/emoji-button/index.cjs.map +1 -0
- package/dist/components/emoji-button/index.d.ts +3 -0
- package/dist/components/emoji-button/index.d.ts.map +1 -0
- package/dist/components/emoji-button/index.js +6 -0
- package/dist/components/emoji-popover/EmojiPopover.cjs +2 -0
- package/dist/components/emoji-popover/EmojiPopover.cjs.map +1 -0
- package/dist/components/emoji-popover/EmojiPopover.d.ts +34 -0
- package/dist/components/emoji-popover/EmojiPopover.d.ts.map +1 -0
- package/dist/components/emoji-popover/EmojiPopover.js +244 -0
- package/dist/components/emoji-popover/EmojiPopover.js.map +1 -0
- package/dist/components/emoji-popover/EmojiPopover.module.css +1 -0
- package/dist/components/emoji-popover/EmojiPopover.module.scss.cjs +2 -0
- package/dist/components/emoji-popover/EmojiPopover.module.scss.cjs.map +1 -0
- package/dist/components/emoji-popover/EmojiPopover.module.scss.js +27 -0
- package/dist/components/emoji-popover/EmojiPopover.module.scss.js.map +1 -0
- package/dist/components/{message-reactions → emoji-popover}/index.cjs +1 -1
- package/dist/components/emoji-popover/index.cjs.map +1 -0
- package/dist/components/emoji-popover/index.d.ts +3 -0
- package/dist/components/emoji-popover/index.d.ts.map +1 -0
- package/dist/components/emoji-popover/index.js +5 -0
- package/dist/components/emoji-popover/index.js.map +1 -0
- package/dist/components/global-banner/GlobalBanner.cjs.map +1 -1
- package/dist/components/global-banner/GlobalBanner.d.ts +1 -1
- package/dist/components/global-banner/GlobalBanner.d.ts.map +1 -1
- package/dist/components/global-banner/GlobalBanner.js.map +1 -1
- package/dist/components/global-header/GlobalHeader.module.css +1 -1
- package/dist/components/global-header/GlobalHeader.module.scss.cjs +1 -1
- package/dist/components/global-header/GlobalHeader.module.scss.js +16 -16
- package/dist/components/icon-button/IconButton.cjs +1 -1
- package/dist/components/icon-button/IconButton.cjs.map +1 -1
- package/dist/components/icon-button/IconButton.d.ts +3 -1
- package/dist/components/icon-button/IconButton.d.ts.map +1 -1
- package/dist/components/icon-button/IconButton.js +37 -35
- package/dist/components/icon-button/IconButton.js.map +1 -1
- package/dist/components/menu-group-heading/MenuGroupHeading.cjs +2 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.cjs.map +1 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.d.ts +11 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.d.ts.map +1 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.js +20 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.js.map +1 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.module.css +1 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.module.scss.cjs +2 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.module.scss.cjs.map +1 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.module.scss.js +8 -0
- package/dist/components/menu-group-heading/MenuGroupHeading.module.scss.js.map +1 -0
- package/dist/components/menu-group-heading/index.cjs +2 -0
- package/dist/components/menu-group-heading/index.cjs.map +1 -0
- package/dist/components/menu-group-heading/index.d.ts +3 -0
- package/dist/components/menu-group-heading/index.d.ts.map +1 -0
- package/dist/components/menu-group-heading/index.js +5 -0
- package/dist/components/menu-group-heading/index.js.map +1 -0
- package/dist/components/menu-item/MenuItem.cjs.map +1 -1
- package/dist/components/menu-item/MenuItem.d.ts +2 -2
- package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
- package/dist/components/menu-item/MenuItem.js.map +1 -1
- package/dist/components/message-separator/MessageSeparator.cjs +1 -1
- package/dist/components/message-separator/MessageSeparator.cjs.map +1 -1
- package/dist/components/message-separator/MessageSeparator.d.ts +1 -1
- package/dist/components/message-separator/MessageSeparator.js +1 -1
- package/dist/components/message-separator/MessageSeparator.js.map +1 -1
- package/dist/components/modal/Modal.cjs +1 -1
- package/dist/components/modal/Modal.cjs.map +1 -1
- package/dist/components/modal/Modal.d.ts +43 -11
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +56 -74
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/Modal.module.css +1 -1
- package/dist/components/modal/Modal.module.scss.cjs +1 -1
- package/dist/components/modal/Modal.module.scss.js +12 -25
- package/dist/components/modal/Modal.module.scss.js.map +1 -1
- package/dist/components/modal/index.d.ts +1 -1
- package/dist/components/modal/index.d.ts.map +1 -1
- package/dist/components/modal-footer/ModalFooter.cjs +2 -0
- package/dist/components/modal-footer/ModalFooter.cjs.map +1 -0
- package/dist/components/modal-footer/ModalFooter.d.ts +29 -0
- package/dist/components/modal-footer/ModalFooter.d.ts.map +1 -0
- package/dist/components/modal-footer/ModalFooter.js +31 -0
- package/dist/components/modal-footer/ModalFooter.js.map +1 -0
- package/dist/components/modal-footer/ModalFooter.module.css +1 -0
- package/dist/components/modal-footer/ModalFooter.module.scss.cjs +2 -0
- package/dist/components/modal-footer/ModalFooter.module.scss.cjs.map +1 -0
- package/dist/components/modal-footer/ModalFooter.module.scss.js +17 -0
- package/dist/components/modal-footer/ModalFooter.module.scss.js.map +1 -0
- package/dist/components/modal-footer/index.cjs +2 -0
- package/dist/components/modal-footer/index.cjs.map +1 -0
- package/dist/components/modal-footer/index.d.ts +3 -0
- package/dist/components/modal-footer/index.d.ts.map +1 -0
- package/dist/components/modal-footer/index.js +5 -0
- package/dist/components/modal-footer/index.js.map +1 -0
- package/dist/components/modal-header/ModalHeader.cjs +2 -0
- package/dist/components/modal-header/ModalHeader.cjs.map +1 -0
- package/dist/components/modal-header/ModalHeader.d.ts +38 -0
- package/dist/components/modal-header/ModalHeader.d.ts.map +1 -0
- package/dist/components/modal-header/ModalHeader.js +74 -0
- package/dist/components/modal-header/ModalHeader.js.map +1 -0
- package/dist/components/modal-header/ModalHeader.module.css +1 -0
- package/dist/components/modal-header/ModalHeader.module.scss.cjs +2 -0
- package/dist/components/modal-header/ModalHeader.module.scss.cjs.map +1 -0
- package/dist/components/modal-header/ModalHeader.module.scss.js +19 -0
- package/dist/components/modal-header/ModalHeader.module.scss.js.map +1 -0
- package/dist/components/modal-header/index.cjs +2 -0
- package/dist/components/modal-header/index.cjs.map +1 -0
- package/dist/components/modal-header/index.d.ts +3 -0
- package/dist/components/modal-header/index.d.ts.map +1 -0
- package/dist/components/modal-header/index.js +5 -0
- package/dist/components/modal-header/index.js.map +1 -0
- package/dist/components/popover-notice/PopoverNotice.cjs.map +1 -1
- package/dist/components/popover-notice/PopoverNotice.d.ts +1 -1
- package/dist/components/popover-notice/PopoverNotice.d.ts.map +1 -1
- package/dist/components/popover-notice/PopoverNotice.js.map +1 -1
- package/dist/components/reaction-button/ReactionButton.cjs +2 -0
- package/dist/components/reaction-button/ReactionButton.cjs.map +1 -0
- package/dist/components/reaction-button/ReactionButton.d.ts +17 -0
- package/dist/components/reaction-button/ReactionButton.d.ts.map +1 -0
- package/dist/components/reaction-button/ReactionButton.js +42 -0
- package/dist/components/reaction-button/ReactionButton.js.map +1 -0
- package/dist/components/reaction-button/ReactionButton.module.css +1 -0
- package/dist/components/reaction-button/ReactionButton.module.scss.cjs +2 -0
- package/dist/components/reaction-button/ReactionButton.module.scss.cjs.map +1 -0
- package/dist/components/reaction-button/ReactionButton.module.scss.js +12 -0
- package/dist/components/reaction-button/ReactionButton.module.scss.js.map +1 -0
- package/dist/components/reaction-button/index.cjs +2 -0
- package/dist/components/reaction-button/index.cjs.map +1 -0
- package/dist/components/reaction-button/index.d.ts +3 -0
- package/dist/components/reaction-button/index.d.ts.map +1 -0
- package/dist/components/reaction-button/index.js +5 -0
- package/dist/components/reaction-button/index.js.map +1 -0
- package/dist/components/reactions-row/ReactionsRow.cjs +2 -0
- package/dist/components/reactions-row/ReactionsRow.cjs.map +1 -0
- package/dist/components/{message-reactions/MessageReactions.d.ts → reactions-row/ReactionsRow.d.ts} +5 -5
- package/dist/components/reactions-row/ReactionsRow.d.ts.map +1 -0
- package/dist/components/reactions-row/ReactionsRow.js +71 -0
- package/dist/components/reactions-row/ReactionsRow.js.map +1 -0
- package/dist/components/reactions-row/ReactionsRow.module.css +1 -0
- package/dist/components/reactions-row/ReactionsRow.module.scss.cjs +2 -0
- package/dist/components/reactions-row/ReactionsRow.module.scss.cjs.map +1 -0
- package/dist/components/reactions-row/ReactionsRow.module.scss.js +14 -0
- package/dist/components/reactions-row/ReactionsRow.module.scss.js.map +1 -0
- package/dist/components/reactions-row/index.cjs +2 -0
- package/dist/components/reactions-row/index.cjs.map +1 -0
- package/dist/components/reactions-row/index.d.ts +3 -0
- package/dist/components/reactions-row/index.d.ts.map +1 -0
- package/dist/components/reactions-row/index.js +5 -0
- package/dist/components/reactions-row/index.js.map +1 -0
- package/dist/components/right-sidebar-header/RightSidebarHeader.cjs.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
- package/dist/components/section-notice/SectionNotice.cjs.map +1 -1
- package/dist/components/section-notice/SectionNotice.d.ts +1 -1
- package/dist/components/section-notice/SectionNotice.d.ts.map +1 -1
- package/dist/components/section-notice/SectionNotice.js.map +1 -1
- package/dist/components/spinner/Spinner.cjs +1 -1
- package/dist/components/spinner/Spinner.cjs.map +1 -1
- package/dist/components/spinner/Spinner.d.ts +1 -1
- package/dist/components/spinner/Spinner.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.js +17 -17
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/tag/Tag.cjs.map +1 -1
- package/dist/components/tag/Tag.d.ts +1 -1
- package/dist/components/tag/Tag.d.ts.map +1 -1
- package/dist/components/tag/Tag.js.map +1 -1
- package/dist/components/text-input/TextInput.cjs.map +1 -1
- package/dist/components/text-input/TextInput.d.ts +1 -1
- package/dist/components/text-input/TextInput.d.ts.map +1 -1
- package/dist/components/text-input/TextInput.js.map +1 -1
- package/dist/components/thread-footer/ThreadFooter.module.css +1 -1
- package/dist/components/thread-footer/ThreadFooter.module.scss.cjs +1 -1
- package/dist/components/thread-footer/ThreadFooter.module.scss.js +19 -19
- package/dist/components/tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/tooltip/Tooltip.d.ts +1 -1
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/tour-point/TourPoint.module.css +1 -1
- package/dist/components/tour-point/TourPoint.module.scss.cjs +1 -1
- package/dist/components/tour-point/TourPoint.module.scss.js +28 -28
- package/dist/index.cjs +1 -1
- package/dist/index.css +24 -8
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +192 -175
- package/dist/index.js.map +1 -1
- package/package.json +25 -4
- package/dist/components/message-reactions/MessageReactions.cjs +0 -2
- package/dist/components/message-reactions/MessageReactions.cjs.map +0 -1
- package/dist/components/message-reactions/MessageReactions.d.ts.map +0 -1
- package/dist/components/message-reactions/MessageReactions.js +0 -85
- package/dist/components/message-reactions/MessageReactions.js.map +0 -1
- package/dist/components/message-reactions/MessageReactions.module.css +0 -1
- package/dist/components/message-reactions/MessageReactions.module.scss.cjs +0 -2
- package/dist/components/message-reactions/MessageReactions.module.scss.cjs.map +0 -1
- package/dist/components/message-reactions/MessageReactions.module.scss.js +0 -18
- package/dist/components/message-reactions/MessageReactions.module.scss.js.map +0 -1
- package/dist/components/message-reactions/index.d.ts +0 -3
- package/dist/components/message-reactions/index.d.ts.map +0 -1
- package/dist/components/message-reactions/index.js +0 -5
- /package/dist/components/{message-reactions → card-button}/index.cjs.map +0 -0
- /package/dist/components/{message-reactions → emoji-button}/index.js.map +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAInF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oFAAoF;IACpF,KAAK,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,oEAAoE;IACpE,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,SAAc,EACd,KAAK,EACL,IAAc,EACd,KAAK,EACL,QAAQ,EACR,iBAA2B,EAC3B,SAAiB,EACjB,cAAsB,EACtB,MAAM,EACN,OAAO,EACP,aAAoB,EACpB,YAAY,EACZ,WAAuB,EACvB,UAAiB,EACjB,QAAQ,EACR,MAAM,EACN,aAAa,EACb,UAAwB,EACxB,aAAoB,GACrB,EAAE,UAAU,2CAsDZ"}
|
|
@@ -1,86 +1,68 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useId as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
size:
|
|
12
|
-
title:
|
|
13
|
-
subtitle:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import { jsxs as z, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { useId as B } from "react";
|
|
3
|
+
import C from "../scrollbar/Scrollbar.js";
|
|
4
|
+
import F from "../modal-footer/ModalFooter.js";
|
|
5
|
+
import g from "../modal-header/ModalHeader.js";
|
|
6
|
+
import { toKebab as H } from "../../utils/string.js";
|
|
7
|
+
import l from "./Modal.module.scss.js";
|
|
8
|
+
function E({
|
|
9
|
+
className: d = "",
|
|
10
|
+
style: m,
|
|
11
|
+
size: t = "small",
|
|
12
|
+
title: c,
|
|
13
|
+
subtitle: u,
|
|
14
|
+
subtitlePlacement: b = "below",
|
|
15
|
+
hideTitle: f = !1,
|
|
16
|
+
showBackButton: p = !1,
|
|
17
|
+
onBack: _,
|
|
18
|
+
onClose: y,
|
|
19
|
+
headerDivider: h = !0,
|
|
20
|
+
headerAction: v,
|
|
21
|
+
bodyPadding: r = "default",
|
|
22
|
+
scrollable: j = !0,
|
|
23
|
+
children: I,
|
|
24
|
+
footer: a,
|
|
25
|
+
footerLeading: n,
|
|
26
|
+
footerType: e = "2-actions",
|
|
27
|
+
footerDivider: x = !0
|
|
22
28
|
}) {
|
|
23
|
-
const
|
|
24
|
-
|
|
29
|
+
const i = B(), M = l[`modal--size-${H(t)}`], N = [
|
|
30
|
+
l["modal__body-inner"],
|
|
31
|
+
r === "menu" && l["modal__body-inner--menu"],
|
|
32
|
+
r === "none" && l["modal__body-inner--none"]
|
|
33
|
+
].filter(Boolean).join(" "), s = /* @__PURE__ */ o("div", { className: N, children: I }), w = a != null || n != null || e === "spacer-small" || e === "spacer-large";
|
|
34
|
+
return /* @__PURE__ */ z(
|
|
25
35
|
"div",
|
|
26
36
|
{
|
|
27
|
-
className: [
|
|
37
|
+
className: [l.modal, M, d].filter(Boolean).join(" "),
|
|
38
|
+
style: m,
|
|
28
39
|
role: "dialog",
|
|
29
40
|
"aria-modal": "true",
|
|
30
|
-
"aria-labelledby":
|
|
41
|
+
"aria-labelledby": i,
|
|
31
42
|
children: [
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
-
|
|
43
|
+
/* @__PURE__ */ o(
|
|
44
|
+
g,
|
|
34
45
|
{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
icon: /* @__PURE__ */ l(m, { glyph: /* @__PURE__ */ l(B, {}), size: "20" }),
|
|
46
|
-
onClick: c
|
|
47
|
-
}
|
|
48
|
-
),
|
|
49
|
-
/* @__PURE__ */ e("div", { className: o["modal__title-group"], children: [
|
|
50
|
-
/* @__PURE__ */ l("h2", { id: r, className: o.modal__title, children: s }),
|
|
51
|
-
a && /* @__PURE__ */ l("p", { className: o.modal__subtitle, children: a })
|
|
52
|
-
] })
|
|
53
|
-
] }),
|
|
54
|
-
/* @__PURE__ */ l(
|
|
55
|
-
d,
|
|
56
|
-
{
|
|
57
|
-
"aria-label": "Close",
|
|
58
|
-
className: o.modal__close,
|
|
59
|
-
icon: /* @__PURE__ */ l(m, { glyph: /* @__PURE__ */ l(j, {}), size: "20" }),
|
|
60
|
-
onClick: _
|
|
61
|
-
}
|
|
62
|
-
)
|
|
63
|
-
]
|
|
46
|
+
title: c,
|
|
47
|
+
titleId: i,
|
|
48
|
+
subtitle: u,
|
|
49
|
+
subtitlePlacement: b,
|
|
50
|
+
hideTitle: f,
|
|
51
|
+
showBackButton: p,
|
|
52
|
+
onBack: _,
|
|
53
|
+
onClose: y,
|
|
54
|
+
divider: h,
|
|
55
|
+
headerAction: v
|
|
64
56
|
}
|
|
65
57
|
),
|
|
66
|
-
/* @__PURE__ */
|
|
67
|
-
|
|
58
|
+
/* @__PURE__ */ o("div", { className: l.modal__body, children: j ? /* @__PURE__ */ o(C, { children: s }) : s }),
|
|
59
|
+
w && /* @__PURE__ */ o(
|
|
60
|
+
F,
|
|
68
61
|
{
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
children: p
|
|
74
|
-
}
|
|
75
|
-
) }) }),
|
|
76
|
-
i && /* @__PURE__ */ l(
|
|
77
|
-
"div",
|
|
78
|
-
{
|
|
79
|
-
className: [
|
|
80
|
-
o.modal__footer,
|
|
81
|
-
!u && o["modal__footer--no-divider"]
|
|
82
|
-
].filter(Boolean).join(" "),
|
|
83
|
-
children: i
|
|
62
|
+
type: e,
|
|
63
|
+
divider: x,
|
|
64
|
+
leading: n,
|
|
65
|
+
children: a
|
|
84
66
|
}
|
|
85
67
|
)
|
|
86
68
|
]
|
|
@@ -88,6 +70,6 @@ function L({
|
|
|
88
70
|
);
|
|
89
71
|
}
|
|
90
72
|
export {
|
|
91
|
-
|
|
73
|
+
E as default
|
|
92
74
|
};
|
|
93
75
|
//# sourceMappingURL=Modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../src/components/modal/Modal.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { useId } from 'react';\nimport
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../src/components/modal/Modal.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport { useId } from 'react';\nimport Scrollbar from '@/components/scrollbar/Scrollbar';\nimport ModalFooter from '@/components/modal-footer/ModalFooter';\nimport type { ModalFooterType } from '@/components/modal-footer/ModalFooter';\nimport ModalHeader from '@/components/modal-header/ModalHeader';\nimport type { ModalSubtitlePlacement } from '@/components/modal-header/ModalHeader';\nimport { toKebab } from '@/utils/string';\nimport styles from './Modal.module.scss';\n\nexport type ModalSize = 'small' | 'medium' | 'large';\n\n/**\n * Body inset. `menu` is for MenuItem lists — 8px vertical / 16px horizontal so\n * row labels align with the 32px header/footer margins. `none` removes inset\n * for host-owned full-bleed layouts (e.g. settings sidebars).\n */\nexport type ModalBodyPadding = 'default' | 'menu' | 'none';\n\nexport type { ModalFooterType, ModalSubtitlePlacement };\n\nexport interface ModalProps {\n /** Extra class on the dialog root (size + chrome classes still apply). */\n className?: string;\n /** Inline style on the dialog root — prefer `className` for layout overrides. */\n style?: CSSProperties;\n /** Width variant. Figma: Size — Small 600px, Medium 704px, Large 832px. */\n size?: ModalSize;\n /** Modal heading text. Required for a11y; use `hideTitle` for close-only chrome. */\n title: ReactNode;\n /** Optional secondary line — placement via `subtitlePlacement`. */\n subtitle?: ReactNode;\n /**\n * Where the subtitle sits. Figma Modal Header: Below | Beside.\n * Default: `below`.\n */\n subtitlePlacement?: ModalSubtitlePlacement;\n /** Visually hide the title (close-only header); title remains for `aria-labelledby`. */\n hideTitle?: boolean;\n /** When true, shows a back-arrow button before the title. */\n showBackButton?: boolean;\n /** Called when the back button is clicked. */\n onBack?: () => void;\n /** Called when the × close button is clicked. */\n onClose?: () => void;\n /** Show divider between header and body. Default: true. */\n headerDivider?: boolean;\n /** Optional control before close (Button, search field, …). */\n headerAction?: ReactNode;\n /**\n * Body inset. Default is 32px horizontal / 28px vertical. Use `menu` for\n * MenuItem lists. Use `none` when the host owns padding.\n */\n bodyPadding?: ModalBodyPadding;\n /**\n * When true (default), wraps body content in Scrollbar. Set false when the\n * host manages scroll inside panes.\n */\n scrollable?: boolean;\n /** Body content. */\n children: ReactNode;\n /** Footer slot — typically Buttons. Wrapped in `ModalFooter`. */\n footer?: ReactNode;\n /** Left footer slot (pagination status, PaginationDots, …). */\n footerLeading?: ReactNode;\n /** Footer layout. Figma Modal Footer Type. Default: `2-actions`. */\n footerType?: ModalFooterType;\n /** Show divider between body and footer. Default: true. */\n footerDivider?: boolean;\n}\n\n/**\n * Modal dialog shell — composes ModalHeader, scrollable body, and ModalFooter.\n * Host owns portal, overlay, focus trap, and open/close.\n */\nexport default function Modal({\n className = '',\n style,\n size = 'small',\n title,\n subtitle,\n subtitlePlacement = 'below',\n hideTitle = false,\n showBackButton = false,\n onBack,\n onClose,\n headerDivider = true,\n headerAction,\n bodyPadding = 'default',\n scrollable = true,\n children,\n footer,\n footerLeading,\n footerType = '2-actions',\n footerDivider = true,\n}: ModalProps) {\n const titleId = useId();\n const sizeClass = styles[`modal--size-${toKebab(size)}`];\n const bodyInnerClass = [\n styles['modal__body-inner'],\n bodyPadding === 'menu' && styles['modal__body-inner--menu'],\n bodyPadding === 'none' && styles['modal__body-inner--none'],\n ]\n .filter(Boolean)\n .join(' ');\n\n const bodyInner = <div className={bodyInnerClass}>{children}</div>;\n const showFooter =\n footer != null ||\n footerLeading != null ||\n footerType === 'spacer-small' ||\n footerType === 'spacer-large';\n\n return (\n <div\n className={[styles.modal, sizeClass, className].filter(Boolean).join(' ')}\n style={style}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n >\n <ModalHeader\n title={title}\n titleId={titleId}\n subtitle={subtitle}\n subtitlePlacement={subtitlePlacement}\n hideTitle={hideTitle}\n showBackButton={showBackButton}\n onBack={onBack}\n onClose={onClose}\n divider={headerDivider}\n headerAction={headerAction}\n />\n\n <div className={styles['modal__body']}>\n {scrollable ? <Scrollbar>{bodyInner}</Scrollbar> : bodyInner}\n </div>\n\n {showFooter && (\n <ModalFooter\n type={footerType}\n divider={footerDivider}\n leading={footerLeading}\n >\n {footer}\n </ModalFooter>\n )}\n </div>\n );\n}\n"],"names":["Modal","className","style","size","title","subtitle","subtitlePlacement","hideTitle","showBackButton","onBack","onClose","headerDivider","headerAction","bodyPadding","scrollable","children","footer","footerLeading","footerType","footerDivider","titleId","useId","sizeClass","styles","toKebab","bodyInnerClass","bodyInner","jsx","showFooter","jsxs","ModalHeader","Scrollbar","ModalFooter"],"mappings":";;;;;;;AA2EA,SAAwBA,EAAM;AAAA,EAC5B,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,WAAAC,IAAY;AAAA,EACZ,gBAAAC,IAAiB;AAAA,EACjB,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,cAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,eAAAC,IAAgB;AAClB,GAAe;AACb,QAAMC,IAAUC,EAAA,GACVC,IAAYC,EAAO,eAAeC,EAAQrB,CAAI,CAAC,EAAE,GACjDsB,IAAiB;AAAA,IACrBF,EAAO,mBAAmB;AAAA,IAC1BV,MAAgB,UAAUU,EAAO,yBAAyB;AAAA,IAC1DV,MAAgB,UAAUU,EAAO,yBAAyB;AAAA,EAAA,EAEzD,OAAO,OAAO,EACd,KAAK,GAAG,GAELG,IAAY,gBAAAC,EAAC,OAAA,EAAI,WAAWF,GAAiB,UAAAV,GAAS,GACtDa,IACJZ,KAAU,QACVC,KAAiB,QACjBC,MAAe,kBACfA,MAAe;AAEjB,SACE,gBAAAW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,CAACN,EAAO,OAAOD,GAAWrB,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACxE,OAAAC;AAAA,MACA,MAAK;AAAA,MACL,cAAW;AAAA,MACX,mBAAiBkB;AAAA,MAEjB,UAAA;AAAA,QAAA,gBAAAO;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,OAAA1B;AAAA,YACA,SAAAgB;AAAA,YACA,UAAAf;AAAA,YACA,mBAAAC;AAAA,YACA,WAAAC;AAAA,YACA,gBAAAC;AAAA,YACA,QAAAC;AAAA,YACA,SAAAC;AAAA,YACA,SAASC;AAAA,YACT,cAAAC;AAAA,UAAA;AAAA,QAAA;AAAA,QAGF,gBAAAe,EAAC,OAAA,EAAI,WAAWJ,EAAO,aACpB,UAAAT,IAAa,gBAAAa,EAACI,GAAA,EAAW,UAAAL,EAAA,CAAU,IAAeA,GACrD;AAAA,QAECE,KACC,gBAAAD;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,MAAMd;AAAA,YACN,SAASC;AAAA,YACT,SAASF;AAAA,YAER,UAAAD;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
._modal_18mtm_2{background-color:var(--center-channel-bg);border:1px solid rgba(var(--center-channel-color-rgb),.16);border-radius:var(--radius-l);box-shadow:var(--elevation-6);display:flex;flex-direction:column;overflow:hidden}._modal--size-small_18mtm_11{width:600px}._modal--size-medium_18mtm_14{width:704px}._modal--size-large_18mtm_17{width:832px}._modal__body_18mtm_20{flex:1;min-height:0}._modal__body-inner_18mtm_24{padding:28px var(--spacing-xxxl)}._modal__body-inner--menu_18mtm_27{padding:var(--spacing-xs) var(--spacing-l)}._modal__body-inner--none_18mtm_30{padding:0}._modal__body_18mtm_20>._modal__body-inner_18mtm_24{height:100%}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Modal.module.css');const _="
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Modal.module.css');const _="_modal_18mtm_2",m="_modal__body_18mtm_20",o={modal:_,"modal--size-small":"_modal--size-small_18mtm_11","modal--size-medium":"_modal--size-medium_18mtm_14","modal--size-large":"_modal--size-large_18mtm_17",modal__body:m,"modal__body-inner":"_modal__body-inner_18mtm_24","modal__body-inner--menu":"_modal__body-inner--menu_18mtm_27","modal__body-inner--none":"_modal__body-inner--none_18mtm_30"};exports.default=o;exports.modal=_;exports.modal__body=m;
|
|
2
2
|
//# sourceMappingURL=Modal.module.scss.cjs.map
|
|
@@ -1,29 +1,16 @@
|
|
|
1
|
-
import './Modal.module.css';const
|
|
2
|
-
modal:
|
|
3
|
-
"modal--size-small": "_modal--size-
|
|
4
|
-
"modal--size-medium": "_modal--size-
|
|
5
|
-
"modal--size-large": "_modal--size-
|
|
6
|
-
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
modal__title: d,
|
|
11
|
-
modal__subtitle: l,
|
|
12
|
-
modal__close: e,
|
|
13
|
-
modal__body: a,
|
|
14
|
-
"modal__body-inner": "_modal__body-inner_1wwq4_70",
|
|
15
|
-
"modal__body-inner--menu": "_modal__body-inner--menu_1wwq4_73",
|
|
16
|
-
modal__footer: m,
|
|
17
|
-
"modal__footer--no-divider": "_modal__footer--no-divider_1wwq4_85"
|
|
1
|
+
import './Modal.module.css';const m = "_modal_18mtm_2", _ = "_modal__body_18mtm_20", o = {
|
|
2
|
+
modal: m,
|
|
3
|
+
"modal--size-small": "_modal--size-small_18mtm_11",
|
|
4
|
+
"modal--size-medium": "_modal--size-medium_18mtm_14",
|
|
5
|
+
"modal--size-large": "_modal--size-large_18mtm_17",
|
|
6
|
+
modal__body: _,
|
|
7
|
+
"modal__body-inner": "_modal__body-inner_18mtm_24",
|
|
8
|
+
"modal__body-inner--menu": "_modal__body-inner--menu_18mtm_27",
|
|
9
|
+
"modal__body-inner--none": "_modal__body-inner--none_18mtm_30"
|
|
18
10
|
};
|
|
19
11
|
export {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
e as modal__close,
|
|
24
|
-
m as modal__footer,
|
|
25
|
-
o as modal__header,
|
|
26
|
-
l as modal__subtitle,
|
|
27
|
-
d as modal__title
|
|
12
|
+
o as default,
|
|
13
|
+
m as modal,
|
|
14
|
+
_ as modal__body
|
|
28
15
|
};
|
|
29
16
|
//# sourceMappingURL=Modal.module.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Modal.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,SAAS,EACT,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),e=require("./ModalFooter.module.scss.cjs");function n({className:r="",type:l="2-actions",divider:i=!0,leading:a,children:d}){const t=l==="spacer-small"||l==="spacer-large",s=i&&!t,u=e.default[`modal-footer--type-${l}`];return o.jsx("div",{className:[e.default["modal-footer"],u,s&&e.default["modal-footer--divider"],!s&&!t&&e.default["modal-footer--no-divider"],r].filter(Boolean).join(" "),children:!t&&o.jsxs("div",{className:e.default["modal-footer__content"],children:[a!=null&&o.jsx("div",{className:e.default["modal-footer__leading"],children:a}),d!=null&&o.jsx("div",{className:e.default["modal-footer__actions"],children:d})]})})}exports.default=n;
|
|
2
|
+
//# sourceMappingURL=ModalFooter.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalFooter.cjs","sources":["../../../src/components/modal-footer/ModalFooter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport styles from './ModalFooter.module.scss';\n\n/**\n * Figma Modal Footer Type (kebab-case).\n * - `2-actions` / `1-action` — children end-aligned\n * - `2-actions-separated` — space-between (first child start, rest end… or use `leading`)\n * - `pagination` / `stepped-progress` — `leading` on the left, `children` on the right\n * - `spacer-small` / `spacer-large` — empty padding only\n */\nexport type ModalFooterType =\n | '2-actions'\n | '2-actions-separated'\n | '1-action'\n | 'pagination'\n | 'stepped-progress'\n | 'spacer-small'\n | 'spacer-large';\n\nexport interface ModalFooterProps {\n className?: string;\n /** Layout variant. Figma: Type. Default: `2-actions`. */\n type?: ModalFooterType;\n /** Top border. Figma: Divider = On. Default: true (ignored for spacers). */\n divider?: boolean;\n /** Left slot — pagination status text, PaginationDots, etc. */\n leading?: ReactNode;\n /** Action buttons (or empty for spacers). */\n children?: ReactNode;\n}\n\n/**\n * Modal Footer chrome — padding, optional divider, and layout for actions /\n * pagination / stepped progress / spacers. Pass Buttons (or other controls) as\n * children; host owns labels and handlers.\n *\n * @see https://www.figma.com/design/qdm5tKododENqnTvjLovDT/Patterns---Modals?node-id=797-8156\n */\nexport default function ModalFooter({\n className = '',\n type = '2-actions',\n divider = true,\n leading,\n children,\n}: ModalFooterProps) {\n const isSpacer = type === 'spacer-small' || type === 'spacer-large';\n const showDivider = divider && !isSpacer;\n const typeClass = styles[`modal-footer--type-${type}`];\n\n return (\n <div\n className={[\n styles['modal-footer'],\n typeClass,\n showDivider && styles['modal-footer--divider'],\n !showDivider && !isSpacer && styles['modal-footer--no-divider'],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {!isSpacer && (\n <div className={styles['modal-footer__content']}>\n {leading != null && (\n <div className={styles['modal-footer__leading']}>{leading}</div>\n )}\n {children != null && (\n <div className={styles['modal-footer__actions']}>{children}</div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"names":["ModalFooter","className","type","divider","leading","children","isSpacer","showDivider","typeClass","styles","jsx","jsxs"],"mappings":"4LAsCA,SAAwBA,EAAY,CAClC,UAAAC,EAAY,GACZ,KAAAC,EAAO,YACP,QAAAC,EAAU,GACV,QAAAC,EACA,SAAAC,CACF,EAAqB,CACnB,MAAMC,EAAWJ,IAAS,gBAAkBA,IAAS,eAC/CK,EAAcJ,GAAW,CAACG,EAC1BE,EAAYC,EAAAA,QAAO,sBAAsBP,CAAI,EAAE,EAErD,OACEQ,EAAAA,IAAC,MAAA,CACC,UAAW,CACTD,EAAAA,QAAO,cAAc,EACrBD,EACAD,GAAeE,EAAAA,QAAO,uBAAuB,EAC7C,CAACF,GAAe,CAACD,GAAYG,EAAAA,QAAO,0BAA0B,EAC9DR,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEV,UAACK,GACAK,EAAAA,KAAC,OAAI,UAAWF,EAAAA,QAAO,uBAAuB,EAC3C,SAAA,CAAAL,GAAW,MACVM,MAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,uBAAuB,EAAI,SAAAL,EAAQ,EAE3DC,GAAY,MACXK,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,uBAAuB,EAAI,SAAAJ,CAAA,CAAS,CAAA,CAAA,CAE/D,CAAA,CAAA,CAIR"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Figma Modal Footer Type (kebab-case).
|
|
4
|
+
* - `2-actions` / `1-action` — children end-aligned
|
|
5
|
+
* - `2-actions-separated` — space-between (first child start, rest end… or use `leading`)
|
|
6
|
+
* - `pagination` / `stepped-progress` — `leading` on the left, `children` on the right
|
|
7
|
+
* - `spacer-small` / `spacer-large` — empty padding only
|
|
8
|
+
*/
|
|
9
|
+
export type ModalFooterType = '2-actions' | '2-actions-separated' | '1-action' | 'pagination' | 'stepped-progress' | 'spacer-small' | 'spacer-large';
|
|
10
|
+
export interface ModalFooterProps {
|
|
11
|
+
className?: string;
|
|
12
|
+
/** Layout variant. Figma: Type. Default: `2-actions`. */
|
|
13
|
+
type?: ModalFooterType;
|
|
14
|
+
/** Top border. Figma: Divider = On. Default: true (ignored for spacers). */
|
|
15
|
+
divider?: boolean;
|
|
16
|
+
/** Left slot — pagination status text, PaginationDots, etc. */
|
|
17
|
+
leading?: ReactNode;
|
|
18
|
+
/** Action buttons (or empty for spacers). */
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Modal Footer chrome — padding, optional divider, and layout for actions /
|
|
23
|
+
* pagination / stepped progress / spacers. Pass Buttons (or other controls) as
|
|
24
|
+
* children; host owns labels and handlers.
|
|
25
|
+
*
|
|
26
|
+
* @see https://www.figma.com/design/qdm5tKododENqnTvjLovDT/Patterns---Modals?node-id=797-8156
|
|
27
|
+
*/
|
|
28
|
+
export default function ModalFooter({ className, type, divider, leading, children, }: ModalFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=ModalFooter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalFooter.d.ts","sourceRoot":"","sources":["../../../src/components/modal-footer/ModalFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,qBAAqB,GACrB,UAAU,GACV,YAAY,GACZ,kBAAkB,GAClB,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,SAAc,EACd,IAAkB,EAClB,OAAc,EACd,OAAO,EACP,QAAQ,GACT,EAAE,gBAAgB,2CA6BlB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as l, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import o from "./ModalFooter.module.scss.js";
|
|
3
|
+
function v({
|
|
4
|
+
className: d = "",
|
|
5
|
+
type: e = "2-actions",
|
|
6
|
+
divider: i = !0,
|
|
7
|
+
leading: r,
|
|
8
|
+
children: s
|
|
9
|
+
}) {
|
|
10
|
+
const a = e === "spacer-small" || e === "spacer-large", t = i && !a, n = o[`modal-footer--type-${e}`];
|
|
11
|
+
return /* @__PURE__ */ l(
|
|
12
|
+
"div",
|
|
13
|
+
{
|
|
14
|
+
className: [
|
|
15
|
+
o["modal-footer"],
|
|
16
|
+
n,
|
|
17
|
+
t && o["modal-footer--divider"],
|
|
18
|
+
!t && !a && o["modal-footer--no-divider"],
|
|
19
|
+
d
|
|
20
|
+
].filter(Boolean).join(" "),
|
|
21
|
+
children: !a && /* @__PURE__ */ c("div", { className: o["modal-footer__content"], children: [
|
|
22
|
+
r != null && /* @__PURE__ */ l("div", { className: o["modal-footer__leading"], children: r }),
|
|
23
|
+
s != null && /* @__PURE__ */ l("div", { className: o["modal-footer__actions"], children: s })
|
|
24
|
+
] })
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
v as default
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=ModalFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalFooter.js","sources":["../../../src/components/modal-footer/ModalFooter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport styles from './ModalFooter.module.scss';\n\n/**\n * Figma Modal Footer Type (kebab-case).\n * - `2-actions` / `1-action` — children end-aligned\n * - `2-actions-separated` — space-between (first child start, rest end… or use `leading`)\n * - `pagination` / `stepped-progress` — `leading` on the left, `children` on the right\n * - `spacer-small` / `spacer-large` — empty padding only\n */\nexport type ModalFooterType =\n | '2-actions'\n | '2-actions-separated'\n | '1-action'\n | 'pagination'\n | 'stepped-progress'\n | 'spacer-small'\n | 'spacer-large';\n\nexport interface ModalFooterProps {\n className?: string;\n /** Layout variant. Figma: Type. Default: `2-actions`. */\n type?: ModalFooterType;\n /** Top border. Figma: Divider = On. Default: true (ignored for spacers). */\n divider?: boolean;\n /** Left slot — pagination status text, PaginationDots, etc. */\n leading?: ReactNode;\n /** Action buttons (or empty for spacers). */\n children?: ReactNode;\n}\n\n/**\n * Modal Footer chrome — padding, optional divider, and layout for actions /\n * pagination / stepped progress / spacers. Pass Buttons (or other controls) as\n * children; host owns labels and handlers.\n *\n * @see https://www.figma.com/design/qdm5tKododENqnTvjLovDT/Patterns---Modals?node-id=797-8156\n */\nexport default function ModalFooter({\n className = '',\n type = '2-actions',\n divider = true,\n leading,\n children,\n}: ModalFooterProps) {\n const isSpacer = type === 'spacer-small' || type === 'spacer-large';\n const showDivider = divider && !isSpacer;\n const typeClass = styles[`modal-footer--type-${type}`];\n\n return (\n <div\n className={[\n styles['modal-footer'],\n typeClass,\n showDivider && styles['modal-footer--divider'],\n !showDivider && !isSpacer && styles['modal-footer--no-divider'],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {!isSpacer && (\n <div className={styles['modal-footer__content']}>\n {leading != null && (\n <div className={styles['modal-footer__leading']}>{leading}</div>\n )}\n {children != null && (\n <div className={styles['modal-footer__actions']}>{children}</div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"names":["ModalFooter","className","type","divider","leading","children","isSpacer","showDivider","typeClass","styles","jsx","jsxs"],"mappings":";;AAsCA,SAAwBA,EAAY;AAAA,EAClC,WAAAC,IAAY;AAAA,EACZ,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,SAAAC;AAAA,EACA,UAAAC;AACF,GAAqB;AACnB,QAAMC,IAAWJ,MAAS,kBAAkBA,MAAS,gBAC/CK,IAAcJ,KAAW,CAACG,GAC1BE,IAAYC,EAAO,sBAAsBP,CAAI,EAAE;AAErD,SACE,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACTD,EAAO,cAAc;AAAA,QACrBD;AAAA,QACAD,KAAeE,EAAO,uBAAuB;AAAA,QAC7C,CAACF,KAAe,CAACD,KAAYG,EAAO,0BAA0B;AAAA,QAC9DR;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MAEV,WAACK,KACA,gBAAAK,EAAC,SAAI,WAAWF,EAAO,uBAAuB,GAC3C,UAAA;AAAA,QAAAL,KAAW,QACV,gBAAAM,EAAC,OAAA,EAAI,WAAWD,EAAO,uBAAuB,GAAI,UAAAL,GAAQ;AAAA,QAE3DC,KAAY,QACX,gBAAAK,EAAC,OAAA,EAAI,WAAWD,EAAO,uBAAuB,GAAI,UAAAJ,EAAA,CAAS;AAAA,MAAA,EAAA,CAE/D;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._modal-footer_1yi4a_2{display:flex;flex-direction:column;flex-shrink:0;align-items:stretch}._modal-footer--divider_1yi4a_8{border-top:1px solid rgba(var(--center-channel-color-rgb),.12)}._modal-footer--no-divider_1yi4a_11 ._modal-footer__content_1yi4a_11{padding-top:0}._modal-footer__content_1yi4a_11{display:flex;align-items:center;justify-content:flex-end;gap:var(--spacing-xs);width:100%;padding:var(--spacing-xxl) var(--spacing-xxxl)}._modal-footer__leading_1yi4a_22{flex:1 1 auto;min-width:0;display:flex;align-items:center;font-family:var(--font-family-body);font-size:var(--font-size-75);font-weight:var(--font-weight-semibold);line-height:var(--line-height-75);color:rgba(var(--center-channel-color-rgb),.64)}._modal-footer__actions_1yi4a_33{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:var(--spacing-xs)}._modal-footer--type-2-actions-separated_1yi4a_40 ._modal-footer__content_1yi4a_11{justify-content:space-between}._modal-footer--type-2-actions-separated_1yi4a_40 ._modal-footer__actions_1yi4a_33:only-child{flex:1 1 auto;justify-content:space-between}._modal-footer--type-pagination_1yi4a_47 ._modal-footer__content_1yi4a_11,._modal-footer--type-stepped-progress_1yi4a_47 ._modal-footer__content_1yi4a_11{justify-content:space-between}._modal-footer--type-spacer-small_1yi4a_50{padding:var(--spacing-l);min-height:calc(var(--spacing-l) * 2)}._modal-footer--type-spacer-large_1yi4a_54{padding:var(--spacing-xxl);min-height:calc(var(--spacing-xxl) * 2)}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./ModalFooter.module.css');const o={"modal-footer":"_modal-footer_1yi4a_2","modal-footer--divider":"_modal-footer--divider_1yi4a_8","modal-footer--no-divider":"_modal-footer--no-divider_1yi4a_11","modal-footer__content":"_modal-footer__content_1yi4a_11","modal-footer__leading":"_modal-footer__leading_1yi4a_22","modal-footer__actions":"_modal-footer__actions_1yi4a_33","modal-footer--type-2-actions-separated":"_modal-footer--type-2-actions-separated_1yi4a_40","modal-footer--type-pagination":"_modal-footer--type-pagination_1yi4a_47","modal-footer--type-stepped-progress":"_modal-footer--type-stepped-progress_1yi4a_47","modal-footer--type-spacer-small":"_modal-footer--type-spacer-small_1yi4a_50","modal-footer--type-spacer-large":"_modal-footer--type-spacer-large_1yi4a_54"};exports.default=o;
|
|
2
|
+
//# sourceMappingURL=ModalFooter.module.scss.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalFooter.module.scss.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import './ModalFooter.module.css';const o = {
|
|
2
|
+
"modal-footer": "_modal-footer_1yi4a_2",
|
|
3
|
+
"modal-footer--divider": "_modal-footer--divider_1yi4a_8",
|
|
4
|
+
"modal-footer--no-divider": "_modal-footer--no-divider_1yi4a_11",
|
|
5
|
+
"modal-footer__content": "_modal-footer__content_1yi4a_11",
|
|
6
|
+
"modal-footer__leading": "_modal-footer__leading_1yi4a_22",
|
|
7
|
+
"modal-footer__actions": "_modal-footer__actions_1yi4a_33",
|
|
8
|
+
"modal-footer--type-2-actions-separated": "_modal-footer--type-2-actions-separated_1yi4a_40",
|
|
9
|
+
"modal-footer--type-pagination": "_modal-footer--type-pagination_1yi4a_47",
|
|
10
|
+
"modal-footer--type-stepped-progress": "_modal-footer--type-stepped-progress_1yi4a_47",
|
|
11
|
+
"modal-footer--type-spacer-small": "_modal-footer--type-spacer-small_1yi4a_50",
|
|
12
|
+
"modal-footer--type-spacer-large": "_modal-footer--type-spacer-large_1yi4a_54"
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
o as default
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=ModalFooter.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalFooter.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/modal-footer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),__b=require("@mattermost/compass-icons/components/close.js"),b=__b?.default??__b,__N=require("@mattermost/compass-icons/components/arrow-left.js"),N=__N?.default??__N,c=require("../icon/Icon.cjs"),n=require("../icon-button/IconButton.cjs"),a=require("./ModalHeader.module.scss.cjs");function v({className:u="",title:l,subtitle:d,subtitlePlacement:h="below",hideTitle:o=!1,titleId:s,showBackButton:m=!1,onBack:f,onClose:_,divider:j=!0,headerAction:x}){const r=!o&&l!=null,i=r&&d!=null,t=h==="beside"&&i;return e.jsx("div",{className:[a.default["modal-header"],!j&&a.default["modal-header--no-divider"],o&&a.default["modal-header--close-only"],u].filter(Boolean).join(" "),children:e.jsxs("div",{className:a.default["modal-header__content"],children:[r?e.jsxs("div",{className:a.default["modal-header__titles"],children:[e.jsxs("div",{className:a.default["modal-header__primary"],children:[m&&e.jsx(n.default,{"aria-label":"Go back",icon:e.jsx(c.default,{glyph:e.jsx(N,{}),size:"20"}),onClick:f}),e.jsx("h2",{id:s,className:a.default["modal-header__title"],children:l}),t&&e.jsxs("div",{className:a.default["modal-header__subtitle-beside"],children:[e.jsx("span",{className:a.default["modal-header__subtitle-divider"],"aria-hidden":!0}),e.jsx("p",{className:a.default["modal-header__subtitle"],children:d})]})]}),i&&!t&&e.jsx("p",{className:a.default["modal-header__subtitle"],children:d})]}):s!=null&&l!=null?e.jsx("h2",{id:s,className:a.default["modal-header__title-sr"],children:l}):null,e.jsxs("div",{className:a.default["modal-header__actions"],children:[x,e.jsx(n.default,{"aria-label":"Close",className:a.default["modal-header__close"],icon:e.jsx(c.default,{glyph:e.jsx(b,{}),size:"20"}),onClick:_})]})]})})}exports.default=v;
|
|
2
|
+
//# sourceMappingURL=ModalHeader.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalHeader.cjs","sources":["../../../src/components/modal-header/ModalHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport ArrowLeftIcon from '@mattermost/compass-icons/components/arrow-left';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport styles from './ModalHeader.module.scss';\n\nexport type ModalSubtitlePlacement = 'below' | 'beside';\n\nexport interface ModalHeaderProps {\n className?: string;\n /** Heading text. Omit (with `hideTitle`) for close-only headers. */\n title?: ReactNode;\n /** Optional secondary text — placement controlled by `subtitlePlacement`. */\n subtitle?: ReactNode;\n /**\n * Where the subtitle sits relative to the title.\n * Figma: Subtitle = Below | Beside. Default: `below`.\n */\n subtitlePlacement?: ModalSubtitlePlacement;\n /** When true, title is visually hidden (close-only chrome; keep `title`/`titleId` for a11y). */\n hideTitle?: boolean;\n /** id for the title element — pair with dialog `aria-labelledby`. */\n titleId?: string;\n /** Back arrow before the title. */\n showBackButton?: boolean;\n onBack?: () => void;\n /** Called when the × is clicked. */\n onClose?: () => void;\n /** Show bottom border. Figma: Divider = On. Default: true. */\n divider?: boolean;\n /**\n * Optional control before close (Figma Controls = Button / Small Input / …).\n * Host owns the Button, TextInput, etc.\n */\n headerAction?: ReactNode;\n}\n\n/**\n * Modal Header — title row, optional subtitle (below or beside), optional back,\n * optional header action, and close. Compose into `Modal` or use standalone.\n *\n * @see https://www.figma.com/design/qdm5tKododENqnTvjLovDT/Patterns---Modals?node-id=789-15921\n */\nexport default function ModalHeader({\n className = '',\n title,\n subtitle,\n subtitlePlacement = 'below',\n hideTitle = false,\n titleId,\n showBackButton = false,\n onBack,\n onClose,\n divider = true,\n headerAction,\n}: ModalHeaderProps) {\n const showTitleBlock = !hideTitle && title != null;\n const showSubtitle = showTitleBlock && subtitle != null;\n const beside = subtitlePlacement === 'beside' && showSubtitle;\n\n return (\n <div\n className={[\n styles['modal-header'],\n !divider && styles['modal-header--no-divider'],\n hideTitle && styles['modal-header--close-only'],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={styles['modal-header__content']}>\n {showTitleBlock ? (\n <div className={styles['modal-header__titles']}>\n <div className={styles['modal-header__primary']}>\n {showBackButton && (\n <IconButton\n aria-label=\"Go back\"\n icon={<Icon glyph={<ArrowLeftIcon />} size=\"20\" />}\n onClick={onBack}\n />\n )}\n <h2 id={titleId} className={styles['modal-header__title']}>\n {title}\n </h2>\n {beside && (\n <div className={styles['modal-header__subtitle-beside']}>\n <span\n className={styles['modal-header__subtitle-divider']}\n aria-hidden\n />\n <p className={styles['modal-header__subtitle']}>{subtitle}</p>\n </div>\n )}\n </div>\n {showSubtitle && !beside && (\n <p className={styles['modal-header__subtitle']}>{subtitle}</p>\n )}\n </div>\n ) : titleId != null && title != null ? (\n <h2 id={titleId} className={styles['modal-header__title-sr']}>\n {title}\n </h2>\n ) : null}\n\n <div className={styles['modal-header__actions']}>\n {headerAction}\n <IconButton\n aria-label=\"Close\"\n className={styles['modal-header__close']}\n icon={<Icon glyph={<CloseIcon />} size=\"20\" />}\n onClick={onClose}\n />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["ModalHeader","className","title","subtitle","subtitlePlacement","hideTitle","titleId","showBackButton","onBack","onClose","divider","headerAction","showTitleBlock","showSubtitle","beside","jsx","styles","jsxs","IconButton","Icon","ArrowLeftIcon","CloseIcon"],"mappings":"yXA4CA,SAAwBA,EAAY,CAClC,UAAAC,EAAY,GACZ,MAAAC,EACA,SAAAC,EACA,kBAAAC,EAAoB,QACpB,UAAAC,EAAY,GACZ,QAAAC,EACA,eAAAC,EAAiB,GACjB,OAAAC,EACA,QAAAC,EACA,QAAAC,EAAU,GACV,aAAAC,CACF,EAAqB,CACnB,MAAMC,EAAiB,CAACP,GAAaH,GAAS,KACxCW,EAAeD,GAAkBT,GAAY,KAC7CW,EAASV,IAAsB,UAAYS,EAEjD,OACEE,EAAAA,IAAC,MAAA,CACC,UAAW,CACTC,EAAAA,QAAO,cAAc,EACrB,CAACN,GAAWM,EAAAA,QAAO,0BAA0B,EAC7CX,GAAaW,EAAAA,QAAO,0BAA0B,EAC9Cf,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,SAAAgB,EAAAA,KAAC,MAAA,CAAI,UAAWD,UAAO,uBAAuB,EAC3C,SAAA,CAAAJ,EACCK,EAAAA,KAAC,MAAA,CAAI,UAAWD,UAAO,sBAAsB,EAC3C,SAAA,CAAAC,EAAAA,KAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,uBAAuB,EAC3C,SAAA,CAAAT,GACCQ,EAAAA,IAACG,EAAAA,QAAA,CACC,aAAW,UACX,WAAOC,UAAA,CAAK,YAAQC,EAAA,EAAc,EAAI,KAAK,KAAK,EAChD,QAASZ,CAAA,CAAA,EAGbO,EAAAA,IAAC,MAAG,GAAIT,EAAS,UAAWU,EAAAA,QAAO,qBAAqB,EACrD,SAAAd,EACH,EACCY,GACCG,EAAAA,KAAC,MAAA,CAAI,UAAWD,UAAO,+BAA+B,EACpD,SAAA,CAAAD,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,QAAO,gCAAgC,EAClD,cAAW,EAAA,CAAA,QAEZ,IAAA,CAAE,UAAWA,EAAAA,QAAO,wBAAwB,EAAI,SAAAb,CAAA,CAAS,CAAA,CAAA,CAC5D,CAAA,EAEJ,EACCU,GAAgB,CAACC,GAChBC,EAAAA,IAAC,KAAE,UAAWC,EAAAA,QAAO,wBAAwB,EAAI,SAAAb,CAAA,CAAS,CAAA,CAAA,CAE9D,EACEG,GAAW,MAAQJ,GAAS,KAC9Ba,EAAAA,IAAC,KAAA,CAAG,GAAIT,EAAS,UAAWU,UAAO,wBAAwB,EACxD,WACH,EACE,KAEJC,EAAAA,KAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,uBAAuB,EAC3C,SAAA,CAAAL,EACDI,EAAAA,IAACG,EAAAA,QAAA,CACC,aAAW,QACX,UAAWF,EAAAA,QAAO,qBAAqB,EACvC,WAAOG,UAAA,CAAK,YAAQE,EAAA,EAAU,EAAI,KAAK,KAAK,EAC5C,QAASZ,CAAA,CAAA,CACX,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAGN"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type ModalSubtitlePlacement = 'below' | 'beside';
|
|
3
|
+
export interface ModalHeaderProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
/** Heading text. Omit (with `hideTitle`) for close-only headers. */
|
|
6
|
+
title?: ReactNode;
|
|
7
|
+
/** Optional secondary text — placement controlled by `subtitlePlacement`. */
|
|
8
|
+
subtitle?: ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* Where the subtitle sits relative to the title.
|
|
11
|
+
* Figma: Subtitle = Below | Beside. Default: `below`.
|
|
12
|
+
*/
|
|
13
|
+
subtitlePlacement?: ModalSubtitlePlacement;
|
|
14
|
+
/** When true, title is visually hidden (close-only chrome; keep `title`/`titleId` for a11y). */
|
|
15
|
+
hideTitle?: boolean;
|
|
16
|
+
/** id for the title element — pair with dialog `aria-labelledby`. */
|
|
17
|
+
titleId?: string;
|
|
18
|
+
/** Back arrow before the title. */
|
|
19
|
+
showBackButton?: boolean;
|
|
20
|
+
onBack?: () => void;
|
|
21
|
+
/** Called when the × is clicked. */
|
|
22
|
+
onClose?: () => void;
|
|
23
|
+
/** Show bottom border. Figma: Divider = On. Default: true. */
|
|
24
|
+
divider?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Optional control before close (Figma Controls = Button / Small Input / …).
|
|
27
|
+
* Host owns the Button, TextInput, etc.
|
|
28
|
+
*/
|
|
29
|
+
headerAction?: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Modal Header — title row, optional subtitle (below or beside), optional back,
|
|
33
|
+
* optional header action, and close. Compose into `Modal` or use standalone.
|
|
34
|
+
*
|
|
35
|
+
* @see https://www.figma.com/design/qdm5tKododENqnTvjLovDT/Patterns---Modals?node-id=789-15921
|
|
36
|
+
*/
|
|
37
|
+
export default function ModalHeader({ className, title, subtitle, subtitlePlacement, hideTitle, titleId, showBackButton, onBack, onClose, divider, headerAction, }: ModalHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
//# sourceMappingURL=ModalHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalHeader.d.ts","sourceRoot":"","sources":["../../../src/components/modal-header/ModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,gGAAgG;IAChG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,SAAc,EACd,KAAK,EACL,QAAQ,EACR,iBAA2B,EAC3B,SAAiB,EACjB,OAAO,EACP,cAAsB,EACtB,MAAM,EACN,OAAO,EACP,OAAc,EACd,YAAY,GACb,EAAE,gBAAgB,2CA8DlB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as a, jsxs as l } from "react/jsx-runtime";
|
|
2
|
+
import __v from "@mattermost/compass-icons/components/close.js";const v=__v&&__v.default?__v.default:__v;
|
|
3
|
+
import __y from "@mattermost/compass-icons/components/arrow-left.js";const y=__y&&__y.default?__y.default:__y;
|
|
4
|
+
import n from "../icon/Icon.js";
|
|
5
|
+
import h from "../icon-button/IconButton.js";
|
|
6
|
+
import e from "./ModalHeader.module.scss.js";
|
|
7
|
+
function g({
|
|
8
|
+
className: t = "",
|
|
9
|
+
title: o,
|
|
10
|
+
subtitle: d,
|
|
11
|
+
subtitlePlacement: _ = "below",
|
|
12
|
+
hideTitle: s = !1,
|
|
13
|
+
titleId: r,
|
|
14
|
+
showBackButton: u = !1,
|
|
15
|
+
onBack: p,
|
|
16
|
+
onClose: f,
|
|
17
|
+
divider: N = !0,
|
|
18
|
+
headerAction: b
|
|
19
|
+
}) {
|
|
20
|
+
const i = !s && o != null, c = i && d != null, m = _ === "beside" && c;
|
|
21
|
+
return /* @__PURE__ */ a(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
className: [
|
|
25
|
+
e["modal-header"],
|
|
26
|
+
!N && e["modal-header--no-divider"],
|
|
27
|
+
s && e["modal-header--close-only"],
|
|
28
|
+
t
|
|
29
|
+
].filter(Boolean).join(" "),
|
|
30
|
+
children: /* @__PURE__ */ l("div", { className: e["modal-header__content"], children: [
|
|
31
|
+
i ? /* @__PURE__ */ l("div", { className: e["modal-header__titles"], children: [
|
|
32
|
+
/* @__PURE__ */ l("div", { className: e["modal-header__primary"], children: [
|
|
33
|
+
u && /* @__PURE__ */ a(
|
|
34
|
+
h,
|
|
35
|
+
{
|
|
36
|
+
"aria-label": "Go back",
|
|
37
|
+
icon: /* @__PURE__ */ a(n, { glyph: /* @__PURE__ */ a(y, {}), size: "20" }),
|
|
38
|
+
onClick: p
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ a("h2", { id: r, className: e["modal-header__title"], children: o }),
|
|
42
|
+
m && /* @__PURE__ */ l("div", { className: e["modal-header__subtitle-beside"], children: [
|
|
43
|
+
/* @__PURE__ */ a(
|
|
44
|
+
"span",
|
|
45
|
+
{
|
|
46
|
+
className: e["modal-header__subtitle-divider"],
|
|
47
|
+
"aria-hidden": !0
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
/* @__PURE__ */ a("p", { className: e["modal-header__subtitle"], children: d })
|
|
51
|
+
] })
|
|
52
|
+
] }),
|
|
53
|
+
c && !m && /* @__PURE__ */ a("p", { className: e["modal-header__subtitle"], children: d })
|
|
54
|
+
] }) : r != null && o != null ? /* @__PURE__ */ a("h2", { id: r, className: e["modal-header__title-sr"], children: o }) : null,
|
|
55
|
+
/* @__PURE__ */ l("div", { className: e["modal-header__actions"], children: [
|
|
56
|
+
b,
|
|
57
|
+
/* @__PURE__ */ a(
|
|
58
|
+
h,
|
|
59
|
+
{
|
|
60
|
+
"aria-label": "Close",
|
|
61
|
+
className: e["modal-header__close"],
|
|
62
|
+
icon: /* @__PURE__ */ a(n, { glyph: /* @__PURE__ */ a(v, {}), size: "20" }),
|
|
63
|
+
onClick: f
|
|
64
|
+
}
|
|
65
|
+
)
|
|
66
|
+
] })
|
|
67
|
+
] })
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
export {
|
|
72
|
+
g as default
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=ModalHeader.js.map
|