@stenajs-webui/modal 23.18.1 → 23.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
._overlay_quvmp_1{--swui-modal-animation-time: var(--swui-animation-time-fast);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;inset:0;background-color:var(--swui-modal-overlay-bg-color);overflow:auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;animation:_fadeIn_quvmp_1 var(--swui-modal-animation-time) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_quvmp_1{background-color:#fff}}._overlay_quvmp_1 ._modal_quvmp_31{max-width:100%;outline:none;pointer-events:none}@media (max-width: 768px){._overlay_quvmp_1 ._modal_quvmp_31{width:100%}}._overlay_quvmp_1 ._content_quvmp_41{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);pointer-events:all;top:calc(var(--swui-metrics-space) * 2);width:var(--swui-modal-width);max-width:var(--swui-modal-max-width)}@media (max-width: 768px){._overlay_quvmp_1 ._content_quvmp_41{top:0;width:100%;max-width:100%}}._overlay_quvmp_1 ._content_quvmp_41{animation:_appear_quvmp_1 var(--swui-animation-time-fast) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_quvmp_1 ._content_quvmp_41{box-shadow:none;top:0}}._overlay_quvmp_1 ._content_quvmp_41:focus{outline:0}._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle{cursor:move}._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle .draggable-modal-cancel,._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle [role=tooltip]{cursor:initial}@keyframes _fadeIn_quvmp_1{0%{background-color:var(--swui-hidden)}to{background-color:var(--swui-modal-overlay-bg-color)}}@keyframes _appear_quvmp_1{0%{opacity:0}to{opacity:1}}._footer_quvmp_101{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_quvmp_105{position:-webkit-sticky;position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_quvmp_105{position:static;box-shadow:none}}._portal_17ze5_1{--drawer-width: 370px}._portal_17ze5_1 ._overlay_17ze5_4{position:fixed;inset:0}._portal_17ze5_1 ._content_17ze5_9{box-shadow:var(--swui-shadow-modal);background:#fff;position:absolute;transition:transform var(--swui-animation-time-medium) ease-in-out}._portal_17ze5_1 ._content_17ze5_9._floating_17ze5_15{margin:var(--swui-metrics-space);border-radius:var(--swui-border-radius)}@media (max-width: 768px){._portal_17ze5_1 ._content_17ze5_9._floating_17ze5_15{margin:0;border-radius:0}}._portal_17ze5_1 ._content_17ze5_9:focus-visible{outline:unset}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30{transform:translate(var(--translate-x-outside-screen, 0));overflow-y:auto;top:0;bottom:0}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29._afterOpen_17ze5_36,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30._afterOpen_17ze5_36{transform:translate(0)}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29._beforeClose_17ze5_40,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30._beforeClose_17ze5_40{transform:translate(var(--translate-x-outside-screen))}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46{transform:translateY(var(--translate-y-outside-screen, 0));overflow-x:auto;left:0;right:0}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45._afterOpen_17ze5_36,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46._afterOpen_17ze5_36{transform:translateY(0)}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45._beforeClose_17ze5_40,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46._beforeClose_17ze5_40{transform:translateY(var(--translate-y-outside-screen))}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29{--translate-x-outside-screen: -100%;width:var(--drawer-width);left:0}._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30{--translate-x-outside-screen: 100%;width:var(--drawer-width);right:0}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45{--translate-y-outside-screen: -100%;height:var(--drawer-width);top:0}._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46{--translate-y-outside-screen: 100%;height:var(--drawer-width);bottom:0}._overlay_1gix5_1{--swui-modal-animation-time: var(--swui-animation-time-fast);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;inset:0;background-color:var(--swui-modal-overlay-bg-color);overflow:auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;animation:_fadeIn_1gix5_1 var(--swui-modal-animation-time) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_1gix5_1{background-color:#fff}}._overlay_1gix5_1 ._modal_1gix5_31{max-width:100%;outline:none;pointer-events:none;padding:var(--swui-metrics-space)}._overlay_1gix5_1 ._content_1gix5_38{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);border-radius:var(--swui-border-radius-large);pointer-events:all;width:var(--swui-modal-width);max-width:var(--swui-modal-max-width);animation:_appear_1gix5_1 var(--swui-animation-time-fast) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_1gix5_1 ._content_1gix5_38{box-shadow:none;top:0}}._overlay_1gix5_1 ._content_1gix5_38:focus{outline:0}._overlay_1gix5_1 ._content_1gix5_38._isDraggable_1gix5_61 .draggable-modal-handle{cursor:move}._overlay_1gix5_1 ._content_1gix5_38._isDraggable_1gix5_61 .draggable-modal-handle .draggable-modal-cancel,._overlay_1gix5_1 ._content_1gix5_38._isDraggable_1gix5_61 .draggable-modal-handle [role=tooltip]{cursor:initial}@keyframes _fadeIn_1gix5_1{0%{background-color:var(--swui-hidden)}to{background-color:var(--swui-modal-overlay-bg-color)}}@keyframes _appear_1gix5_1{0%{opacity:0}to{opacity:1}}._footer_1gix5_92{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_1gix5_96{position:-webkit-sticky;position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_1gix5_96{position:static;box-shadow:none}}._overlay_nbrrn_1{--swui-modal-animation-time: var(--swui-animation-time-medium);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;inset:0;background-color:var(--swui-modal-overlay-bg-color);display:flex;flex-direction:column;justify-content:flex-start;align-items:center;opacity:0}._overlay_nbrrn_1._afterOpen_nbrrn_24:not(._beforeClose_nbrrn_24){animation:_fadeIn_nbrrn_1 var(--swui-modal-animation-time) forwards}._overlay_nbrrn_1._beforeClose_nbrrn_24{animation:_fadeOut_nbrrn_1 var(--swui-modal-animation-time) forwards}@media print{._overlay_nbrrn_1{background-color:#fff}}._overlay_nbrrn_1 ._modal_nbrrn_36{max-width:100%;outline:none;pointer-events:none;padding:calc(var(--swui-metrics-space) * 2);box-sizing:border-box;max-height:100%;transform:translateY(-100%)}@media (max-width: 768px){._overlay_nbrrn_1 ._modal_nbrrn_36{padding:0;width:100%}}._overlay_nbrrn_1 ._modal_nbrrn_36._afterOpen_nbrrn_24:not(._beforeClose_nbrrn_24){animation:_slideIn_nbrrn_1 var(--swui-modal-animation-time) forwards}._overlay_nbrrn_1 ._modal_nbrrn_36._beforeClose_nbrrn_24{animation:_slideOut_nbrrn_1 var(--swui-modal-animation-time) forwards}._overlay_nbrrn_1 ._content_nbrrn_59{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);border-radius:var(--swui-border-radius-large);pointer-events:all;width:var(--swui-modal-width);max-width:var(--swui-modal-max-width);height:100%;overflow:hidden;overflow-y:auto}@media (max-width: 768px){._overlay_nbrrn_1 ._content_nbrrn_59{border-radius:0;width:100%;max-width:100%;min-height:100dvh}}@media (min-width: 769px){._overlay_nbrrn_1 ._content_nbrrn_59{border-radius:var(--swui-border-radius-large)}._overlay_nbrrn_1 ._content_nbrrn_59::-webkit-scrollbar-thumb{background-color:var(--lhds-color-ui-400);border:4px solid transparent;border-radius:8px;background-clip:padding-box;min-height:40px}._overlay_nbrrn_1 ._content_nbrrn_59::-webkit-scrollbar{width:16px}}@media print{._overlay_nbrrn_1 ._content_nbrrn_59{box-shadow:none;top:0}}._overlay_nbrrn_1 ._content_nbrrn_59:focus{outline:0}@keyframes _fadeIn_nbrrn_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_nbrrn_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_nbrrn_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_nbrrn_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}._footer_nbrrn_149{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_nbrrn_153{position:-webkit-sticky;position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_nbrrn_153{position:static;box-shadow:none}}._modal_4fwgb_1{display:flex;justify-content:center;align-items:center;position:fixed;inset:0;background-color:transparent}._overlay_4fwgb_13{position:fixed;inset:0;background-color:var(--swui-overlay-bg-color)}._alertDialog_14t8t_1{border:0;outline:0;border-radius:var(--swui-border-radius-large);margin:auto;padding:0;overscroll-behavior:contain;opacity:0;pointer-events:none;box-shadow:#0003 0 0 10px 4px}._alertDialog_14t8t_1:not([open]){display:none}._alertDialog_14t8t_1[open]{opacity:1;pointer-events:auto;animation:_slideIn_14t8t_1 .25s forwards}._alertDialog_14t8t_1._closing_14t8t_22[open]{animation:_slideOut_14t8t_1 .25s forwards}._alertDialog_14t8t_1::backdrop{position:fixed;inset:0;background-color:#0d0e1080;animation:_fadeIn_14t8t_1 .25s forwards}._alertDialog_14t8t_1._closing_14t8t_22::backdrop{animation:_fadeOut_14t8t_1 .25s forwards}@keyframes _fadeIn_14t8t_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_14t8t_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_14t8t_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_14t8t_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}._drawerDialog_11g6r_1{max-height:100%;max-width:100%;border:0;outline:0;margin:0;padding:0;overflow-y:auto;overscroll-behavior:contain;box-shadow:#0003 0 0 10px 4px;position:fixed}._drawerDialog_11g6r_1._left_11g6r_13,._drawerDialog_11g6r_1._right_11g6r_14{height:100%;top:0;bottom:0}._drawerDialog_11g6r_1._left_11g6r_13 ._contentWrapper_11g6r_19,._drawerDialog_11g6r_1._right_11g6r_14 ._contentWrapper_11g6r_19{height:100%}@media (max-width: 768px){._drawerDialog_11g6r_1._left_11g6r_13,._drawerDialog_11g6r_1._right_11g6r_14{width:-webkit-fit-content;width:fit-content}}._drawerDialog_11g6r_1._left_11g6r_13{left:0;right:unset}._drawerDialog_11g6r_1._left_11g6r_13[open]{animation:_slideInLeft_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._left_11g6r_13._closing_11g6r_36[open]{animation:_slideOutLeft_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._right_11g6r_14{left:unset;right:0}._drawerDialog_11g6r_1._right_11g6r_14[open]{animation:_slideInRight_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._right_11g6r_14._closing_11g6r_36[open]{animation:_slideOutRight_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._top_11g6r_54,._drawerDialog_11g6r_1._bottom_11g6r_55{width:100%;left:0;right:0}@media (max-width: 768px){._drawerDialog_11g6r_1._top_11g6r_54,._drawerDialog_11g6r_1._bottom_11g6r_55{height:-webkit-fit-content;height:fit-content}}._drawerDialog_11g6r_1._top_11g6r_54{top:0;bottom:unset}._drawerDialog_11g6r_1._top_11g6r_54[open]{animation:_slideInTop_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._top_11g6r_54._closing_11g6r_36[open]{animation:_slideOutTop_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._bottom_11g6r_55{top:unset;bottom:0}._drawerDialog_11g6r_1._bottom_11g6r_55[open]{animation:_slideInBottom_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._bottom_11g6r_55._closing_11g6r_36[open]{animation:_slideOutBottom_11g6r_1 .25s forwards}._drawerDialog_11g6r_1[open]{opacity:1;pointer-events:auto}@keyframes _slideInLeft_11g6r_1{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _slideOutLeft_11g6r_1{0%{transform:translate(0);opacity:0}to{transform:translate(-100%);opacity:1}}@keyframes _slideInTop_11g6r_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOutTop_11g6r_1{0%{transform:translateY(0);opacity:0}to{transform:translateY(-100%);opacity:1}}@keyframes _slideInRight_11g6r_1{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _slideOutRight_11g6r_1{0%{transform:translate(0);opacity:0}to{transform:translate(100%);opacity:1}}@keyframes _slideInBottom_11g6r_1{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOutBottom_11g6r_1{0%{transform:translateY(0);opacity:0}to{transform:translateY(100%);opacity:1}}._modalDialog_iw29e_1{border:0;outline:0;margin:auto;padding:0;overscroll-behavior:contain;opacity:0;pointer-events:none;box-shadow:#0003 0 0 10px 4px}@media (min-width: 769px){._modalDialog_iw29e_1{border-radius:var(--swui-border-radius-large)}._modalDialog_iw29e_1::-webkit-scrollbar-thumb{background-color:var(--lhds-color-ui-400);border:4px solid transparent;border-radius:8px;background-clip:padding-box;min-height:40px}._modalDialog_iw29e_1::-webkit-scrollbar{width:16px}}._modalDialog_iw29e_1:not([open]){display:none}._modalDialog_iw29e_1[open]{opacity:1;pointer-events:auto;animation:_slideIn_iw29e_1 .25s forwards}._modalDialog_iw29e_1._closing_iw29e_37[open]{animation:_slideOut_iw29e_1 .25s forwards}@media (max-width: 768px){._modalDialog_iw29e_1{margin:0;width:100%;max-width:100%;height:100%;max-height:100%}}._modalDialog_iw29e_1::backdrop{position:fixed;inset:0;background-color:#0d0e1080;animation:_fadeIn_iw29e_1 .25s forwards}._modalDialog_iw29e_1._closing_iw29e_37::backdrop{animation:_fadeOut_iw29e_1 .25s forwards}@keyframes _fadeIn_iw29e_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_iw29e_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_iw29e_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_iw29e_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}@media (max-width: 768px){._contentWrapper_iw29e_101{width:100%;height:100%}}._modalActionButtons_zeqa6_1{container-type:inline-size;display:flex;flex-wrap:wrap;flex-direction:row;gap:16px;justify-content:center}@container (max-width: 480px){._modalActionButtons_zeqa6_1:has(>:nth-child(2)){flex-direction:column;justify-content:stretch}._modalActionButtons_zeqa6_1:has(>:nth-child(2))>*{width:100%}}@media (max-width: 768px){._modalBody_ozynq_1._modalBody_ozynq_1{padding:calc(var(--swui-metrics-space) * 2)}}._modalFooter_1ypno_1._modalFooter_1ypno_1{align-items:center;overflow:hidden;background:var(--silver-lighter);border-radius:24px 24px 0 0;padding:calc((var(--swui-metrics-spacing) * 2)) calc((var(--swui-metrics-indent) * 5));flex-shrink:0}._modalFooter_1ypno_1._modalFooter_1ypno_1._sticky_1ypno_10{position:-webkit-sticky;position:sticky;bottom:0}._unreadDot_l8bni_1{position:relative}._unreadDot_l8bni_1 ._dot_l8bni_4{top:1px;right:1px;position:absolute;width:8px;height:8px;border-radius:var(--swui-max-border-radius);background:var(--lhds-color-blue-500)}._notificationHeader_1rl25_1 ._timestamp_1rl25_2{padding-bottom:8px}._notification_tpz0j_1{display:flex;flex-direction:column;width:100%;background:var(--lhds-color-ui-50);padding:calc(var(--swui-metrics-spacing) * 2) calc(var(--swui-metrics-indent) * 2);gap:calc(var(--swui-metrics-space) * 1)}._notification_tpz0j_1 ._body_tpz0j_10{padding-left:48px;padding-right:24px}._notification_tpz0j_1._standard_tpz0j_15._unread_tpz0j_16{background:var(--lhds-color-blue-50)}._notification_tpz0j_1._danger_tpz0j_21{background:var(--lhds-color-red-100)}._notificationList_1rkvu_1{display:flex;flex-direction:column;gap:2px;background:var(--lhds-color-ui-200)}._toast_1ifzt_1 ._body_1ifzt_2{display:flex;padding-left:48px;padding-bottom:8px}._toastBox_1lvsy_1._toastBox_1lvsy_1{display:inline-block;padding:var(--swui-metrics-spacing) calc(var(--swui-metrics-indent) * 2);border-radius:var(--swui-border-radius);background:var(--lhds-color-ui-50);box-shadow:var(--swui-shadow-popover)}._toastBox_1lvsy_1._toastBox_1lvsy_1._clickable_1lvsy_8{border:1px solid transparent;cursor:pointer}._toastBox_1lvsy_1._toastBox_1lvsy_1._clickable_1lvsy_8:hover{border-color:var(--lhds-color-blue-300)}._toastContainer_1rek2_1 .Toastify__toast{align-items:flex-start}
|
|
1
|
+
html{scrollbar-gutter:stable}body.ReactModal__Body--open,body:has(dialog.swui-dialog[open]){overflow:hidden}._overlay_quvmp_1{--swui-modal-animation-time: var(--swui-animation-time-fast);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;inset:0;background-color:var(--swui-modal-overlay-bg-color);overflow:auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;animation:_fadeIn_quvmp_1 var(--swui-modal-animation-time) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_quvmp_1{background-color:#fff}}._overlay_quvmp_1 ._modal_quvmp_31{max-width:100%;outline:none;pointer-events:none}@media (max-width: 768px){._overlay_quvmp_1 ._modal_quvmp_31{width:100%}}._overlay_quvmp_1 ._content_quvmp_41{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);pointer-events:all;top:calc(var(--swui-metrics-space) * 2);width:var(--swui-modal-width);max-width:var(--swui-modal-max-width)}@media (max-width: 768px){._overlay_quvmp_1 ._content_quvmp_41{top:0;width:100%;max-width:100%}}._overlay_quvmp_1 ._content_quvmp_41{animation:_appear_quvmp_1 var(--swui-animation-time-fast) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_quvmp_1 ._content_quvmp_41{box-shadow:none;top:0}}._overlay_quvmp_1 ._content_quvmp_41:focus{outline:0}._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle{cursor:move}._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle .draggable-modal-cancel,._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle [role=tooltip]{cursor:initial}@keyframes _fadeIn_quvmp_1{0%{background-color:var(--swui-hidden)}to{background-color:var(--swui-modal-overlay-bg-color)}}@keyframes _appear_quvmp_1{0%{opacity:0}to{opacity:1}}._footer_quvmp_101{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_quvmp_105{position:-webkit-sticky;position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_quvmp_105{position:static;box-shadow:none}}._portal_17ze5_1{--drawer-width: 370px}._portal_17ze5_1 ._overlay_17ze5_4{position:fixed;inset:0}._portal_17ze5_1 ._content_17ze5_9{box-shadow:var(--swui-shadow-modal);background:#fff;position:absolute;transition:transform var(--swui-animation-time-medium) ease-in-out}._portal_17ze5_1 ._content_17ze5_9._floating_17ze5_15{margin:var(--swui-metrics-space);border-radius:var(--swui-border-radius)}@media (max-width: 768px){._portal_17ze5_1 ._content_17ze5_9._floating_17ze5_15{margin:0;border-radius:0}}._portal_17ze5_1 ._content_17ze5_9:focus-visible{outline:unset}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30{transform:translate(var(--translate-x-outside-screen, 0));overflow-y:auto;top:0;bottom:0}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29._afterOpen_17ze5_36,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30._afterOpen_17ze5_36{transform:translate(0)}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29._beforeClose_17ze5_40,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30._beforeClose_17ze5_40{transform:translate(var(--translate-x-outside-screen))}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46{transform:translateY(var(--translate-y-outside-screen, 0));overflow-x:auto;left:0;right:0}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45._afterOpen_17ze5_36,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46._afterOpen_17ze5_36{transform:translateY(0)}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45._beforeClose_17ze5_40,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46._beforeClose_17ze5_40{transform:translateY(var(--translate-y-outside-screen))}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29{--translate-x-outside-screen: -100%;width:var(--drawer-width);left:0}._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30{--translate-x-outside-screen: 100%;width:var(--drawer-width);right:0}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45{--translate-y-outside-screen: -100%;height:var(--drawer-width);top:0}._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46{--translate-y-outside-screen: 100%;height:var(--drawer-width);bottom:0}._overlay_1gix5_1{--swui-modal-animation-time: var(--swui-animation-time-fast);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;inset:0;background-color:var(--swui-modal-overlay-bg-color);overflow:auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;animation:_fadeIn_1gix5_1 var(--swui-modal-animation-time) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_1gix5_1{background-color:#fff}}._overlay_1gix5_1 ._modal_1gix5_31{max-width:100%;outline:none;pointer-events:none;padding:var(--swui-metrics-space)}._overlay_1gix5_1 ._content_1gix5_38{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);border-radius:var(--swui-border-radius-large);pointer-events:all;width:var(--swui-modal-width);max-width:var(--swui-modal-max-width);animation:_appear_1gix5_1 var(--swui-animation-time-fast) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_1gix5_1 ._content_1gix5_38{box-shadow:none;top:0}}._overlay_1gix5_1 ._content_1gix5_38:focus{outline:0}._overlay_1gix5_1 ._content_1gix5_38._isDraggable_1gix5_61 .draggable-modal-handle{cursor:move}._overlay_1gix5_1 ._content_1gix5_38._isDraggable_1gix5_61 .draggable-modal-handle .draggable-modal-cancel,._overlay_1gix5_1 ._content_1gix5_38._isDraggable_1gix5_61 .draggable-modal-handle [role=tooltip]{cursor:initial}@keyframes _fadeIn_1gix5_1{0%{background-color:var(--swui-hidden)}to{background-color:var(--swui-modal-overlay-bg-color)}}@keyframes _appear_1gix5_1{0%{opacity:0}to{opacity:1}}._footer_1gix5_92{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_1gix5_96{position:-webkit-sticky;position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_1gix5_96{position:static;box-shadow:none}}._overlay_nbrrn_1{--swui-modal-animation-time: var(--swui-animation-time-medium);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;inset:0;background-color:var(--swui-modal-overlay-bg-color);display:flex;flex-direction:column;justify-content:flex-start;align-items:center;opacity:0}._overlay_nbrrn_1._afterOpen_nbrrn_24:not(._beforeClose_nbrrn_24){animation:_fadeIn_nbrrn_1 var(--swui-modal-animation-time) forwards}._overlay_nbrrn_1._beforeClose_nbrrn_24{animation:_fadeOut_nbrrn_1 var(--swui-modal-animation-time) forwards}@media print{._overlay_nbrrn_1{background-color:#fff}}._overlay_nbrrn_1 ._modal_nbrrn_36{max-width:100%;outline:none;pointer-events:none;padding:calc(var(--swui-metrics-space) * 2);box-sizing:border-box;max-height:100%;transform:translateY(-100%)}@media (max-width: 768px){._overlay_nbrrn_1 ._modal_nbrrn_36{padding:0;width:100%}}._overlay_nbrrn_1 ._modal_nbrrn_36._afterOpen_nbrrn_24:not(._beforeClose_nbrrn_24){animation:_slideIn_nbrrn_1 var(--swui-modal-animation-time) forwards}._overlay_nbrrn_1 ._modal_nbrrn_36._beforeClose_nbrrn_24{animation:_slideOut_nbrrn_1 var(--swui-modal-animation-time) forwards}._overlay_nbrrn_1 ._content_nbrrn_59{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);border-radius:var(--swui-border-radius-large);pointer-events:all;width:var(--swui-modal-width);max-width:var(--swui-modal-max-width);height:100%;overflow:hidden;overflow-y:auto}@media (max-width: 768px){._overlay_nbrrn_1 ._content_nbrrn_59{border-radius:0;width:100%;max-width:100%;min-height:100dvh}}@media (min-width: 769px){._overlay_nbrrn_1 ._content_nbrrn_59{border-radius:var(--swui-border-radius-large)}._overlay_nbrrn_1 ._content_nbrrn_59::-webkit-scrollbar-thumb{background-color:var(--lhds-color-ui-400);border:4px solid transparent;border-radius:8px;background-clip:padding-box;min-height:40px}._overlay_nbrrn_1 ._content_nbrrn_59::-webkit-scrollbar{width:16px}}@media print{._overlay_nbrrn_1 ._content_nbrrn_59{box-shadow:none;top:0}}._overlay_nbrrn_1 ._content_nbrrn_59:focus{outline:0}@keyframes _fadeIn_nbrrn_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_nbrrn_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_nbrrn_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_nbrrn_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}._footer_nbrrn_149{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_nbrrn_153{position:-webkit-sticky;position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_nbrrn_153{position:static;box-shadow:none}}._modal_4fwgb_1{display:flex;justify-content:center;align-items:center;position:fixed;inset:0;background-color:transparent}._overlay_4fwgb_13{position:fixed;inset:0;background-color:var(--swui-overlay-bg-color)}._alertDialog_14t8t_1{border:0;outline:0;border-radius:var(--swui-border-radius-large);margin:auto;padding:0;overscroll-behavior:contain;opacity:0;pointer-events:none;box-shadow:#0003 0 0 10px 4px}._alertDialog_14t8t_1:not([open]){display:none}._alertDialog_14t8t_1[open]{opacity:1;pointer-events:auto;animation:_slideIn_14t8t_1 .25s forwards}._alertDialog_14t8t_1._closing_14t8t_22[open]{animation:_slideOut_14t8t_1 .25s forwards}._alertDialog_14t8t_1::backdrop{position:fixed;inset:0;background-color:#0d0e1080;animation:_fadeIn_14t8t_1 .25s forwards}._alertDialog_14t8t_1._closing_14t8t_22::backdrop{animation:_fadeOut_14t8t_1 .25s forwards}@keyframes _fadeIn_14t8t_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_14t8t_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_14t8t_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_14t8t_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}._drawerDialog_11g6r_1{max-height:100%;max-width:100%;border:0;outline:0;margin:0;padding:0;overflow-y:auto;overscroll-behavior:contain;box-shadow:#0003 0 0 10px 4px;position:fixed}._drawerDialog_11g6r_1._left_11g6r_13,._drawerDialog_11g6r_1._right_11g6r_14{height:100%;top:0;bottom:0}._drawerDialog_11g6r_1._left_11g6r_13 ._contentWrapper_11g6r_19,._drawerDialog_11g6r_1._right_11g6r_14 ._contentWrapper_11g6r_19{height:100%}@media (max-width: 768px){._drawerDialog_11g6r_1._left_11g6r_13,._drawerDialog_11g6r_1._right_11g6r_14{width:-webkit-fit-content;width:fit-content}}._drawerDialog_11g6r_1._left_11g6r_13{left:0;right:unset}._drawerDialog_11g6r_1._left_11g6r_13[open]{animation:_slideInLeft_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._left_11g6r_13._closing_11g6r_36[open]{animation:_slideOutLeft_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._right_11g6r_14{left:unset;right:0}._drawerDialog_11g6r_1._right_11g6r_14[open]{animation:_slideInRight_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._right_11g6r_14._closing_11g6r_36[open]{animation:_slideOutRight_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._top_11g6r_54,._drawerDialog_11g6r_1._bottom_11g6r_55{width:100%;left:0;right:0}@media (max-width: 768px){._drawerDialog_11g6r_1._top_11g6r_54,._drawerDialog_11g6r_1._bottom_11g6r_55{height:-webkit-fit-content;height:fit-content}}._drawerDialog_11g6r_1._top_11g6r_54{top:0;bottom:unset}._drawerDialog_11g6r_1._top_11g6r_54[open]{animation:_slideInTop_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._top_11g6r_54._closing_11g6r_36[open]{animation:_slideOutTop_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._bottom_11g6r_55{top:unset;bottom:0}._drawerDialog_11g6r_1._bottom_11g6r_55[open]{animation:_slideInBottom_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._bottom_11g6r_55._closing_11g6r_36[open]{animation:_slideOutBottom_11g6r_1 .25s forwards}._drawerDialog_11g6r_1[open]{opacity:1;pointer-events:auto}@keyframes _slideInLeft_11g6r_1{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _slideOutLeft_11g6r_1{0%{transform:translate(0);opacity:0}to{transform:translate(-100%);opacity:1}}@keyframes _slideInTop_11g6r_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOutTop_11g6r_1{0%{transform:translateY(0);opacity:0}to{transform:translateY(-100%);opacity:1}}@keyframes _slideInRight_11g6r_1{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _slideOutRight_11g6r_1{0%{transform:translate(0);opacity:0}to{transform:translate(100%);opacity:1}}@keyframes _slideInBottom_11g6r_1{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOutBottom_11g6r_1{0%{transform:translateY(0);opacity:0}to{transform:translateY(100%);opacity:1}}._modalDialog_iw29e_1{border:0;outline:0;margin:auto;padding:0;overscroll-behavior:contain;opacity:0;pointer-events:none;box-shadow:#0003 0 0 10px 4px}@media (min-width: 769px){._modalDialog_iw29e_1{border-radius:var(--swui-border-radius-large)}._modalDialog_iw29e_1::-webkit-scrollbar-thumb{background-color:var(--lhds-color-ui-400);border:4px solid transparent;border-radius:8px;background-clip:padding-box;min-height:40px}._modalDialog_iw29e_1::-webkit-scrollbar{width:16px}}._modalDialog_iw29e_1:not([open]){display:none}._modalDialog_iw29e_1[open]{opacity:1;pointer-events:auto;animation:_slideIn_iw29e_1 .25s forwards}._modalDialog_iw29e_1._closing_iw29e_37[open]{animation:_slideOut_iw29e_1 .25s forwards}@media (max-width: 768px){._modalDialog_iw29e_1{margin:0;width:100%;max-width:100%;height:100%;max-height:100%}}._modalDialog_iw29e_1::backdrop{position:fixed;inset:0;background-color:#0d0e1080;animation:_fadeIn_iw29e_1 .25s forwards}._modalDialog_iw29e_1._closing_iw29e_37::backdrop{animation:_fadeOut_iw29e_1 .25s forwards}@keyframes _fadeIn_iw29e_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_iw29e_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_iw29e_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_iw29e_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}@media (max-width: 768px){._contentWrapper_iw29e_101{width:100%;height:100%}}._modalActionButtons_zeqa6_1{container-type:inline-size;display:flex;flex-wrap:wrap;flex-direction:row;gap:16px;justify-content:center}@container (max-width: 480px){._modalActionButtons_zeqa6_1:has(>:nth-child(2)){flex-direction:column;justify-content:stretch}._modalActionButtons_zeqa6_1:has(>:nth-child(2))>*{width:100%}}@media (max-width: 768px){._modalBody_ozynq_1._modalBody_ozynq_1{padding:calc(var(--swui-metrics-space) * 2)}}._modalFooter_1ypno_1._modalFooter_1ypno_1{align-items:center;overflow:hidden;background:var(--silver-lighter);border-radius:24px 24px 0 0;padding:calc((var(--swui-metrics-spacing) * 2)) calc((var(--swui-metrics-indent) * 5));flex-shrink:0}._modalFooter_1ypno_1._modalFooter_1ypno_1._sticky_1ypno_10{position:-webkit-sticky;position:sticky;bottom:0}._unreadDot_l8bni_1{position:relative}._unreadDot_l8bni_1 ._dot_l8bni_4{top:1px;right:1px;position:absolute;width:8px;height:8px;border-radius:var(--swui-max-border-radius);background:var(--lhds-color-blue-500)}._notificationHeader_1rl25_1 ._timestamp_1rl25_2{padding-bottom:8px}._notification_tpz0j_1{display:flex;flex-direction:column;width:100%;background:var(--lhds-color-ui-50);padding:calc(var(--swui-metrics-spacing) * 2) calc(var(--swui-metrics-indent) * 2);gap:calc(var(--swui-metrics-space) * 1)}._notification_tpz0j_1 ._body_tpz0j_10{padding-left:48px;padding-right:24px}._notification_tpz0j_1._standard_tpz0j_15._unread_tpz0j_16{background:var(--lhds-color-blue-50)}._notification_tpz0j_1._danger_tpz0j_21{background:var(--lhds-color-red-100)}._notificationList_1rkvu_1{display:flex;flex-direction:column;gap:2px;background:var(--lhds-color-ui-200)}._toast_1ifzt_1 ._body_1ifzt_2{display:flex;padding-left:48px;padding-bottom:8px}._toastBox_1lvsy_1._toastBox_1lvsy_1{display:inline-block;padding:var(--swui-metrics-spacing) calc(var(--swui-metrics-indent) * 2);border-radius:var(--swui-border-radius);background:var(--lhds-color-ui-50);box-shadow:var(--swui-shadow-popover)}._toastBox_1lvsy_1._toastBox_1lvsy_1._clickable_1lvsy_8{border:1px solid transparent;cursor:pointer}._toastBox_1lvsy_1._toastBox_1lvsy_1._clickable_1lvsy_8:hover{border-color:var(--lhds-color-blue-300)}._toastContainer_1rek2_1 .Toastify__toast{align-items:flex-start}
|
package/dist/index.d.ts
CHANGED
package/dist/index.es.js
CHANGED
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/declarative-modals/DeclarativeModalSetup.ts","../src/declarative-modals/window/BaseWindow.tsx","../src/declarative-modals/drawer/Drawer.tsx","../src/declarative-modals/drawer/DrawerHeader.tsx","../src/declarative-modals/alert/Alert.tsx","../src/declarative-modals/modal/Modal.tsx","../src/declarative-modals/loading-modal/LoadingModal.tsx","../src/declarative-modals/window/WindowHeader.tsx","../src/declarative-modals/window/Window.tsx","../src/declarative-modals/window/WindowFooter.tsx","../src/dialog/DialogContext.ts","../src/dialog/UseDialog.tsx","../src/dialog/UseDialogPromise.ts","../src/dialog/alert/UseAlertDialog.ts","../src/dialog/drawer/UseDrawerDialog.ts","../src/dialog/modal/UseModalDialog.ts","../src/building-blocks/ModalHeading.tsx","../src/building-blocks/ModalActionButtons.tsx","../src/building-blocks/ModalBody.tsx","../src/building-blocks/ModalContainer.tsx","../src/building-blocks/ModalCloseButton.tsx","../src/building-blocks/ModalHeader.tsx","../src/ready-made-modals/InfoAlert.tsx","../src/building-blocks/ModalFooter.tsx","../src/toasts/notification/UnreadDot.tsx","../src/toasts/notification/NotificationHeader.tsx","../src/toasts/notification/Notification.tsx","../src/toasts/notification/NotificationList.tsx","../src/toasts/toast/Toast.tsx","../src/toasts/toast/ToastBox.tsx","../src/toasts/toast-container/ToastContainer.tsx","../src/toasts/toast-container/util/showToast.ts"],"sourcesContent":["import ReactModal from \"react-modal\";\n\nexport const setupDeclarativeModals = (htmlElement: string | HTMLElement) => {\n ReactModal.setAppElement(htmlElement);\n};\n","import * as React from \"react\";\nimport { useRef } from \"react\";\nimport ReactModal from \"react-modal\";\nimport Draggable from \"react-draggable\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface BaseWindowProps extends ReactModal.Props {\n width?: string;\n maxWidth?: string;\n onRequestClose?: () => void;\n draggable?: boolean;\n}\n\nexport const DRAGGABLE_HANDLE_CLASSNAME = \"draggable-modal-handle\";\nexport const DRAGGABLE_CANCEL_CLASSNAME = \"draggable-modal-cancel\";\n\nexport const BaseWindow: React.FC<BaseWindowProps> = ({\n width,\n maxWidth,\n draggable = false,\n children,\n ...reactModalProps\n}) => {\n const nodeRef = useRef<HTMLDivElement>(null);\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n {...reactModalProps}\n >\n <Draggable\n handle={`.${DRAGGABLE_HANDLE_CLASSNAME}`}\n cancel={`.${DRAGGABLE_CANCEL_CLASSNAME}, button, [role=\"tooltip\"]`}\n bounds=\".ReactModal__Overlay\"\n disabled={!draggable}\n nodeRef={nodeRef as React.RefObject<HTMLElement>}\n >\n <div\n style={{\n [\"--swui-modal-width\" as string]: width,\n [\"--swui-modal-max-width\" as string]: maxWidth,\n }}\n className={cx(styles.content, {\n [styles.isDraggable]: draggable,\n })}\n ref={nodeRef}\n >\n {children}\n </div>\n </Draggable>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cx from \"classnames\";\nimport styles from \"./Drawer.module.css\";\nimport { exhaustSwitchCase, FlattenUnion } from \"@stenajs-webui/core\";\nimport {\n SlideFrom,\n SlideFromLeftRight,\n SlideFromTopBottom,\n} from \"../../common-types\";\n\nexport type DrawerProps = DrawerBaseLeftRight | DrawerBaseTopBottom;\n\nexport interface DrawerBaseLeftRight extends DrawerBaseProps {\n width?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('left'|'right')}\n */\n slideFrom?: SlideFromLeftRight;\n}\n\nexport interface DrawerBaseTopBottom extends DrawerBaseProps {\n height?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('top'|'bottom')}\n */\n slideFrom?: SlideFromTopBottom;\n}\n\ninterface DrawerBaseProps\n extends Omit<\n ReactModal.Props,\n | \"closeTimeoutMS\"\n | \"portalClassName\"\n | \"overlayClassName\"\n | \"className\"\n | \"style\"\n | \"parentSelector\"\n > {\n background?: string;\n\n /**\n * When true, there will be a gap between the drawer and the viewport.\n */\n floating?: boolean;\n\n zIndex?: number;\n onRequestClose?: () => void;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n background,\n zIndex,\n children,\n slideFrom = \"left\",\n portalTarget,\n floating,\n ...reactModalProps\n}) => {\n const { height, width } = reactModalProps as FlattenUnion<DrawerProps>;\n\n return (\n <ReactModal\n closeTimeoutMS={250}\n portalClassName={styles.portal}\n overlayClassName={{\n base: styles.overlay,\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n className={{\n base: cx(\n styles.content,\n getClassNameForSlide(slideFrom),\n floating && styles.floating,\n ),\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n style={{ content: { width, height, background }, overlay: { zIndex } }}\n parentSelector={portalTarget ? () => portalTarget : undefined}\n {...reactModalProps}\n >\n {children}\n </ReactModal>\n );\n};\n\nconst getClassNameForSlide = (slideFrom: SlideFrom): string => {\n switch (slideFrom) {\n case \"left\":\n return styles.slideFromLeft;\n case \"right\":\n return styles.slideFromRight;\n case \"top\":\n return styles.slideFromTop;\n case \"bottom\":\n return styles.slideFromBottom;\n default:\n return exhaustSwitchCase(slideFrom, styles.slideFromLeft);\n }\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon, stenaTimes } from \"@stenajs-webui/elements\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DrawerHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n icon?: IconDefinition;\n}\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n header,\n contentRight,\n onRequestClose,\n icon,\n}) => {\n return (\n <Spacing\n position={\"sticky\"}\n top={0}\n zIndex={100}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row alignItems={\"center\"} gap={2}>\n <Space num={1} />\n {icon && <Icon icon={icon} size={24} />}\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Alert.module.css\";\n\nexport interface AlertProps extends ReactModal.Props {\n onRequestClose?: () => void;\n}\n\nconst style = { overlay: { justifyContent: \"center\" } };\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n ...reactModalProps\n}) => {\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n style={style}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { useEventCallback } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./Modal.module.css\";\n\nexport interface ModalProps\n extends Omit<ReactModal.Props, \"className\" | \"overlayClassName\"> {\n background?: string;\n onRequestClose?: () => void;\n className?: string;\n overlayClassName?: string;\n}\n\nconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n background,\n className,\n overlayClassName,\n ...reactModalProps\n}) => {\n const ref = useRef<HTMLDivElement | null>(null);\n\n const [scrollbarGutter, setScrollbarGutter] = useState<\n \"auto\" | \"stable\" | undefined\n >(isSafari ? \"auto\" : undefined);\n\n const style = {\n overlay: { justifyContent: \"center\" },\n content: {\n \"--swui-modal-content-bg-color\": background,\n } as CSSProperties,\n };\n\n const updateScrollbarGutter = useEventCallback(() => {\n if (!isSafari) {\n return;\n }\n\n const container = ref.current;\n if (container) {\n setScrollbarGutter(\n container.scrollHeight > container.clientHeight ? \"stable\" : \"auto\",\n );\n }\n });\n\n /**\n * Applying scrollbar-gutter fixes a glitch in Safari where redraw\n * sometimes makes the modal change width (with or without gutter included in size calculation).\n * This causes the modal to jump around when hovering with mouse or resizing window.\n *\n * If this glitch is fixed in Safari, this code can be removed.\n */\n\n useEffect(() => {\n window.addEventListener(\"resize\", updateScrollbarGutter);\n document.addEventListener(\"DOMContentLoaded\", updateScrollbarGutter);\n return () => {\n window.removeEventListener(\"resize\", updateScrollbarGutter);\n document.removeEventListener(\"DOMContentLoaded\", updateScrollbarGutter);\n };\n }, [updateScrollbarGutter]);\n\n return (\n <ReactModal\n overlayClassName={{\n base: cx(overlayClassName, styles.overlay),\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n className={{\n base: cx(className, styles.modal),\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n style={style}\n closeTimeoutMS={250}\n onAfterOpen={updateScrollbarGutter}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{\n [\"--swui-modal-width\" as string]: \"fit-content\",\n scrollbarGutter,\n }}\n ref={ref}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n Box,\n Column,\n Heading,\n Indent,\n Row,\n Spacing,\n} from \"@stenajs-webui/core\";\nimport { Icon, Spinner } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./LoadingModal.module.css\";\n\nexport interface LoadingModalProps extends Omit<ReactModal.Props, \"isOpen\"> {\n headerText?: string;\n headerIconLeft?: IconDefinition;\n}\n\nexport const LoadingModal: React.FC<LoadingModalProps> = ({\n headerIconLeft,\n headerText,\n shouldCloseOnOverlayClick = false,\n shouldCloseOnEsc = false,\n ...modalProps\n}) => {\n return (\n <ReactModal\n {...modalProps}\n isOpen\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEsc={shouldCloseOnEsc}\n className={styles.modal}\n overlayClassName={styles.overlay}\n >\n <Column spacing={2} alignItems={\"center\"}>\n <Box\n alignItems={\"center\"}\n justifyContent={\"center\"}\n width={\"64px\"}\n height={\"64px\"}\n borderRadius={\"50%\"}\n background={\"white\"}\n shadow={\"modal\"}\n >\n <Spinner size={\"small\"} />\n </Box>\n {(headerIconLeft || headerText) && (\n <>\n <Spacing />\n <Row indent={2}>\n {headerIconLeft && (\n <>\n <Icon size={14} icon={headerIconLeft} color={\"white\"} />\n <Indent />\n </>\n )}\n {headerText && (\n <Heading variant={\"h4\"} color={\"white\"}>\n {headerText}\n </Heading>\n )}\n </Row>\n </>\n )}\n </Column>\n </ReactModal>\n );\n};\n","import { CloseButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n DRAGGABLE_CANCEL_CLASSNAME,\n DRAGGABLE_HANDLE_CLASSNAME,\n} from \"./BaseWindow\";\nimport { Box, Row, Txt } from \"@stenajs-webui/core\";\n\nexport interface WindowHeaderProps {\n onRequestClose?: () => void;\n header?: ReactNode;\n headerText?: string;\n closeButtonClassName?: string;\n}\n\nexport const WindowHeader: React.FC<WindowHeaderProps> = ({\n onRequestClose,\n header,\n headerText,\n closeButtonClassName,\n}) => {\n return (\n <Row\n spacing={2}\n indent={2}\n borderBottom={\"1px solid var(--lhds-color-ui-300)\"}\n className={DRAGGABLE_HANDLE_CLASSNAME}\n >\n <Row flex={1} indent alignItems={\"center\"}>\n {headerText && (\n <Txt className={DRAGGABLE_CANCEL_CLASSNAME} size={\"large\"}>\n {headerText}\n </Txt>\n )}\n {header}\n </Row>\n <Box alignSelf={\"flex-start\"}>\n <CloseButton\n className={closeButtonClassName}\n onClick={onRequestClose}\n />\n </Box>\n </Row>\n );\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { BaseWindow, BaseWindowProps } from \"./BaseWindow\";\nimport { WindowHeader, WindowHeaderProps } from \"./WindowHeader\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface WindowProps extends BaseWindowProps, WindowHeaderProps {\n spacing?: number;\n indent?: number;\n draggable?: boolean;\n footer?: React.ReactNode;\n disableStickyFooter?: boolean;\n}\n\nexport const Window: React.FC<WindowProps> = ({\n header,\n headerText,\n children,\n spacing,\n indent,\n draggable = false,\n onRequestClose,\n closeButtonClassName,\n footer,\n disableStickyFooter = false,\n ...props\n}) => {\n const activeSpacing = typeof spacing === \"number\" ? spacing : 1;\n const activeIndent = typeof indent === \"number\" ? indent : 1;\n\n return (\n <BaseWindow\n {...props}\n onRequestClose={onRequestClose}\n draggable={draggable}\n >\n <WindowHeader\n onRequestClose={onRequestClose}\n header={header}\n headerText={headerText}\n closeButtonClassName={closeButtonClassName}\n />\n <Box spacing={activeSpacing} indent={activeIndent}>\n {children}\n </Box>\n {footer && (\n <Box\n className={cx(styles.footer, {\n [styles.stickyFooter]: !disableStickyFooter,\n })}\n >\n {footer}\n </Box>\n )}\n </BaseWindow>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface WindowFooterProps {\n children?: ReactNode;\n}\n\nexport const WindowFooter: React.FC<WindowFooterProps> = ({ children }) => (\n <Column indent={2} spacing={2}>\n {children}\n </Column>\n);\n","import { createContext } from \"react\";\nimport { RejectCommand, ResolveCommand } from \"./DialogCommands\";\n\nexport interface DialogContextValue<TResolveValue> {\n resolve: ResolveCommand<TResolveValue>;\n reject: RejectCommand;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const DialogContext = createContext<DialogContextValue<any> | undefined>(\n undefined,\n);\n","import cx from \"classnames\";\nimport React, {\n CSSProperties,\n MouseEventHandler,\n ReactEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { RejectCommand, ResolveCommand, ShowCommand } from \"./DialogCommands\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\nimport { Modal } from \"../declarative-modals/modal/Modal\";\n\ntype UseDialogCallbacks<TProps, TPromiseResolve> = {\n show: ShowCommand<TProps, TPromiseResolve>;\n reject: RejectCommand;\n};\n\nexport type UseDialogResult<TProps, TPromiseResolve> = [\n ReactNode,\n UseDialogCallbacks<TProps, TPromiseResolve>,\n];\n\nexport interface DialogOptions {\n divInsteadOfDialog?: boolean;\n elementId?: string;\n background?: string;\n disableCloseOnClickOutside?: boolean;\n modal: boolean;\n className: string;\n closingClassName: string;\n contentWrapperClassName: string;\n contentWrapperStyle?: CSSProperties;\n dialogStyle?: CSSProperties;\n ref?: RefObject<HTMLDialogElement | null>;\n onResolve?: () => void;\n onReject?: () => void;\n /**\n * Sets aria-label on modal or dialog element.\n */\n label?: string;\n /**\n * Sets aria-labelledby on modal or dialog element.\n */\n labelledby?: string;\n /**\n * Sets aria-describedby on modal or dialog element.\n */\n describedby?: string;\n}\n\nexport function useDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n {\n ref,\n modal,\n contentWrapperClassName,\n closingClassName,\n contentWrapperStyle,\n dialogStyle,\n divInsteadOfDialog,\n disableCloseOnClickOutside,\n elementId,\n onResolve,\n onReject,\n className,\n background,\n label,\n labelledby,\n describedby,\n }: DialogOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n const localRef = useRef<HTMLDialogElement>(null);\n const currentRef = ref ?? localRef;\n const [key, forceRerender] = useReducer((x) => x + 1, 0);\n const promiseRef = useRef<Promise<TPromiseResolve | undefined>>(null);\n const resolveRef = useRef<ResolveCommand<TPromiseResolve> | undefined>(null);\n const modalComponentProps = useRef<TProps>(undefined);\n const closedByPromiseRef = useRef<boolean>(false);\n const rejectRef = useRef<RejectCommand | undefined>(null);\n /**\n * Used by Modal to control open/close with animation.\n */\n const [isOpen, setIsOpen] = useState(false);\n /**\n * Used by both Modal and dialog to decide if content is visible. When props is cleared, we can not render content that requires props.\n */\n const [contentVisible, setContentVisible] = useState(false);\n /**\n * Used by dialog to know if it is currently animating to closed state.\n */\n const [closing, setClosing] = useState(false);\n\n const Comp = component;\n\n const show = useCallback<ShowCommand<TProps, TPromiseResolve>>(\n (props?: TProps) => {\n promiseRef.current = new Promise<TPromiseResolve | undefined>(\n (resolve, reject) => {\n resolveRef.current = resolve;\n rejectRef.current = reject;\n },\n );\n setClosing(false);\n setIsOpen(true);\n setContentVisible(true);\n forceRerender();\n closedByPromiseRef.current = false;\n modalComponentProps.current = props;\n if (modal) {\n currentRef.current?.showModal();\n } else {\n currentRef.current?.show();\n }\n return promiseRef.current;\n },\n [currentRef, modal],\n );\n\n const resolve = useCallback<ResolveCommand<TPromiseResolve>>(\n (value) => {\n closedByPromiseRef.current = true;\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n (ev) => {\n ev.stopPropagation();\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n }, 300);\n }\n },\n [currentRef, onResolve, divInsteadOfDialog],\n );\n\n const reject = useCallback<RejectCommand>(\n (error) => {\n closedByPromiseRef.current = true;\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n (ev) => {\n ev.stopPropagation();\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n }, 300);\n }\n },\n [currentRef, divInsteadOfDialog, onReject],\n );\n\n const onClose = useCallback<ReactEventHandler<HTMLDialogElement>>(\n (ev) => {\n // Remove content immediately, since it cannot be animated when closed by browser.\n ev.stopPropagation();\n if (!closedByPromiseRef.current) {\n setClosing(false);\n setIsOpen(false);\n setContentVisible(false);\n rejectRef.current?.();\n onReject?.();\n modalComponentProps.current = undefined;\n }\n },\n [onReject],\n );\n\n const onClick = useCallback<MouseEventHandler<HTMLDialogElement>>(\n (e) => {\n if (e.target !== currentRef.current) {\n return;\n }\n\n const rect = currentRef.current.getBoundingClientRect();\n\n const clickedInsideDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!clickedInsideDialog) {\n reject();\n }\n },\n [currentRef, reject],\n );\n\n const contextValue = useMemo(\n () => ({ resolve, reject }) as DialogContextValue<unknown>,\n [reject, resolve],\n );\n\n const element = useMemo<ReactNode>(\n () =>\n divInsteadOfDialog ? (\n <Modal\n isOpen={isOpen}\n onRequestClose={reject}\n background={background}\n contentLabel={label}\n id={elementId}\n aria={{ modal: true, labelledby, describedby }}\n >\n <DialogContext.Provider value={contextValue}>\n {contentVisible && (\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n )}\n </DialogContext.Provider>\n </Modal>\n ) : (\n <dialog\n onClick={disableCloseOnClickOutside ? undefined : onClick}\n onClose={onClose}\n ref={currentRef}\n id={elementId}\n className={cx(className, closing && closingClassName)}\n aria-label={label}\n aria-labelledby={labelledby}\n aria-describedby={describedby}\n style={{ background: background, ...dialogStyle }}\n >\n <div style={contentWrapperStyle} className={contentWrapperClassName}>\n {contentVisible && (\n <DialogContext.Provider value={contextValue}>\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n </DialogContext.Provider>\n )}\n </div>\n </dialog>\n ),\n [\n divInsteadOfDialog,\n isOpen,\n reject,\n background,\n label,\n elementId,\n labelledby,\n describedby,\n contextValue,\n contentVisible,\n Comp,\n key,\n disableCloseOnClickOutside,\n onClick,\n onClose,\n currentRef,\n className,\n closing,\n closingClassName,\n dialogStyle,\n contentWrapperStyle,\n contentWrapperClassName,\n ],\n );\n\n return [element, { show, reject }];\n}\n","import { useContext } from \"react\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\n\nexport const useDialogPromise = <\n TResolveValue = void,\n>(): DialogContextValue<TResolveValue> => {\n const context = useContext(DialogContext);\n if (context == null) {\n throw new Error(\"useDialogPromise is being used outside of dialog.\");\n }\n return context as DialogContextValue<TResolveValue>;\n};\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./AlertDialog.module.css\";\n\nexport function useAlertDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.alertDialog),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./DrawerDialog.module.css\";\nimport { SlideFrom } from \"../../common-types\";\n\ninterface DrawerOptions\n extends Partial<Omit<DialogOptions, \"disableCloseOnClickOutside\">> {}\n\nexport function useDrawerDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n slideFrom: SlideFrom = \"left\",\n options?: DrawerOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n disableCloseOnClickOutside: true,\n modal: false,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.drawerDialog, styles[slideFrom]),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./ModalDialog.module.css\";\n\nexport function useModalDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.modalDialog),\n });\n}\n","import * as React from \"react\";\nimport { Heading, HeadingVariant } from \"@stenajs-webui/core\";\n\nexport type ModalHeadingSizeVariant = \"medium\" | \"large\";\n\nexport interface ModalHeadingProps {\n size?: ModalHeadingSizeVariant;\n children: string;\n headingLevel?: HeadingVariant;\n}\n\nexport const ModalHeading: React.FC<ModalHeadingProps> = ({\n headingLevel = \"h2\",\n size = \"medium\",\n children,\n}) => {\n return (\n <Heading variant={size === \"medium\" ? \"h3\" : \"h1\"} as={headingLevel}>\n {children}\n </Heading>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport styles from \"./ModalActionButtons.module.css\";\nimport { Box, Spacing } from \"@stenajs-webui/core\";\n\nexport interface ModalActionButtonsProps extends PropsWithChildren {}\n\nexport const ModalActionButtons: React.FC<ModalActionButtonsProps> = ({\n children,\n}) => {\n return (\n <Box width={\"100%\"}>\n <Spacing />\n <div className={styles.modalActionButtons}>{children}</div>\n </Box>\n );\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport styles from \"./ModalBody.module.css\";\nimport cx from \"classnames\";\n\nexport type ModalBodyVariant = \"normal\" | \"relaxed\";\n\nexport interface ModalBodyProps extends Omit<BoxProps, \"indent\" | \"spacing\"> {\n variant?: ModalBodyVariant;\n}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({\n gap = 3,\n variant = \"normal\",\n className,\n ...props\n}) => {\n return (\n <Column\n className={cx(styles.modalBody, styles[variant], className)}\n indent={variant === \"relaxed\" ? 5 : 3}\n spacing={variant === \"relaxed\" ? 5 : 3}\n gap={gap}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport interface ModalContainerProps\n extends PropsWithChildren,\n Pick<BoxProps, \"maxWidth\"> {}\n\nexport const ModalContainer: React.FC<ModalContainerProps> = ({\n children,\n maxWidth,\n}) => {\n return (\n <Column\n flex={1}\n height={\"100%\"}\n justifyContent={\"space-between\"}\n maxWidth={maxWidth}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaTimesThick,\n} from \"@stenajs-webui/elements\";\n\nexport interface ModalCloseButtonProps extends FlatButtonProps {}\n\nexport const ModalCloseButton: React.FC<ModalCloseButtonProps> = (props) => {\n return (\n <FlatButton\n size={\"large\"}\n variant={\"danger\"}\n leftIcon={stenaTimesThick}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { Column, HeadingVariant, Row } from \"@stenajs-webui/core\";\nimport { ModalHeading, ModalHeadingSizeVariant } from \"./ModalHeading\";\nimport { ModalCloseButton } from \"./ModalCloseButton\";\n\nexport type ModalHeaderProps =\n | ModalHeaderWithCloseButtonProps\n | ModalHeaderWithNoCloseButtonProps;\n\nexport interface ModalHeaderCommonProps {\n heading?: string;\n headingSize?: ModalHeadingSizeVariant;\n headingLevel?: HeadingVariant;\n}\n\nexport interface ModalHeaderWithCloseButtonProps\n extends ModalHeaderCommonProps {\n onClickClose?: never;\n closeButtonAriaLabel?: never;\n}\n\nexport interface ModalHeaderWithNoCloseButtonProps\n extends ModalHeaderCommonProps {\n onClickClose: () => void;\n closeButtonAriaLabel: string;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({\n heading,\n headingLevel,\n headingSize,\n onClickClose,\n closeButtonAriaLabel,\n}) => {\n return (\n <Column>\n <Row justifyContent={\"space-between\"} alignItems={\"center\"} gap={2}>\n {heading ? (\n <ModalHeading headingLevel={headingLevel} size={headingSize}>\n {heading}\n </ModalHeading>\n ) : (\n <div />\n )}\n {onClickClose ? (\n <ModalCloseButton\n onClick={onClickClose}\n size={headingSize}\n aria-label={closeButtonAriaLabel}\n />\n ) : null}\n </Row>\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Column, Spacing, Text } from \"@stenajs-webui/core\";\nimport { ModalHeading } from \"../building-blocks/ModalHeading\";\nimport { ModalActionButtons } from \"../building-blocks/ModalActionButtons\";\nimport { CircledIcon, MediumIcon } from \"@stenajs-webui/elements\";\nimport { ModalBody } from \"../building-blocks/ModalBody\";\nimport { ModalContainer } from \"../building-blocks/ModalContainer\";\nimport { ModalHeader } from \"../building-blocks/ModalHeader\";\n\nexport type InfoAlertProps =\n | InfoAlertPropsWithNoCloseButton\n | InfoAlertPropsWithCloseButton;\n\nexport interface InfoAlertCommonProps extends PropsWithChildren {\n heading: string;\n text?: string;\n buttons?: ReactNode;\n icon?: MediumIcon;\n maxWidth?: string;\n minWidth?: string;\n}\n\nexport interface InfoAlertPropsWithNoCloseButton extends InfoAlertCommonProps {\n onClickClose?: never;\n closeButtonAriaLabel?: never;\n}\n\nexport interface InfoAlertPropsWithCloseButton extends InfoAlertCommonProps {\n onClickClose: () => void;\n closeButtonAriaLabel: string;\n}\n\nexport const InfoAlert: React.FC<InfoAlertProps> = ({\n icon,\n buttons,\n heading,\n text,\n children,\n maxWidth,\n minWidth,\n ...props\n}) => {\n return (\n <ModalContainer>\n <ModalBody gap={0}>\n {props.onClickClose && (\n <ModalHeader\n onClickClose={props.onClickClose}\n closeButtonAriaLabel={props.closeButtonAriaLabel}\n />\n )}\n <Column\n gap={2}\n flexDirection={\"column\"}\n alignItems={\"center\"}\n maxWidth={maxWidth}\n minWidth={minWidth}\n >\n {icon && (\n <>\n {!props.onClickClose && <Spacing />}\n <CircledIcon icon={icon} size={\"large\"} />\n <Spacing />\n </>\n )}\n <ModalHeading>{heading}</ModalHeading>\n {text && <Text textAlign={\"center\"}>{text}</Text>}\n {children}\n {buttons && <ModalActionButtons>{buttons}</ModalActionButtons>}\n </Column>\n </ModalBody>\n </ModalContainer>\n );\n};\n","import { BoxProps, Row } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./ModalFooter.module.css\";\n\nexport interface ModalFooterProps extends BoxProps {\n sticky?: boolean;\n gap?: number;\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({\n sticky,\n zIndex = 4,\n gap = 2,\n className,\n ...boxProps\n}) => {\n return (\n <Row\n className={cx(styles.modalFooter, sticky && styles.sticky, className)}\n shadow={\"var(--swui-sticky-footer-shadow)\"}\n zIndex={zIndex}\n gap={gap}\n {...boxProps}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./UnreadDot.module.css\";\n\nexport interface UnreadDotProps {\n children: ReactNode;\n}\n\nexport const UnreadDot: React.FC<UnreadDotProps> = ({ children }) => {\n return (\n <div className={styles.unreadDot}>\n {children}\n <div className={styles.dot} />\n </div>\n );\n};\n","import { Box, Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { CircledIcon, CloseButton, MediumIcon } from \"@stenajs-webui/elements\";\nimport { cssColor, CssPropColor } from \"@stenajs-webui/theme\";\nimport { UnreadDot } from \"./UnreadDot\";\nimport { NotificationVariant } from \"./Notification\";\nimport styles from \"./NotificationHeader.module.css\";\n\nexport interface NotificationHeaderProps {\n /** Text. */\n text: string;\n /** Timestamp. */\n timestamp?: string;\n /** Icon. */\n icon?: MediumIcon;\n /** Icon description for accessibility. */\n iconAriaLabel?: string;\n /** Left content instead of icon. */\n contentLeft?: React.ReactNode;\n /** Right content. */\n contentRight?: React.ReactNode;\n /** What happens on clicking close. */\n onClickClose?: () => void;\n /** Mark the notification as unread */\n unread?: boolean;\n /** Notification variant. Will affect icon bg color */\n variant?: NotificationVariant;\n /** Icon background color. Will override other icon bg color */\n iconBackgroundColor?: CssPropColor;\n /** Force alignment of text for close button. This is used with toastify, which adds close button outside of the header. */\n forceCloseButtonAlignment?: boolean;\n}\n\nexport const NotificationHeader: React.FC<NotificationHeaderProps> = ({\n text,\n timestamp,\n icon,\n iconAriaLabel,\n contentLeft,\n contentRight,\n onClickClose,\n unread = false,\n variant,\n iconBackgroundColor,\n forceCloseButtonAlignment,\n}) => {\n const circledIcon = icon ? (\n <CircledIcon\n size={\"small\"}\n icon={icon}\n aria-label={iconAriaLabel}\n variant={\"whiteBg\"}\n backgroundColor={\n iconBackgroundColor\n ? iconBackgroundColor\n : getIconBgColorFromVariant(unread, variant)\n }\n />\n ) : undefined;\n\n return (\n <Row\n alignItems={\"flex-start\"}\n justifyContent={\"space-between\"}\n data-comp={\"NotificationHeader\"}\n className={styles.notificationHeader}\n gap={2}\n >\n <Row gap={2} alignItems={\"flex-start\"}>\n {contentLeft && (\n <Column justifyContent={\"center\"}>{contentLeft}</Column>\n )}\n {!contentLeft && circledIcon && (\n <Row alignItems={\"center\"} height={\"40px\"}>\n {unread ? <UnreadDot>{circledIcon}</UnreadDot> : circledIcon}\n </Row>\n )}\n <Box minHeight={20} justifyContent={\"center\"} flex={1} gap={0.5}>\n {icon || onClickClose || forceCloseButtonAlignment ? (\n <Space num={0.5} />\n ) : null}\n <Text variant={\"bold\"}>{text}</Text>\n {timestamp && (\n <div className={styles.timestamp}>\n <Text\n size={\"small\"}\n color={cssColor(\n unread ? \"--lhds-color-blue-600\" : \"--lhds-color-ui-600\",\n )}\n >\n {timestamp}\n </Text>\n </div>\n )}\n </Box>\n </Row>\n {contentRight && (\n <Column justifyContent={\"center\"}>{contentRight}</Column>\n )}\n {onClickClose && (\n <Row alignItems={\"center\"} height={\"40px\"} width={\"40px\"}>\n <CloseButton onClick={onClickClose} />\n </Row>\n )}\n </Row>\n );\n};\n\nexport const getIconBgColorFromVariant = (\n unread: boolean,\n variant?: NotificationVariant,\n): CssPropColor | undefined => {\n if (!unread && variant === \"standard\") {\n return undefined;\n }\n return \"--lhds-color-ui-50\";\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n NotificationHeader,\n NotificationHeaderProps,\n} from \"./NotificationHeader\";\nimport styles from \"./Notification.module.css\";\nimport cx from \"classnames\";\n\nexport type NotificationVariant = \"standard\" | \"danger\";\n\nexport interface NotificationProps extends NotificationHeaderProps {\n children?: ReactNode;\n}\n\nexport const Notification: React.FC<NotificationProps> = ({\n variant = \"standard\",\n children,\n unread,\n ...headerProps\n}) => (\n <div\n data-comp={\"Notification\"}\n className={cx(\n styles.notification,\n styles[variant],\n unread && styles.unread,\n )}\n >\n <NotificationHeader {...headerProps} unread={unread} variant={variant} />\n {children && <Column className={styles.body}>{children}</Column>}\n </div>\n);\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./NotificationList.module.css\";\n\nexport interface NotificationListProps {\n children?: ReactNode;\n}\n\nexport const NotificationList: React.FC<NotificationListProps> = ({\n children,\n}) => {\n return (\n <div data-comp={\"NotificationList\"} className={styles.notificationList}>\n {children}\n <div />\n </div>\n );\n};\n","import { Box, BoxProps } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport styles from \"./Toast.module.css\";\nimport {\n NotificationHeader,\n NotificationHeaderProps,\n} from \"../notification/NotificationHeader\";\n\nexport interface ToastProps\n extends Pick<BoxProps, \"children\" | \"width\" | \"maxWidth\">,\n Omit<NotificationHeaderProps, \"contentRight\"> {}\n\nexport const Toast: React.FC<ToastProps> = ({\n children,\n width = 364,\n maxWidth,\n ...headerProps\n}) => (\n <Box\n className={styles.toast}\n data-comp={\"Toast\"}\n width={width}\n maxWidth={maxWidth}\n >\n <NotificationHeader forceCloseButtonAlignment {...headerProps} />\n {children && <div className={styles.body}>{children}</div>}\n </Box>\n);\n","import * as React from \"react\";\nimport { Box, BoxProps } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport styles from \"./ToastBox.module.css\";\n\nexport interface ToastBoxProps extends BoxProps {}\n\nexport const ToastBox: React.FC<ToastBoxProps> = ({ className, ...props }) => {\n return (\n <Box\n as={props.onClick ? \"button\" : undefined}\n className={cx(\n className,\n styles.toastBox,\n props.onClick && styles.clickable,\n )}\n data-comp={\"Toast\"}\n role={\"alert\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport {\n ToastContainer as ToastifyToastContainer,\n ToastContainerProps as ToastifyToastContainerProps,\n} from \"react-toastify\";\nimport styles from \"./ToastContainer.module.css\";\nimport { CloseButton } from \"@stenajs-webui/elements\";\n\nexport type ToastContainerProps = ToastifyToastContainerProps;\n\nexport const ToastContainer: React.FC<ToastContainerProps> = ({ ...props }) => {\n return (\n <ToastifyToastContainer\n className={styles.toastContainer}\n closeButton={({ closeToast }) => <CloseButton onClick={closeToast} />}\n hideProgressBar={true}\n pauseOnFocusLoss={false}\n pauseOnHover={true}\n draggable={false}\n {...props}\n />\n );\n};\n","import { toast, ToastContent, ToastOptions } from \"react-toastify\";\n\nexport const showToast = <T>(\n content: ToastContent<T>,\n options?: ToastOptions<T> | undefined,\n) => toast<T>(content, options);\n"],"names":["setupDeclarativeModals","htmlElement","ReactModal","DRAGGABLE_HANDLE_CLASSNAME","DRAGGABLE_CANCEL_CLASSNAME","BaseWindow","width","maxWidth","draggable","children","reactModalProps","nodeRef","useRef","jsx","styles","Draggable","cx","Drawer","background","zIndex","slideFrom","portalTarget","floating","height","getClassNameForSlide","exhaustSwitchCase","DrawerHeader","header","contentRight","onRequestClose","icon","Spacing","cssColor","jsxs","Row","Space","Icon","Heading","FlatButton","stenaTimes","style","Alert","isSafari","Modal","className","overlayClassName","ref","scrollbarGutter","setScrollbarGutter","useState","updateScrollbarGutter","useEventCallback","container","useEffect","LoadingModal","headerIconLeft","headerText","shouldCloseOnOverlayClick","shouldCloseOnEsc","modalProps","Column","Box","Spinner","Fragment","Indent","WindowHeader","closeButtonClassName","Txt","CloseButton","Window","spacing","indent","footer","disableStickyFooter","props","WindowFooter","DialogContext","createContext","useDialog","component","modal","contentWrapperClassName","closingClassName","contentWrapperStyle","dialogStyle","divInsteadOfDialog","disableCloseOnClickOutside","elementId","onResolve","onReject","label","labelledby","describedby","localRef","currentRef","key","forceRerender","useReducer","x","promiseRef","resolveRef","modalComponentProps","closedByPromiseRef","rejectRef","isOpen","setIsOpen","contentVisible","setContentVisible","closing","setClosing","Comp","show","useCallback","resolve","reject","value","ev","error","onClose","onClick","e","rect","contextValue","useMemo","createElement","useDialogPromise","context","useContext","useAlertDialog","options","useDrawerDialog","useModalDialog","ModalHeading","headingLevel","size","ModalActionButtons","ModalBody","gap","variant","ModalContainer","ModalCloseButton","stenaTimesThick","ModalHeader","heading","headingSize","onClickClose","closeButtonAriaLabel","InfoAlert","buttons","text","minWidth","CircledIcon","Text","ModalFooter","sticky","boxProps","UnreadDot","NotificationHeader","timestamp","iconAriaLabel","contentLeft","unread","iconBackgroundColor","forceCloseButtonAlignment","circledIcon","getIconBgColorFromVariant","Notification","headerProps","NotificationList","Toast","ToastBox","ToastContainer","ToastifyToastContainer","closeToast","showToast","content","toast"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/declarative-modals/DeclarativeModalSetup.ts","../src/declarative-modals/window/BaseWindow.tsx","../src/declarative-modals/drawer/Drawer.tsx","../src/declarative-modals/drawer/DrawerHeader.tsx","../src/declarative-modals/alert/Alert.tsx","../src/declarative-modals/modal/Modal.tsx","../src/declarative-modals/loading-modal/LoadingModal.tsx","../src/declarative-modals/window/WindowHeader.tsx","../src/declarative-modals/window/Window.tsx","../src/declarative-modals/window/WindowFooter.tsx","../src/dialog/DialogContext.ts","../src/dialog/UseDialog.tsx","../src/dialog/UseDialogPromise.ts","../src/dialog/alert/UseAlertDialog.ts","../src/dialog/drawer/UseDrawerDialog.ts","../src/dialog/modal/UseModalDialog.ts","../src/building-blocks/ModalHeading.tsx","../src/building-blocks/ModalActionButtons.tsx","../src/building-blocks/ModalBody.tsx","../src/building-blocks/ModalContainer.tsx","../src/building-blocks/ModalCloseButton.tsx","../src/building-blocks/ModalHeader.tsx","../src/ready-made-modals/InfoAlert.tsx","../src/building-blocks/ModalFooter.tsx","../src/toasts/notification/UnreadDot.tsx","../src/toasts/notification/NotificationHeader.tsx","../src/toasts/notification/Notification.tsx","../src/toasts/notification/NotificationList.tsx","../src/toasts/toast/Toast.tsx","../src/toasts/toast/ToastBox.tsx","../src/toasts/toast-container/ToastContainer.tsx","../src/toasts/toast-container/util/showToast.ts"],"sourcesContent":["import ReactModal from \"react-modal\";\n\nexport const setupDeclarativeModals = (htmlElement: string | HTMLElement) => {\n ReactModal.setAppElement(htmlElement);\n};\n","import * as React from \"react\";\nimport { useRef } from \"react\";\nimport ReactModal from \"react-modal\";\nimport Draggable from \"react-draggable\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface BaseWindowProps extends ReactModal.Props {\n width?: string;\n maxWidth?: string;\n onRequestClose?: () => void;\n draggable?: boolean;\n}\n\nexport const DRAGGABLE_HANDLE_CLASSNAME = \"draggable-modal-handle\";\nexport const DRAGGABLE_CANCEL_CLASSNAME = \"draggable-modal-cancel\";\n\nexport const BaseWindow: React.FC<BaseWindowProps> = ({\n width,\n maxWidth,\n draggable = false,\n children,\n ...reactModalProps\n}) => {\n const nodeRef = useRef<HTMLDivElement>(null);\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n {...reactModalProps}\n >\n <Draggable\n handle={`.${DRAGGABLE_HANDLE_CLASSNAME}`}\n cancel={`.${DRAGGABLE_CANCEL_CLASSNAME}, button, [role=\"tooltip\"]`}\n bounds=\".ReactModal__Overlay\"\n disabled={!draggable}\n nodeRef={nodeRef as React.RefObject<HTMLElement>}\n >\n <div\n style={{\n [\"--swui-modal-width\" as string]: width,\n [\"--swui-modal-max-width\" as string]: maxWidth,\n }}\n className={cx(styles.content, {\n [styles.isDraggable]: draggable,\n })}\n ref={nodeRef}\n >\n {children}\n </div>\n </Draggable>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cx from \"classnames\";\nimport styles from \"./Drawer.module.css\";\nimport { exhaustSwitchCase, FlattenUnion } from \"@stenajs-webui/core\";\nimport {\n SlideFrom,\n SlideFromLeftRight,\n SlideFromTopBottom,\n} from \"../../common-types\";\n\nexport type DrawerProps = DrawerBaseLeftRight | DrawerBaseTopBottom;\n\nexport interface DrawerBaseLeftRight extends DrawerBaseProps {\n width?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('left'|'right')}\n */\n slideFrom?: SlideFromLeftRight;\n}\n\nexport interface DrawerBaseTopBottom extends DrawerBaseProps {\n height?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('top'|'bottom')}\n */\n slideFrom?: SlideFromTopBottom;\n}\n\ninterface DrawerBaseProps\n extends Omit<\n ReactModal.Props,\n | \"closeTimeoutMS\"\n | \"portalClassName\"\n | \"overlayClassName\"\n | \"className\"\n | \"style\"\n | \"parentSelector\"\n > {\n background?: string;\n\n /**\n * When true, there will be a gap between the drawer and the viewport.\n */\n floating?: boolean;\n\n zIndex?: number;\n onRequestClose?: () => void;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n background,\n zIndex,\n children,\n slideFrom = \"left\",\n portalTarget,\n floating,\n ...reactModalProps\n}) => {\n const { height, width } = reactModalProps as FlattenUnion<DrawerProps>;\n\n return (\n <ReactModal\n closeTimeoutMS={250}\n portalClassName={styles.portal}\n overlayClassName={{\n base: styles.overlay,\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n className={{\n base: cx(\n styles.content,\n getClassNameForSlide(slideFrom),\n floating && styles.floating,\n ),\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n style={{ content: { width, height, background }, overlay: { zIndex } }}\n parentSelector={portalTarget ? () => portalTarget : undefined}\n {...reactModalProps}\n >\n {children}\n </ReactModal>\n );\n};\n\nconst getClassNameForSlide = (slideFrom: SlideFrom): string => {\n switch (slideFrom) {\n case \"left\":\n return styles.slideFromLeft;\n case \"right\":\n return styles.slideFromRight;\n case \"top\":\n return styles.slideFromTop;\n case \"bottom\":\n return styles.slideFromBottom;\n default:\n return exhaustSwitchCase(slideFrom, styles.slideFromLeft);\n }\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon, stenaTimes } from \"@stenajs-webui/elements\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DrawerHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n icon?: IconDefinition;\n}\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n header,\n contentRight,\n onRequestClose,\n icon,\n}) => {\n return (\n <Spacing\n position={\"sticky\"}\n top={0}\n zIndex={100}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row alignItems={\"center\"} gap={2}>\n <Space num={1} />\n {icon && <Icon icon={icon} size={24} />}\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Alert.module.css\";\n\nexport interface AlertProps extends ReactModal.Props {\n onRequestClose?: () => void;\n}\n\nconst style = { overlay: { justifyContent: \"center\" } };\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n ...reactModalProps\n}) => {\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n style={style}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { useEventCallback } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./Modal.module.css\";\n\nexport interface ModalProps\n extends Omit<ReactModal.Props, \"className\" | \"overlayClassName\"> {\n background?: string;\n onRequestClose?: () => void;\n className?: string;\n overlayClassName?: string;\n}\n\nconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n background,\n className,\n overlayClassName,\n ...reactModalProps\n}) => {\n const ref = useRef<HTMLDivElement | null>(null);\n\n const [scrollbarGutter, setScrollbarGutter] = useState<\n \"auto\" | \"stable\" | undefined\n >(isSafari ? \"auto\" : undefined);\n\n const style = {\n overlay: { justifyContent: \"center\" },\n content: {\n \"--swui-modal-content-bg-color\": background,\n } as CSSProperties,\n };\n\n const updateScrollbarGutter = useEventCallback(() => {\n if (!isSafari) {\n return;\n }\n\n const container = ref.current;\n if (container) {\n setScrollbarGutter(\n container.scrollHeight > container.clientHeight ? \"stable\" : \"auto\",\n );\n }\n });\n\n /**\n * Applying scrollbar-gutter fixes a glitch in Safari where redraw\n * sometimes makes the modal change width (with or without gutter included in size calculation).\n * This causes the modal to jump around when hovering with mouse or resizing window.\n *\n * If this glitch is fixed in Safari, this code can be removed.\n */\n\n useEffect(() => {\n window.addEventListener(\"resize\", updateScrollbarGutter);\n document.addEventListener(\"DOMContentLoaded\", updateScrollbarGutter);\n return () => {\n window.removeEventListener(\"resize\", updateScrollbarGutter);\n document.removeEventListener(\"DOMContentLoaded\", updateScrollbarGutter);\n };\n }, [updateScrollbarGutter]);\n\n return (\n <ReactModal\n overlayClassName={{\n base: cx(overlayClassName, styles.overlay),\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n className={{\n base: cx(className, styles.modal),\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n style={style}\n closeTimeoutMS={250}\n onAfterOpen={updateScrollbarGutter}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{\n [\"--swui-modal-width\" as string]: \"fit-content\",\n scrollbarGutter,\n }}\n ref={ref}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n Box,\n Column,\n Heading,\n Indent,\n Row,\n Spacing,\n} from \"@stenajs-webui/core\";\nimport { Icon, Spinner } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./LoadingModal.module.css\";\n\nexport interface LoadingModalProps extends Omit<ReactModal.Props, \"isOpen\"> {\n headerText?: string;\n headerIconLeft?: IconDefinition;\n}\n\nexport const LoadingModal: React.FC<LoadingModalProps> = ({\n headerIconLeft,\n headerText,\n shouldCloseOnOverlayClick = false,\n shouldCloseOnEsc = false,\n ...modalProps\n}) => {\n return (\n <ReactModal\n {...modalProps}\n isOpen\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEsc={shouldCloseOnEsc}\n className={styles.modal}\n overlayClassName={styles.overlay}\n >\n <Column spacing={2} alignItems={\"center\"}>\n <Box\n alignItems={\"center\"}\n justifyContent={\"center\"}\n width={\"64px\"}\n height={\"64px\"}\n borderRadius={\"50%\"}\n background={\"white\"}\n shadow={\"modal\"}\n >\n <Spinner size={\"small\"} />\n </Box>\n {(headerIconLeft || headerText) && (\n <>\n <Spacing />\n <Row indent={2}>\n {headerIconLeft && (\n <>\n <Icon size={14} icon={headerIconLeft} color={\"white\"} />\n <Indent />\n </>\n )}\n {headerText && (\n <Heading variant={\"h4\"} color={\"white\"}>\n {headerText}\n </Heading>\n )}\n </Row>\n </>\n )}\n </Column>\n </ReactModal>\n );\n};\n","import { CloseButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n DRAGGABLE_CANCEL_CLASSNAME,\n DRAGGABLE_HANDLE_CLASSNAME,\n} from \"./BaseWindow\";\nimport { Box, Row, Txt } from \"@stenajs-webui/core\";\n\nexport interface WindowHeaderProps {\n onRequestClose?: () => void;\n header?: ReactNode;\n headerText?: string;\n closeButtonClassName?: string;\n}\n\nexport const WindowHeader: React.FC<WindowHeaderProps> = ({\n onRequestClose,\n header,\n headerText,\n closeButtonClassName,\n}) => {\n return (\n <Row\n spacing={2}\n indent={2}\n borderBottom={\"1px solid var(--lhds-color-ui-300)\"}\n className={DRAGGABLE_HANDLE_CLASSNAME}\n >\n <Row flex={1} indent alignItems={\"center\"}>\n {headerText && (\n <Txt className={DRAGGABLE_CANCEL_CLASSNAME} size={\"large\"}>\n {headerText}\n </Txt>\n )}\n {header}\n </Row>\n <Box alignSelf={\"flex-start\"}>\n <CloseButton\n className={closeButtonClassName}\n onClick={onRequestClose}\n />\n </Box>\n </Row>\n );\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { BaseWindow, BaseWindowProps } from \"./BaseWindow\";\nimport { WindowHeader, WindowHeaderProps } from \"./WindowHeader\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface WindowProps extends BaseWindowProps, WindowHeaderProps {\n spacing?: number;\n indent?: number;\n draggable?: boolean;\n footer?: React.ReactNode;\n disableStickyFooter?: boolean;\n}\n\nexport const Window: React.FC<WindowProps> = ({\n header,\n headerText,\n children,\n spacing,\n indent,\n draggable = false,\n onRequestClose,\n closeButtonClassName,\n footer,\n disableStickyFooter = false,\n ...props\n}) => {\n const activeSpacing = typeof spacing === \"number\" ? spacing : 1;\n const activeIndent = typeof indent === \"number\" ? indent : 1;\n\n return (\n <BaseWindow\n {...props}\n onRequestClose={onRequestClose}\n draggable={draggable}\n >\n <WindowHeader\n onRequestClose={onRequestClose}\n header={header}\n headerText={headerText}\n closeButtonClassName={closeButtonClassName}\n />\n <Box spacing={activeSpacing} indent={activeIndent}>\n {children}\n </Box>\n {footer && (\n <Box\n className={cx(styles.footer, {\n [styles.stickyFooter]: !disableStickyFooter,\n })}\n >\n {footer}\n </Box>\n )}\n </BaseWindow>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface WindowFooterProps {\n children?: ReactNode;\n}\n\nexport const WindowFooter: React.FC<WindowFooterProps> = ({ children }) => (\n <Column indent={2} spacing={2}>\n {children}\n </Column>\n);\n","import { createContext } from \"react\";\nimport { RejectCommand, ResolveCommand } from \"./DialogCommands\";\n\nexport interface DialogContextValue<TResolveValue> {\n resolve: ResolveCommand<TResolveValue>;\n reject: RejectCommand;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const DialogContext = createContext<DialogContextValue<any> | undefined>(\n undefined,\n);\n","import cx from \"classnames\";\nimport React, {\n CSSProperties,\n MouseEventHandler,\n ReactEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { RejectCommand, ResolveCommand, ShowCommand } from \"./DialogCommands\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\nimport { Modal } from \"../declarative-modals/modal/Modal\";\n\ntype UseDialogCallbacks<TProps, TPromiseResolve> = {\n show: ShowCommand<TProps, TPromiseResolve>;\n reject: RejectCommand;\n};\n\nexport type UseDialogResult<TProps, TPromiseResolve> = [\n ReactNode,\n UseDialogCallbacks<TProps, TPromiseResolve>,\n];\n\nexport interface DialogOptions {\n divInsteadOfDialog?: boolean;\n elementId?: string;\n background?: string;\n disableCloseOnClickOutside?: boolean;\n modal: boolean;\n className: string;\n closingClassName: string;\n contentWrapperClassName: string;\n contentWrapperStyle?: CSSProperties;\n dialogStyle?: CSSProperties;\n ref?: RefObject<HTMLDialogElement | null>;\n onResolve?: () => void;\n onReject?: () => void;\n /**\n * Sets aria-label on modal or dialog element.\n */\n label?: string;\n /**\n * Sets aria-labelledby on modal or dialog element.\n */\n labelledby?: string;\n /**\n * Sets aria-describedby on modal or dialog element.\n */\n describedby?: string;\n}\n\nexport function useDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n {\n ref,\n modal,\n contentWrapperClassName,\n closingClassName,\n contentWrapperStyle,\n dialogStyle,\n divInsteadOfDialog,\n disableCloseOnClickOutside,\n elementId,\n onResolve,\n onReject,\n className,\n background,\n label,\n labelledby,\n describedby,\n }: DialogOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n const localRef = useRef<HTMLDialogElement>(null);\n const currentRef = ref ?? localRef;\n const [key, forceRerender] = useReducer((x) => x + 1, 0);\n const promiseRef = useRef<Promise<TPromiseResolve | undefined>>(null);\n const resolveRef = useRef<ResolveCommand<TPromiseResolve> | undefined>(null);\n const modalComponentProps = useRef<TProps>(undefined);\n const closedByPromiseRef = useRef<boolean>(false);\n const rejectRef = useRef<RejectCommand | undefined>(null);\n /**\n * Used by Modal to control open/close with animation.\n */\n const [isOpen, setIsOpen] = useState(false);\n /**\n * Used by both Modal and dialog to decide if content is visible. When props is cleared, we can not render content that requires props.\n */\n const [contentVisible, setContentVisible] = useState(false);\n /**\n * Used by dialog to know if it is currently animating to closed state.\n */\n const [closing, setClosing] = useState(false);\n\n const Comp = component;\n\n const show = useCallback<ShowCommand<TProps, TPromiseResolve>>(\n (props?: TProps) => {\n promiseRef.current = new Promise<TPromiseResolve | undefined>(\n (resolve, reject) => {\n resolveRef.current = resolve;\n rejectRef.current = reject;\n },\n );\n setClosing(false);\n setIsOpen(true);\n setContentVisible(true);\n forceRerender();\n closedByPromiseRef.current = false;\n modalComponentProps.current = props;\n if (modal) {\n currentRef.current?.showModal();\n } else {\n currentRef.current?.show();\n }\n return promiseRef.current;\n },\n [currentRef, modal],\n );\n\n const resolve = useCallback<ResolveCommand<TPromiseResolve>>(\n (value) => {\n closedByPromiseRef.current = true;\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n (ev) => {\n ev.stopPropagation();\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n }, 300);\n }\n },\n [currentRef, onResolve, divInsteadOfDialog],\n );\n\n const reject = useCallback<RejectCommand>(\n (error) => {\n closedByPromiseRef.current = true;\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n (ev) => {\n ev.stopPropagation();\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n }, 300);\n }\n },\n [currentRef, divInsteadOfDialog, onReject],\n );\n\n const onClose = useCallback<ReactEventHandler<HTMLDialogElement>>(\n (ev) => {\n // Remove content immediately, since it cannot be animated when closed by browser.\n ev.stopPropagation();\n if (!closedByPromiseRef.current) {\n setClosing(false);\n setIsOpen(false);\n setContentVisible(false);\n rejectRef.current?.();\n onReject?.();\n modalComponentProps.current = undefined;\n }\n },\n [onReject],\n );\n\n const onClick = useCallback<MouseEventHandler<HTMLDialogElement>>(\n (e) => {\n if (e.target !== currentRef.current) {\n return;\n }\n\n const rect = currentRef.current.getBoundingClientRect();\n\n const clickedInsideDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!clickedInsideDialog) {\n reject();\n }\n },\n [currentRef, reject],\n );\n\n const contextValue = useMemo(\n () => ({ resolve, reject }) as DialogContextValue<unknown>,\n [reject, resolve],\n );\n\n const element = useMemo<ReactNode>(\n () =>\n divInsteadOfDialog ? (\n <Modal\n isOpen={isOpen}\n onRequestClose={reject}\n background={background}\n contentLabel={label}\n id={elementId}\n aria={{ modal: true, labelledby, describedby }}\n >\n <DialogContext.Provider value={contextValue}>\n {contentVisible && (\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n )}\n </DialogContext.Provider>\n </Modal>\n ) : (\n <dialog\n onClick={disableCloseOnClickOutside ? undefined : onClick}\n onClose={onClose}\n ref={currentRef}\n id={elementId}\n className={cx(\"swui-dialog\", className, closing && closingClassName)}\n aria-label={label}\n aria-labelledby={labelledby}\n aria-describedby={describedby}\n style={{ background: background, ...dialogStyle }}\n >\n <div style={contentWrapperStyle} className={contentWrapperClassName}>\n {contentVisible && (\n <DialogContext.Provider value={contextValue}>\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n </DialogContext.Provider>\n )}\n </div>\n </dialog>\n ),\n [\n divInsteadOfDialog,\n isOpen,\n reject,\n background,\n label,\n elementId,\n labelledby,\n describedby,\n contextValue,\n contentVisible,\n Comp,\n key,\n disableCloseOnClickOutside,\n onClick,\n onClose,\n currentRef,\n className,\n closing,\n closingClassName,\n dialogStyle,\n contentWrapperStyle,\n contentWrapperClassName,\n ],\n );\n\n return [element, { show, reject }];\n}\n","import { useContext } from \"react\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\n\nexport const useDialogPromise = <\n TResolveValue = void,\n>(): DialogContextValue<TResolveValue> => {\n const context = useContext(DialogContext);\n if (context == null) {\n throw new Error(\"useDialogPromise is being used outside of dialog.\");\n }\n return context as DialogContextValue<TResolveValue>;\n};\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./AlertDialog.module.css\";\n\nexport function useAlertDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.alertDialog),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./DrawerDialog.module.css\";\nimport { SlideFrom } from \"../../common-types\";\n\ninterface DrawerOptions\n extends Partial<Omit<DialogOptions, \"disableCloseOnClickOutside\">> {}\n\nexport function useDrawerDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n slideFrom: SlideFrom = \"left\",\n options?: DrawerOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n disableCloseOnClickOutside: true,\n modal: false,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.drawerDialog, styles[slideFrom]),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./ModalDialog.module.css\";\n\nexport function useModalDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.modalDialog),\n });\n}\n","import * as React from \"react\";\nimport { Heading, HeadingVariant } from \"@stenajs-webui/core\";\n\nexport type ModalHeadingSizeVariant = \"medium\" | \"large\";\n\nexport interface ModalHeadingProps {\n size?: ModalHeadingSizeVariant;\n children: string;\n headingLevel?: HeadingVariant;\n}\n\nexport const ModalHeading: React.FC<ModalHeadingProps> = ({\n headingLevel = \"h2\",\n size = \"medium\",\n children,\n}) => {\n return (\n <Heading variant={size === \"medium\" ? \"h3\" : \"h1\"} as={headingLevel}>\n {children}\n </Heading>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport styles from \"./ModalActionButtons.module.css\";\nimport { Box, Spacing } from \"@stenajs-webui/core\";\n\nexport interface ModalActionButtonsProps extends PropsWithChildren {}\n\nexport const ModalActionButtons: React.FC<ModalActionButtonsProps> = ({\n children,\n}) => {\n return (\n <Box width={\"100%\"}>\n <Spacing />\n <div className={styles.modalActionButtons}>{children}</div>\n </Box>\n );\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport styles from \"./ModalBody.module.css\";\nimport cx from \"classnames\";\n\nexport type ModalBodyVariant = \"normal\" | \"relaxed\";\n\nexport interface ModalBodyProps extends Omit<BoxProps, \"indent\" | \"spacing\"> {\n variant?: ModalBodyVariant;\n}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({\n gap = 3,\n variant = \"normal\",\n className,\n ...props\n}) => {\n return (\n <Column\n className={cx(styles.modalBody, styles[variant], className)}\n indent={variant === \"relaxed\" ? 5 : 3}\n spacing={variant === \"relaxed\" ? 5 : 3}\n gap={gap}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport interface ModalContainerProps\n extends PropsWithChildren,\n Pick<BoxProps, \"maxWidth\"> {}\n\nexport const ModalContainer: React.FC<ModalContainerProps> = ({\n children,\n maxWidth,\n}) => {\n return (\n <Column\n flex={1}\n height={\"100%\"}\n justifyContent={\"space-between\"}\n maxWidth={maxWidth}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaTimesThick,\n} from \"@stenajs-webui/elements\";\n\nexport interface ModalCloseButtonProps extends FlatButtonProps {}\n\nexport const ModalCloseButton: React.FC<ModalCloseButtonProps> = (props) => {\n return (\n <FlatButton\n size={\"large\"}\n variant={\"danger\"}\n leftIcon={stenaTimesThick}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { Column, HeadingVariant, Row } from \"@stenajs-webui/core\";\nimport { ModalHeading, ModalHeadingSizeVariant } from \"./ModalHeading\";\nimport { ModalCloseButton } from \"./ModalCloseButton\";\n\nexport type ModalHeaderProps =\n | ModalHeaderWithCloseButtonProps\n | ModalHeaderWithNoCloseButtonProps;\n\nexport interface ModalHeaderCommonProps {\n heading?: string;\n headingSize?: ModalHeadingSizeVariant;\n headingLevel?: HeadingVariant;\n}\n\nexport interface ModalHeaderWithCloseButtonProps\n extends ModalHeaderCommonProps {\n onClickClose?: never;\n closeButtonAriaLabel?: never;\n}\n\nexport interface ModalHeaderWithNoCloseButtonProps\n extends ModalHeaderCommonProps {\n onClickClose: () => void;\n closeButtonAriaLabel: string;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({\n heading,\n headingLevel,\n headingSize,\n onClickClose,\n closeButtonAriaLabel,\n}) => {\n return (\n <Column>\n <Row justifyContent={\"space-between\"} alignItems={\"center\"} gap={2}>\n {heading ? (\n <ModalHeading headingLevel={headingLevel} size={headingSize}>\n {heading}\n </ModalHeading>\n ) : (\n <div />\n )}\n {onClickClose ? (\n <ModalCloseButton\n onClick={onClickClose}\n size={headingSize}\n aria-label={closeButtonAriaLabel}\n />\n ) : null}\n </Row>\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Column, Spacing, Text } from \"@stenajs-webui/core\";\nimport { ModalHeading } from \"../building-blocks/ModalHeading\";\nimport { ModalActionButtons } from \"../building-blocks/ModalActionButtons\";\nimport { CircledIcon, MediumIcon } from \"@stenajs-webui/elements\";\nimport { ModalBody } from \"../building-blocks/ModalBody\";\nimport { ModalContainer } from \"../building-blocks/ModalContainer\";\nimport { ModalHeader } from \"../building-blocks/ModalHeader\";\n\nexport type InfoAlertProps =\n | InfoAlertPropsWithNoCloseButton\n | InfoAlertPropsWithCloseButton;\n\nexport interface InfoAlertCommonProps extends PropsWithChildren {\n heading: string;\n text?: string;\n buttons?: ReactNode;\n icon?: MediumIcon;\n maxWidth?: string;\n minWidth?: string;\n}\n\nexport interface InfoAlertPropsWithNoCloseButton extends InfoAlertCommonProps {\n onClickClose?: never;\n closeButtonAriaLabel?: never;\n}\n\nexport interface InfoAlertPropsWithCloseButton extends InfoAlertCommonProps {\n onClickClose: () => void;\n closeButtonAriaLabel: string;\n}\n\nexport const InfoAlert: React.FC<InfoAlertProps> = ({\n icon,\n buttons,\n heading,\n text,\n children,\n maxWidth,\n minWidth,\n ...props\n}) => {\n return (\n <ModalContainer>\n <ModalBody gap={0}>\n {props.onClickClose && (\n <ModalHeader\n onClickClose={props.onClickClose}\n closeButtonAriaLabel={props.closeButtonAriaLabel}\n />\n )}\n <Column\n gap={2}\n flexDirection={\"column\"}\n alignItems={\"center\"}\n maxWidth={maxWidth}\n minWidth={minWidth}\n >\n {icon && (\n <>\n {!props.onClickClose && <Spacing />}\n <CircledIcon icon={icon} size={\"large\"} />\n <Spacing />\n </>\n )}\n <ModalHeading>{heading}</ModalHeading>\n {text && <Text textAlign={\"center\"}>{text}</Text>}\n {children}\n {buttons && <ModalActionButtons>{buttons}</ModalActionButtons>}\n </Column>\n </ModalBody>\n </ModalContainer>\n );\n};\n","import { BoxProps, Row } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./ModalFooter.module.css\";\n\nexport interface ModalFooterProps extends BoxProps {\n sticky?: boolean;\n gap?: number;\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({\n sticky,\n zIndex = 4,\n gap = 2,\n className,\n ...boxProps\n}) => {\n return (\n <Row\n className={cx(styles.modalFooter, sticky && styles.sticky, className)}\n shadow={\"var(--swui-sticky-footer-shadow)\"}\n zIndex={zIndex}\n gap={gap}\n {...boxProps}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./UnreadDot.module.css\";\n\nexport interface UnreadDotProps {\n children: ReactNode;\n}\n\nexport const UnreadDot: React.FC<UnreadDotProps> = ({ children }) => {\n return (\n <div className={styles.unreadDot}>\n {children}\n <div className={styles.dot} />\n </div>\n );\n};\n","import { Box, Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { CircledIcon, CloseButton, MediumIcon } from \"@stenajs-webui/elements\";\nimport { cssColor, CssPropColor } from \"@stenajs-webui/theme\";\nimport { UnreadDot } from \"./UnreadDot\";\nimport { NotificationVariant } from \"./Notification\";\nimport styles from \"./NotificationHeader.module.css\";\n\nexport interface NotificationHeaderProps {\n /** Text. */\n text: string;\n /** Timestamp. */\n timestamp?: string;\n /** Icon. */\n icon?: MediumIcon;\n /** Icon description for accessibility. */\n iconAriaLabel?: string;\n /** Left content instead of icon. */\n contentLeft?: React.ReactNode;\n /** Right content. */\n contentRight?: React.ReactNode;\n /** What happens on clicking close. */\n onClickClose?: () => void;\n /** Mark the notification as unread */\n unread?: boolean;\n /** Notification variant. Will affect icon bg color */\n variant?: NotificationVariant;\n /** Icon background color. Will override other icon bg color */\n iconBackgroundColor?: CssPropColor;\n /** Force alignment of text for close button. This is used with toastify, which adds close button outside of the header. */\n forceCloseButtonAlignment?: boolean;\n}\n\nexport const NotificationHeader: React.FC<NotificationHeaderProps> = ({\n text,\n timestamp,\n icon,\n iconAriaLabel,\n contentLeft,\n contentRight,\n onClickClose,\n unread = false,\n variant,\n iconBackgroundColor,\n forceCloseButtonAlignment,\n}) => {\n const circledIcon = icon ? (\n <CircledIcon\n size={\"small\"}\n icon={icon}\n aria-label={iconAriaLabel}\n variant={\"whiteBg\"}\n backgroundColor={\n iconBackgroundColor\n ? iconBackgroundColor\n : getIconBgColorFromVariant(unread, variant)\n }\n />\n ) : undefined;\n\n return (\n <Row\n alignItems={\"flex-start\"}\n justifyContent={\"space-between\"}\n data-comp={\"NotificationHeader\"}\n className={styles.notificationHeader}\n gap={2}\n >\n <Row gap={2} alignItems={\"flex-start\"}>\n {contentLeft && (\n <Column justifyContent={\"center\"}>{contentLeft}</Column>\n )}\n {!contentLeft && circledIcon && (\n <Row alignItems={\"center\"} height={\"40px\"}>\n {unread ? <UnreadDot>{circledIcon}</UnreadDot> : circledIcon}\n </Row>\n )}\n <Box minHeight={20} justifyContent={\"center\"} flex={1} gap={0.5}>\n {icon || onClickClose || forceCloseButtonAlignment ? (\n <Space num={0.5} />\n ) : null}\n <Text variant={\"bold\"}>{text}</Text>\n {timestamp && (\n <div className={styles.timestamp}>\n <Text\n size={\"small\"}\n color={cssColor(\n unread ? \"--lhds-color-blue-600\" : \"--lhds-color-ui-600\",\n )}\n >\n {timestamp}\n </Text>\n </div>\n )}\n </Box>\n </Row>\n {contentRight && (\n <Column justifyContent={\"center\"}>{contentRight}</Column>\n )}\n {onClickClose && (\n <Row alignItems={\"center\"} height={\"40px\"} width={\"40px\"}>\n <CloseButton onClick={onClickClose} />\n </Row>\n )}\n </Row>\n );\n};\n\nexport const getIconBgColorFromVariant = (\n unread: boolean,\n variant?: NotificationVariant,\n): CssPropColor | undefined => {\n if (!unread && variant === \"standard\") {\n return undefined;\n }\n return \"--lhds-color-ui-50\";\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n NotificationHeader,\n NotificationHeaderProps,\n} from \"./NotificationHeader\";\nimport styles from \"./Notification.module.css\";\nimport cx from \"classnames\";\n\nexport type NotificationVariant = \"standard\" | \"danger\";\n\nexport interface NotificationProps extends NotificationHeaderProps {\n children?: ReactNode;\n}\n\nexport const Notification: React.FC<NotificationProps> = ({\n variant = \"standard\",\n children,\n unread,\n ...headerProps\n}) => (\n <div\n data-comp={\"Notification\"}\n className={cx(\n styles.notification,\n styles[variant],\n unread && styles.unread,\n )}\n >\n <NotificationHeader {...headerProps} unread={unread} variant={variant} />\n {children && <Column className={styles.body}>{children}</Column>}\n </div>\n);\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./NotificationList.module.css\";\n\nexport interface NotificationListProps {\n children?: ReactNode;\n}\n\nexport const NotificationList: React.FC<NotificationListProps> = ({\n children,\n}) => {\n return (\n <div data-comp={\"NotificationList\"} className={styles.notificationList}>\n {children}\n <div />\n </div>\n );\n};\n","import { Box, BoxProps } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport styles from \"./Toast.module.css\";\nimport {\n NotificationHeader,\n NotificationHeaderProps,\n} from \"../notification/NotificationHeader\";\n\nexport interface ToastProps\n extends Pick<BoxProps, \"children\" | \"width\" | \"maxWidth\">,\n Omit<NotificationHeaderProps, \"contentRight\"> {}\n\nexport const Toast: React.FC<ToastProps> = ({\n children,\n width = 364,\n maxWidth,\n ...headerProps\n}) => (\n <Box\n className={styles.toast}\n data-comp={\"Toast\"}\n width={width}\n maxWidth={maxWidth}\n >\n <NotificationHeader forceCloseButtonAlignment {...headerProps} />\n {children && <div className={styles.body}>{children}</div>}\n </Box>\n);\n","import * as React from \"react\";\nimport { Box, BoxProps } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport styles from \"./ToastBox.module.css\";\n\nexport interface ToastBoxProps extends BoxProps {}\n\nexport const ToastBox: React.FC<ToastBoxProps> = ({ className, ...props }) => {\n return (\n <Box\n as={props.onClick ? \"button\" : undefined}\n className={cx(\n className,\n styles.toastBox,\n props.onClick && styles.clickable,\n )}\n data-comp={\"Toast\"}\n role={\"alert\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport {\n ToastContainer as ToastifyToastContainer,\n ToastContainerProps as ToastifyToastContainerProps,\n} from \"react-toastify\";\nimport styles from \"./ToastContainer.module.css\";\nimport { CloseButton } from \"@stenajs-webui/elements\";\n\nexport type ToastContainerProps = ToastifyToastContainerProps;\n\nexport const ToastContainer: React.FC<ToastContainerProps> = ({ ...props }) => {\n return (\n <ToastifyToastContainer\n className={styles.toastContainer}\n closeButton={({ closeToast }) => <CloseButton onClick={closeToast} />}\n hideProgressBar={true}\n pauseOnFocusLoss={false}\n pauseOnHover={true}\n draggable={false}\n {...props}\n />\n );\n};\n","import { toast, ToastContent, ToastOptions } from \"react-toastify\";\n\nexport const showToast = <T>(\n content: ToastContent<T>,\n options?: ToastOptions<T> | undefined,\n) => toast<T>(content, options);\n"],"names":["setupDeclarativeModals","htmlElement","ReactModal","DRAGGABLE_HANDLE_CLASSNAME","DRAGGABLE_CANCEL_CLASSNAME","BaseWindow","width","maxWidth","draggable","children","reactModalProps","nodeRef","useRef","jsx","styles","Draggable","cx","Drawer","background","zIndex","slideFrom","portalTarget","floating","height","getClassNameForSlide","exhaustSwitchCase","DrawerHeader","header","contentRight","onRequestClose","icon","Spacing","cssColor","jsxs","Row","Space","Icon","Heading","FlatButton","stenaTimes","style","Alert","isSafari","Modal","className","overlayClassName","ref","scrollbarGutter","setScrollbarGutter","useState","updateScrollbarGutter","useEventCallback","container","useEffect","LoadingModal","headerIconLeft","headerText","shouldCloseOnOverlayClick","shouldCloseOnEsc","modalProps","Column","Box","Spinner","Fragment","Indent","WindowHeader","closeButtonClassName","Txt","CloseButton","Window","spacing","indent","footer","disableStickyFooter","props","WindowFooter","DialogContext","createContext","useDialog","component","modal","contentWrapperClassName","closingClassName","contentWrapperStyle","dialogStyle","divInsteadOfDialog","disableCloseOnClickOutside","elementId","onResolve","onReject","label","labelledby","describedby","localRef","currentRef","key","forceRerender","useReducer","x","promiseRef","resolveRef","modalComponentProps","closedByPromiseRef","rejectRef","isOpen","setIsOpen","contentVisible","setContentVisible","closing","setClosing","Comp","show","useCallback","resolve","reject","value","ev","error","onClose","onClick","e","rect","contextValue","useMemo","createElement","useDialogPromise","context","useContext","useAlertDialog","options","useDrawerDialog","useModalDialog","ModalHeading","headingLevel","size","ModalActionButtons","ModalBody","gap","variant","ModalContainer","ModalCloseButton","stenaTimesThick","ModalHeader","heading","headingSize","onClickClose","closeButtonAriaLabel","InfoAlert","buttons","text","minWidth","CircledIcon","Text","ModalFooter","sticky","boxProps","UnreadDot","NotificationHeader","timestamp","iconAriaLabel","contentLeft","unread","iconBackgroundColor","forceCloseButtonAlignment","circledIcon","getIconBgColorFromVariant","Notification","headerProps","NotificationList","Toast","ToastBox","ToastContainer","ToastifyToastContainer","closeToast","showToast","content","toast"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const D=require("react-modal"),e=require("react/jsx-runtime"),r=require("react"),Re=require("react-draggable"),i=require("classnames"),s=require("@stenajs-webui/core"),p=require("@stenajs-webui/elements"),_e=require("@stenajs-webui/theme"),ge=require("react-toastify"),Le=t=>{D.setAppElement(t)},Ae="_overlay_quvmp_1",Fe="_modal_quvmp_31",ke="_content_quvmp_41",Me="_isDraggable_quvmp_70",$e="_footer_quvmp_101",ze="_stickyFooter_quvmp_105",B={overlay:Ae,modal:Fe,content:ke,isDraggable:Me,footer:$e,stickyFooter:ze},X="draggable-modal-handle",Y="draggable-modal-cancel",fe=({width:t,maxWidth:o,draggable:n=!1,children:a,...l})=>{const d=r.useRef(null);return e.jsx(D,{overlayClassName:B.overlay,className:B.modal,...l,children:e.jsx(Re,{handle:`.${X}`,cancel:`.${Y}, button, [role="tooltip"]`,bounds:".ReactModal__Overlay",disabled:!n,nodeRef:d,children:e.jsx("div",{style:{"--swui-modal-width":t,"--swui-modal-max-width":o},className:i(B.content,{[B.isDraggable]:n}),ref:d,children:a})})})},Ie="_portal_17ze5_1",Oe="_overlay_17ze5_4",Se="_content_17ze5_9",Te="_floating_17ze5_15",Ee="_slideFromLeft_17ze5_29",He="_slideFromRight_17ze5_30",We="_afterOpen_17ze5_36",qe="_beforeClose_17ze5_40",Pe="_slideFromTop_17ze5_45",Ge="_slideFromBottom_17ze5_46",f={portal:Ie,overlay:Oe,content:Se,floating:Te,slideFromLeft:Ee,slideFromRight:He,afterOpen:We,beforeClose:qe,slideFromTop:Pe,slideFromBottom:Ge},Ve=({background:t,zIndex:o,children:n,slideFrom:a="left",portalTarget:l,floating:d,...m})=>{const{height:c,width:h}=m;return e.jsx(D,{closeTimeoutMS:250,portalClassName:f.portal,overlayClassName:{base:f.overlay,afterOpen:f.afterOpen,beforeClose:f.beforeClose},className:{base:i(f.content,Ue(a),d&&f.floating),afterOpen:f.afterOpen,beforeClose:f.beforeClose},style:{content:{width:h,height:c,background:t},overlay:{zIndex:o}},parentSelector:l?()=>l:void 0,...m,children:n})},Ue=t=>{switch(t){case"left":return f.slideFromLeft;case"right":return f.slideFromRight;case"top":return f.slideFromTop;case"bottom":return f.slideFromBottom;default:return s.exhaustSwitchCase(t,f.slideFromLeft)}},Xe=({header:t,contentRight:o,onRequestClose:n,icon:a})=>e.jsx(s.Spacing,{position:"sticky",top:0,zIndex:100,background:_e.cssColor("--lhds-color-ui-50"),children:e.jsxs(s.Row,{justifyContent:"space-between",alignItems:"center",height:"48px",children:[e.jsxs(s.Row,{alignItems:"center",gap:2,children:[e.jsx(s.Space,{num:1}),a&&e.jsx(p.Icon,{icon:a,size:24}),e.jsx(s.Heading,{variant:"h4",children:t})]}),e.jsxs(s.Row,{gap:1,children:[o,e.jsx(p.FlatButton,{leftIcon:p.stenaTimes,onClick:n,variant:"danger"}),e.jsx(s.Space,{num:.5})]})]})}),Ye="_overlay_1gix5_1",Je="_modal_1gix5_31",Ke="_content_1gix5_38",G={overlay:Ye,modal:Je,content:Ke},Qe={overlay:{justifyContent:"center"}},Ze=({children:t,...o})=>e.jsx(D,{overlayClassName:G.overlay,className:G.modal,style:Qe,...o,children:e.jsx("div",{className:G.content,style:{"--swui-modal-width":"fit-content"},children:t})}),et="_overlay_nbrrn_1",tt="_afterOpen_nbrrn_24",ot="_beforeClose_nbrrn_24",st="_modal_nbrrn_36",nt="_content_nbrrn_59",w={overlay:et,afterOpen:tt,beforeClose:ot,modal:st,content:nt},ae=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),xe=({children:t,background:o,className:n,overlayClassName:a,...l})=>{const d=r.useRef(null),[m,c]=r.useState(ae?"auto":void 0),h={overlay:{justifyContent:"center"},content:{"--swui-modal-content-bg-color":o}},_=s.useEventCallback(()=>{if(!ae)return;const j=d.current;j&&c(j.scrollHeight>j.clientHeight?"stable":"auto")});return r.useEffect(()=>(window.addEventListener("resize",_),document.addEventListener("DOMContentLoaded",_),()=>{window.removeEventListener("resize",_),document.removeEventListener("DOMContentLoaded",_)}),[_]),e.jsx(D,{overlayClassName:{base:i(a,w.overlay),beforeClose:w.beforeClose,afterOpen:w.afterOpen},className:{base:i(n,w.modal),beforeClose:w.beforeClose,afterOpen:w.afterOpen},style:h,closeTimeoutMS:250,onAfterOpen:_,...l,children:e.jsx("div",{className:w.content,style:{"--swui-modal-width":"fit-content",scrollbarGutter:m},ref:d,children:t})})},at="_modal_4fwgb_1",rt="_overlay_4fwgb_13",re={modal:at,overlay:rt},lt=({headerIconLeft:t,headerText:o,shouldCloseOnOverlayClick:n=!1,shouldCloseOnEsc:a=!1,...l})=>e.jsx(D,{...l,isOpen:!0,shouldCloseOnOverlayClick:n,shouldCloseOnEsc:a,className:re.modal,overlayClassName:re.overlay,children:e.jsxs(s.Column,{spacing:2,alignItems:"center",children:[e.jsx(s.Box,{alignItems:"center",justifyContent:"center",width:"64px",height:"64px",borderRadius:"50%",background:"white",shadow:"modal",children:e.jsx(p.Spinner,{size:"small"})}),(t||o)&&e.jsxs(e.Fragment,{children:[e.jsx(s.Spacing,{}),e.jsxs(s.Row,{indent:2,children:[t&&e.jsxs(e.Fragment,{children:[e.jsx(p.Icon,{size:14,icon:t,color:"white"}),e.jsx(s.Indent,{})]}),o&&e.jsx(s.Heading,{variant:"h4",color:"white",children:o})]})]})]})}),pe=({onRequestClose:t,header:o,headerText:n,closeButtonClassName:a})=>e.jsxs(s.Row,{spacing:2,indent:2,borderBottom:"1px solid var(--lhds-color-ui-300)",className:X,children:[e.jsxs(s.Row,{flex:1,indent:!0,alignItems:"center",children:[n&&e.jsx(s.Txt,{className:Y,size:"large",children:n}),o]}),e.jsx(s.Box,{alignSelf:"flex-start",children:e.jsx(p.CloseButton,{className:a,onClick:t})})]}),ct=({header:t,headerText:o,children:n,spacing:a,indent:l,draggable:d=!1,onRequestClose:m,closeButtonClassName:c,footer:h,disableStickyFooter:_=!1,...j})=>{const C=typeof a=="number"?a:1,R=typeof l=="number"?l:1;return e.jsxs(fe,{...j,onRequestClose:m,draggable:d,children:[e.jsx(pe,{onRequestClose:m,header:t,headerText:o,closeButtonClassName:c}),e.jsx(s.Box,{spacing:C,indent:R,children:n}),h&&e.jsx(s.Box,{className:i(B.footer,{[B.stickyFooter]:!_}),children:h})]})},it=({children:t})=>e.jsx(s.Column,{indent:2,spacing:2,children:t}),$=r.createContext(void 0);function z(t,{ref:o,modal:n,contentWrapperClassName:a,closingClassName:l,contentWrapperStyle:d,dialogStyle:m,divInsteadOfDialog:c,disableCloseOnClickOutside:h,elementId:_,onResolve:j,onReject:C,className:R,background:I,label:O,labelledby:S,describedby:T}){const Ne=r.useRef(null),g=o??Ne,[E,Be]=r.useReducer(u=>u+1,0),Q=r.useRef(null),H=r.useRef(null),y=r.useRef(void 0),L=r.useRef(!1),A=r.useRef(null),[Z,F]=r.useState(!1),[W,N]=r.useState(!1),[ee,v]=r.useState(!1),q=t,De=r.useCallback(u=>(Q.current=new Promise((x,ne)=>{H.current=x,A.current=ne}),v(!1),F(!0),N(!0),Be(),L.current=!1,y.current=u,n?g.current?.showModal():g.current?.show(),Q.current),[g,n]),te=r.useCallback(u=>{L.current=!0,v(!0),F(!1),c?setTimeout(()=>{v(!1),N(!1),H.current?.(u),y.current=void 0,j?.()},300):g.current?.addEventListener("animationend",x=>{x.stopPropagation(),v(!1),N(!1),g.current?.close(),H.current?.(u),y.current=void 0,j?.()},{once:!0})},[g,j,c]),b=r.useCallback(u=>{L.current=!0,v(!0),F(!1),c?setTimeout(()=>{v(!1),N(!1),A.current?.(u),C?.(),y.current=void 0},300):g.current?.addEventListener("animationend",x=>{x.stopPropagation(),v(!1),N(!1),g.current?.close(),A.current?.(u),C?.(),y.current=void 0},{once:!0})},[g,c,C]),oe=r.useCallback(u=>{u.stopPropagation(),L.current||(v(!1),F(!1),N(!1),A.current?.(),C?.(),y.current=void 0)},[C]),se=r.useCallback(u=>{if(u.target!==g.current)return;const x=g.current.getBoundingClientRect();x.top<=u.clientY&&u.clientY<=x.top+x.height&&x.left<=u.clientX&&u.clientX<=x.left+x.width||b()},[g,b]),P=r.useMemo(()=>({resolve:te,reject:b}),[b,te]);return[r.useMemo(()=>c?e.jsx(xe,{isOpen:Z,onRequestClose:b,background:I,contentLabel:O,id:_,aria:{modal:!0,labelledby:S,describedby:T},children:e.jsx($.Provider,{value:P,children:W&&r.createElement(q,{...y.current,key:E})})}):e.jsx("dialog",{onClick:h?void 0:se,onClose:oe,ref:g,id:_,className:i(R,ee&&l),"aria-label":O,"aria-labelledby":S,"aria-describedby":T,style:{background:I,...m},children:e.jsx("div",{style:d,className:a,children:W&&e.jsx($.Provider,{value:P,children:r.createElement(q,{...y.current,key:E})})})}),[c,Z,b,I,O,_,S,T,P,W,q,E,h,se,oe,g,R,ee,l,m,d,a]),{show:De,reject:b}]}const dt=()=>{const t=r.useContext($);if(t==null)throw new Error("useDialogPromise is being used outside of dialog.");return t},ut="_alertDialog_14t8t_1",mt="_closing_14t8t_22",V={alertDialog:ut,closing:mt};function _t(t,o){return z(t,{...o,modal:!0,closingClassName:i(o?.closingClassName,V.closing),contentWrapperClassName:i(o?.contentWrapperClassName,V.contentWrapper),className:i(o?.className,V.alertDialog)})}const gt="_drawerDialog_11g6r_1",ft="_left_11g6r_13",xt="_right_11g6r_14",pt="_contentWrapper_11g6r_19",ht="_slideInLeft_11g6r_1",jt="_closing_11g6r_36",Ct="_slideOutLeft_11g6r_1",yt="_slideInRight_11g6r_1",vt="_slideOutRight_11g6r_1",bt="_top_11g6r_54",wt="_bottom_11g6r_55",Nt="_slideInTop_11g6r_1",Bt="_slideOutTop_11g6r_1",Dt="_slideInBottom_11g6r_1",Rt="_slideOutBottom_11g6r_1",k={drawerDialog:gt,left:ft,right:xt,contentWrapper:pt,slideInLeft:ht,closing:jt,slideOutLeft:Ct,slideInRight:yt,slideOutRight:vt,top:bt,bottom:wt,slideInTop:Nt,slideOutTop:Bt,slideInBottom:Dt,slideOutBottom:Rt};function Lt(t,o="left",n){return z(t,{...n,disableCloseOnClickOutside:!0,modal:!1,closingClassName:i(n?.closingClassName,k.closing),contentWrapperClassName:i(n?.contentWrapperClassName,k.contentWrapper),className:i(n?.className,k.drawerDialog,k[o])})}const At="_modalDialog_iw29e_1",Ft="_closing_iw29e_37",kt="_contentWrapper_iw29e_101",U={modalDialog:At,closing:Ft,contentWrapper:kt};function Mt(t,o){return z(t,{...o,modal:!0,closingClassName:i(o?.closingClassName,U.closing),contentWrapperClassName:i(o?.contentWrapperClassName,U.contentWrapper),className:i(o?.className,U.modalDialog)})}const J=({headingLevel:t="h2",size:o="medium",children:n})=>e.jsx(s.Heading,{variant:o==="medium"?"h3":"h1",as:t,children:n}),$t="_modalActionButtons_zeqa6_1",zt={modalActionButtons:$t},he=({children:t})=>e.jsxs(s.Box,{width:"100%",children:[e.jsx(s.Spacing,{}),e.jsx("div",{className:zt.modalActionButtons,children:t})]}),It="_modalBody_ozynq_1",le={modalBody:It},je=({gap:t=3,variant:o="normal",className:n,...a})=>e.jsx(s.Column,{className:i(le.modalBody,le[o],n),indent:o==="relaxed"?5:3,spacing:o==="relaxed"?5:3,gap:t,...a}),Ce=({children:t,maxWidth:o})=>e.jsx(s.Column,{flex:1,height:"100%",justifyContent:"space-between",maxWidth:o,children:t}),ye=t=>e.jsx(p.FlatButton,{size:"large",variant:"danger",leftIcon:p.stenaTimesThick,...t}),ve=({heading:t,headingLevel:o,headingSize:n,onClickClose:a,closeButtonAriaLabel:l})=>e.jsx(s.Column,{children:e.jsxs(s.Row,{justifyContent:"space-between",alignItems:"center",gap:2,children:[t?e.jsx(J,{headingLevel:o,size:n,children:t}):e.jsx("div",{}),a?e.jsx(ye,{onClick:a,size:n,"aria-label":l}):null]})}),Ot=({icon:t,buttons:o,heading:n,text:a,children:l,maxWidth:d,minWidth:m,...c})=>e.jsx(Ce,{children:e.jsxs(je,{gap:0,children:[c.onClickClose&&e.jsx(ve,{onClickClose:c.onClickClose,closeButtonAriaLabel:c.closeButtonAriaLabel}),e.jsxs(s.Column,{gap:2,flexDirection:"column",alignItems:"center",maxWidth:d,minWidth:m,children:[t&&e.jsxs(e.Fragment,{children:[!c.onClickClose&&e.jsx(s.Spacing,{}),e.jsx(p.CircledIcon,{icon:t,size:"large"}),e.jsx(s.Spacing,{})]}),e.jsx(J,{children:n}),a&&e.jsx(s.Text,{textAlign:"center",children:a}),l,o&&e.jsx(he,{children:o})]})]})}),St="_modalFooter_1ypno_1",Tt="_sticky_1ypno_10",ce={modalFooter:St,sticky:Tt},Et=({sticky:t,zIndex:o=4,gap:n=2,className:a,...l})=>e.jsx(s.Row,{className:i(ce.modalFooter,t&&ce.sticky,a),shadow:"var(--swui-sticky-footer-shadow)",zIndex:o,gap:n,...l}),Ht="_unreadDot_l8bni_1",Wt="_dot_l8bni_4",ie={unreadDot:Ht,dot:Wt},be=({children:t})=>e.jsxs("div",{className:ie.unreadDot,children:[t,e.jsx("div",{className:ie.dot})]}),qt="_notificationHeader_1rl25_1",Pt="_timestamp_1rl25_2",de={notificationHeader:qt,timestamp:Pt},K=({text:t,timestamp:o,icon:n,iconAriaLabel:a,contentLeft:l,contentRight:d,onClickClose:m,unread:c=!1,variant:h,iconBackgroundColor:_,forceCloseButtonAlignment:j})=>{const C=n?e.jsx(p.CircledIcon,{size:"small",icon:n,"aria-label":a,variant:"whiteBg",backgroundColor:_||we(c,h)}):void 0;return e.jsxs(s.Row,{alignItems:"flex-start",justifyContent:"space-between","data-comp":"NotificationHeader",className:de.notificationHeader,gap:2,children:[e.jsxs(s.Row,{gap:2,alignItems:"flex-start",children:[l&&e.jsx(s.Column,{justifyContent:"center",children:l}),!l&&C&&e.jsx(s.Row,{alignItems:"center",height:"40px",children:c?e.jsx(be,{children:C}):C}),e.jsxs(s.Box,{minHeight:20,justifyContent:"center",flex:1,gap:.5,children:[n||m||j?e.jsx(s.Space,{num:.5}):null,e.jsx(s.Text,{variant:"bold",children:t}),o&&e.jsx("div",{className:de.timestamp,children:e.jsx(s.Text,{size:"small",color:_e.cssColor(c?"--lhds-color-blue-600":"--lhds-color-ui-600"),children:o})})]})]}),d&&e.jsx(s.Column,{justifyContent:"center",children:d}),m&&e.jsx(s.Row,{alignItems:"center",height:"40px",width:"40px",children:e.jsx(p.CloseButton,{onClick:m})})]})},we=(t,o)=>{if(!(!t&&o==="standard"))return"--lhds-color-ui-50"},Gt="_notification_tpz0j_1",Vt="_body_tpz0j_10",Ut="_standard_tpz0j_15",Xt="_unread_tpz0j_16",Yt="_danger_tpz0j_21",M={notification:Gt,body:Vt,standard:Ut,unread:Xt,danger:Yt},Jt=({variant:t="standard",children:o,unread:n,...a})=>e.jsxs("div",{"data-comp":"Notification",className:i(M.notification,M[t],n&&M.unread),children:[e.jsx(K,{...a,unread:n,variant:t}),o&&e.jsx(s.Column,{className:M.body,children:o})]}),Kt="_notificationList_1rkvu_1",Qt={notificationList:Kt},Zt=({children:t})=>e.jsxs("div",{"data-comp":"NotificationList",className:Qt.notificationList,children:[t,e.jsx("div",{})]}),eo="_toast_1ifzt_1",to="_body_1ifzt_2",ue={toast:eo,body:to},oo=({children:t,width:o=364,maxWidth:n,...a})=>e.jsxs(s.Box,{className:ue.toast,"data-comp":"Toast",width:o,maxWidth:n,children:[e.jsx(K,{forceCloseButtonAlignment:!0,...a}),t&&e.jsx("div",{className:ue.body,children:t})]}),so="_toastBox_1lvsy_1",no="_clickable_1lvsy_8",me={toastBox:so,clickable:no},ao=({className:t,...o})=>e.jsx(s.Box,{as:o.onClick?"button":void 0,className:i(t,me.toastBox,o.onClick&&me.clickable),"data-comp":"Toast",role:"alert",...o}),ro="_toastContainer_1rek2_1",lo={toastContainer:ro},co=({...t})=>e.jsx(ge.ToastContainer,{className:lo.toastContainer,closeButton:({closeToast:o})=>e.jsx(p.CloseButton,{onClick:o}),hideProgressBar:!0,pauseOnFocusLoss:!1,pauseOnHover:!0,draggable:!1,...t}),io=(t,o)=>ge.toast(t,o);exports.Alert=Ze;exports.BaseWindow=fe;exports.DRAGGABLE_CANCEL_CLASSNAME=Y;exports.DRAGGABLE_HANDLE_CLASSNAME=X;exports.DialogContext=$;exports.Drawer=Ve;exports.DrawerHeader=Xe;exports.InfoAlert=Ot;exports.LoadingModal=lt;exports.Modal=xe;exports.ModalActionButtons=he;exports.ModalBody=je;exports.ModalCloseButton=ye;exports.ModalContainer=Ce;exports.ModalFooter=Et;exports.ModalHeader=ve;exports.ModalHeading=J;exports.Notification=Jt;exports.NotificationHeader=K;exports.NotificationList=Zt;exports.Toast=oo;exports.ToastBox=ao;exports.ToastContainer=co;exports.UnreadDot=be;exports.Window=ct;exports.WindowFooter=it;exports.WindowHeader=pe;exports.getIconBgColorFromVariant=we;exports.setupDeclarativeModals=Le;exports.showToast=io;exports.useAlertDialog=_t;exports.useDialog=z;exports.useDialogPromise=dt;exports.useDrawerDialog=Lt;exports.useModalDialog=Mt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const D=require("react-modal"),e=require("react/jsx-runtime"),r=require("react"),Re=require("react-draggable"),i=require("classnames"),s=require("@stenajs-webui/core"),p=require("@stenajs-webui/elements"),_e=require("@stenajs-webui/theme"),ge=require("react-toastify"),Le=t=>{D.setAppElement(t)},Ae="_overlay_quvmp_1",Fe="_modal_quvmp_31",ke="_content_quvmp_41",Me="_isDraggable_quvmp_70",$e="_footer_quvmp_101",ze="_stickyFooter_quvmp_105",B={overlay:Ae,modal:Fe,content:ke,isDraggable:Me,footer:$e,stickyFooter:ze},X="draggable-modal-handle",Y="draggable-modal-cancel",fe=({width:t,maxWidth:o,draggable:n=!1,children:a,...l})=>{const d=r.useRef(null);return e.jsx(D,{overlayClassName:B.overlay,className:B.modal,...l,children:e.jsx(Re,{handle:`.${X}`,cancel:`.${Y}, button, [role="tooltip"]`,bounds:".ReactModal__Overlay",disabled:!n,nodeRef:d,children:e.jsx("div",{style:{"--swui-modal-width":t,"--swui-modal-max-width":o},className:i(B.content,{[B.isDraggable]:n}),ref:d,children:a})})})},Ie="_portal_17ze5_1",Oe="_overlay_17ze5_4",Se="_content_17ze5_9",Te="_floating_17ze5_15",Ee="_slideFromLeft_17ze5_29",He="_slideFromRight_17ze5_30",We="_afterOpen_17ze5_36",qe="_beforeClose_17ze5_40",Pe="_slideFromTop_17ze5_45",Ge="_slideFromBottom_17ze5_46",f={portal:Ie,overlay:Oe,content:Se,floating:Te,slideFromLeft:Ee,slideFromRight:He,afterOpen:We,beforeClose:qe,slideFromTop:Pe,slideFromBottom:Ge},Ve=({background:t,zIndex:o,children:n,slideFrom:a="left",portalTarget:l,floating:d,...m})=>{const{height:c,width:h}=m;return e.jsx(D,{closeTimeoutMS:250,portalClassName:f.portal,overlayClassName:{base:f.overlay,afterOpen:f.afterOpen,beforeClose:f.beforeClose},className:{base:i(f.content,Ue(a),d&&f.floating),afterOpen:f.afterOpen,beforeClose:f.beforeClose},style:{content:{width:h,height:c,background:t},overlay:{zIndex:o}},parentSelector:l?()=>l:void 0,...m,children:n})},Ue=t=>{switch(t){case"left":return f.slideFromLeft;case"right":return f.slideFromRight;case"top":return f.slideFromTop;case"bottom":return f.slideFromBottom;default:return s.exhaustSwitchCase(t,f.slideFromLeft)}},Xe=({header:t,contentRight:o,onRequestClose:n,icon:a})=>e.jsx(s.Spacing,{position:"sticky",top:0,zIndex:100,background:_e.cssColor("--lhds-color-ui-50"),children:e.jsxs(s.Row,{justifyContent:"space-between",alignItems:"center",height:"48px",children:[e.jsxs(s.Row,{alignItems:"center",gap:2,children:[e.jsx(s.Space,{num:1}),a&&e.jsx(p.Icon,{icon:a,size:24}),e.jsx(s.Heading,{variant:"h4",children:t})]}),e.jsxs(s.Row,{gap:1,children:[o,e.jsx(p.FlatButton,{leftIcon:p.stenaTimes,onClick:n,variant:"danger"}),e.jsx(s.Space,{num:.5})]})]})}),Ye="_overlay_1gix5_1",Je="_modal_1gix5_31",Ke="_content_1gix5_38",G={overlay:Ye,modal:Je,content:Ke},Qe={overlay:{justifyContent:"center"}},Ze=({children:t,...o})=>e.jsx(D,{overlayClassName:G.overlay,className:G.modal,style:Qe,...o,children:e.jsx("div",{className:G.content,style:{"--swui-modal-width":"fit-content"},children:t})}),et="_overlay_nbrrn_1",tt="_afterOpen_nbrrn_24",ot="_beforeClose_nbrrn_24",st="_modal_nbrrn_36",nt="_content_nbrrn_59",w={overlay:et,afterOpen:tt,beforeClose:ot,modal:st,content:nt},ae=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),xe=({children:t,background:o,className:n,overlayClassName:a,...l})=>{const d=r.useRef(null),[m,c]=r.useState(ae?"auto":void 0),h={overlay:{justifyContent:"center"},content:{"--swui-modal-content-bg-color":o}},_=s.useEventCallback(()=>{if(!ae)return;const j=d.current;j&&c(j.scrollHeight>j.clientHeight?"stable":"auto")});return r.useEffect(()=>(window.addEventListener("resize",_),document.addEventListener("DOMContentLoaded",_),()=>{window.removeEventListener("resize",_),document.removeEventListener("DOMContentLoaded",_)}),[_]),e.jsx(D,{overlayClassName:{base:i(a,w.overlay),beforeClose:w.beforeClose,afterOpen:w.afterOpen},className:{base:i(n,w.modal),beforeClose:w.beforeClose,afterOpen:w.afterOpen},style:h,closeTimeoutMS:250,onAfterOpen:_,...l,children:e.jsx("div",{className:w.content,style:{"--swui-modal-width":"fit-content",scrollbarGutter:m},ref:d,children:t})})},at="_modal_4fwgb_1",rt="_overlay_4fwgb_13",re={modal:at,overlay:rt},lt=({headerIconLeft:t,headerText:o,shouldCloseOnOverlayClick:n=!1,shouldCloseOnEsc:a=!1,...l})=>e.jsx(D,{...l,isOpen:!0,shouldCloseOnOverlayClick:n,shouldCloseOnEsc:a,className:re.modal,overlayClassName:re.overlay,children:e.jsxs(s.Column,{spacing:2,alignItems:"center",children:[e.jsx(s.Box,{alignItems:"center",justifyContent:"center",width:"64px",height:"64px",borderRadius:"50%",background:"white",shadow:"modal",children:e.jsx(p.Spinner,{size:"small"})}),(t||o)&&e.jsxs(e.Fragment,{children:[e.jsx(s.Spacing,{}),e.jsxs(s.Row,{indent:2,children:[t&&e.jsxs(e.Fragment,{children:[e.jsx(p.Icon,{size:14,icon:t,color:"white"}),e.jsx(s.Indent,{})]}),o&&e.jsx(s.Heading,{variant:"h4",color:"white",children:o})]})]})]})}),pe=({onRequestClose:t,header:o,headerText:n,closeButtonClassName:a})=>e.jsxs(s.Row,{spacing:2,indent:2,borderBottom:"1px solid var(--lhds-color-ui-300)",className:X,children:[e.jsxs(s.Row,{flex:1,indent:!0,alignItems:"center",children:[n&&e.jsx(s.Txt,{className:Y,size:"large",children:n}),o]}),e.jsx(s.Box,{alignSelf:"flex-start",children:e.jsx(p.CloseButton,{className:a,onClick:t})})]}),ct=({header:t,headerText:o,children:n,spacing:a,indent:l,draggable:d=!1,onRequestClose:m,closeButtonClassName:c,footer:h,disableStickyFooter:_=!1,...j})=>{const C=typeof a=="number"?a:1,R=typeof l=="number"?l:1;return e.jsxs(fe,{...j,onRequestClose:m,draggable:d,children:[e.jsx(pe,{onRequestClose:m,header:t,headerText:o,closeButtonClassName:c}),e.jsx(s.Box,{spacing:C,indent:R,children:n}),h&&e.jsx(s.Box,{className:i(B.footer,{[B.stickyFooter]:!_}),children:h})]})},it=({children:t})=>e.jsx(s.Column,{indent:2,spacing:2,children:t}),$=r.createContext(void 0);function z(t,{ref:o,modal:n,contentWrapperClassName:a,closingClassName:l,contentWrapperStyle:d,dialogStyle:m,divInsteadOfDialog:c,disableCloseOnClickOutside:h,elementId:_,onResolve:j,onReject:C,className:R,background:I,label:O,labelledby:S,describedby:T}){const Ne=r.useRef(null),g=o??Ne,[E,Be]=r.useReducer(u=>u+1,0),Q=r.useRef(null),H=r.useRef(null),y=r.useRef(void 0),L=r.useRef(!1),A=r.useRef(null),[Z,F]=r.useState(!1),[W,N]=r.useState(!1),[ee,v]=r.useState(!1),q=t,De=r.useCallback(u=>(Q.current=new Promise((x,ne)=>{H.current=x,A.current=ne}),v(!1),F(!0),N(!0),Be(),L.current=!1,y.current=u,n?g.current?.showModal():g.current?.show(),Q.current),[g,n]),te=r.useCallback(u=>{L.current=!0,v(!0),F(!1),c?setTimeout(()=>{v(!1),N(!1),H.current?.(u),y.current=void 0,j?.()},300):g.current?.addEventListener("animationend",x=>{x.stopPropagation(),v(!1),N(!1),g.current?.close(),H.current?.(u),y.current=void 0,j?.()},{once:!0})},[g,j,c]),b=r.useCallback(u=>{L.current=!0,v(!0),F(!1),c?setTimeout(()=>{v(!1),N(!1),A.current?.(u),C?.(),y.current=void 0},300):g.current?.addEventListener("animationend",x=>{x.stopPropagation(),v(!1),N(!1),g.current?.close(),A.current?.(u),C?.(),y.current=void 0},{once:!0})},[g,c,C]),oe=r.useCallback(u=>{u.stopPropagation(),L.current||(v(!1),F(!1),N(!1),A.current?.(),C?.(),y.current=void 0)},[C]),se=r.useCallback(u=>{if(u.target!==g.current)return;const x=g.current.getBoundingClientRect();x.top<=u.clientY&&u.clientY<=x.top+x.height&&x.left<=u.clientX&&u.clientX<=x.left+x.width||b()},[g,b]),P=r.useMemo(()=>({resolve:te,reject:b}),[b,te]);return[r.useMemo(()=>c?e.jsx(xe,{isOpen:Z,onRequestClose:b,background:I,contentLabel:O,id:_,aria:{modal:!0,labelledby:S,describedby:T},children:e.jsx($.Provider,{value:P,children:W&&r.createElement(q,{...y.current,key:E})})}):e.jsx("dialog",{onClick:h?void 0:se,onClose:oe,ref:g,id:_,className:i("swui-dialog",R,ee&&l),"aria-label":O,"aria-labelledby":S,"aria-describedby":T,style:{background:I,...m},children:e.jsx("div",{style:d,className:a,children:W&&e.jsx($.Provider,{value:P,children:r.createElement(q,{...y.current,key:E})})})}),[c,Z,b,I,O,_,S,T,P,W,q,E,h,se,oe,g,R,ee,l,m,d,a]),{show:De,reject:b}]}const dt=()=>{const t=r.useContext($);if(t==null)throw new Error("useDialogPromise is being used outside of dialog.");return t},ut="_alertDialog_14t8t_1",mt="_closing_14t8t_22",V={alertDialog:ut,closing:mt};function _t(t,o){return z(t,{...o,modal:!0,closingClassName:i(o?.closingClassName,V.closing),contentWrapperClassName:i(o?.contentWrapperClassName,V.contentWrapper),className:i(o?.className,V.alertDialog)})}const gt="_drawerDialog_11g6r_1",ft="_left_11g6r_13",xt="_right_11g6r_14",pt="_contentWrapper_11g6r_19",ht="_slideInLeft_11g6r_1",jt="_closing_11g6r_36",Ct="_slideOutLeft_11g6r_1",yt="_slideInRight_11g6r_1",vt="_slideOutRight_11g6r_1",bt="_top_11g6r_54",wt="_bottom_11g6r_55",Nt="_slideInTop_11g6r_1",Bt="_slideOutTop_11g6r_1",Dt="_slideInBottom_11g6r_1",Rt="_slideOutBottom_11g6r_1",k={drawerDialog:gt,left:ft,right:xt,contentWrapper:pt,slideInLeft:ht,closing:jt,slideOutLeft:Ct,slideInRight:yt,slideOutRight:vt,top:bt,bottom:wt,slideInTop:Nt,slideOutTop:Bt,slideInBottom:Dt,slideOutBottom:Rt};function Lt(t,o="left",n){return z(t,{...n,disableCloseOnClickOutside:!0,modal:!1,closingClassName:i(n?.closingClassName,k.closing),contentWrapperClassName:i(n?.contentWrapperClassName,k.contentWrapper),className:i(n?.className,k.drawerDialog,k[o])})}const At="_modalDialog_iw29e_1",Ft="_closing_iw29e_37",kt="_contentWrapper_iw29e_101",U={modalDialog:At,closing:Ft,contentWrapper:kt};function Mt(t,o){return z(t,{...o,modal:!0,closingClassName:i(o?.closingClassName,U.closing),contentWrapperClassName:i(o?.contentWrapperClassName,U.contentWrapper),className:i(o?.className,U.modalDialog)})}const J=({headingLevel:t="h2",size:o="medium",children:n})=>e.jsx(s.Heading,{variant:o==="medium"?"h3":"h1",as:t,children:n}),$t="_modalActionButtons_zeqa6_1",zt={modalActionButtons:$t},he=({children:t})=>e.jsxs(s.Box,{width:"100%",children:[e.jsx(s.Spacing,{}),e.jsx("div",{className:zt.modalActionButtons,children:t})]}),It="_modalBody_ozynq_1",le={modalBody:It},je=({gap:t=3,variant:o="normal",className:n,...a})=>e.jsx(s.Column,{className:i(le.modalBody,le[o],n),indent:o==="relaxed"?5:3,spacing:o==="relaxed"?5:3,gap:t,...a}),Ce=({children:t,maxWidth:o})=>e.jsx(s.Column,{flex:1,height:"100%",justifyContent:"space-between",maxWidth:o,children:t}),ye=t=>e.jsx(p.FlatButton,{size:"large",variant:"danger",leftIcon:p.stenaTimesThick,...t}),ve=({heading:t,headingLevel:o,headingSize:n,onClickClose:a,closeButtonAriaLabel:l})=>e.jsx(s.Column,{children:e.jsxs(s.Row,{justifyContent:"space-between",alignItems:"center",gap:2,children:[t?e.jsx(J,{headingLevel:o,size:n,children:t}):e.jsx("div",{}),a?e.jsx(ye,{onClick:a,size:n,"aria-label":l}):null]})}),Ot=({icon:t,buttons:o,heading:n,text:a,children:l,maxWidth:d,minWidth:m,...c})=>e.jsx(Ce,{children:e.jsxs(je,{gap:0,children:[c.onClickClose&&e.jsx(ve,{onClickClose:c.onClickClose,closeButtonAriaLabel:c.closeButtonAriaLabel}),e.jsxs(s.Column,{gap:2,flexDirection:"column",alignItems:"center",maxWidth:d,minWidth:m,children:[t&&e.jsxs(e.Fragment,{children:[!c.onClickClose&&e.jsx(s.Spacing,{}),e.jsx(p.CircledIcon,{icon:t,size:"large"}),e.jsx(s.Spacing,{})]}),e.jsx(J,{children:n}),a&&e.jsx(s.Text,{textAlign:"center",children:a}),l,o&&e.jsx(he,{children:o})]})]})}),St="_modalFooter_1ypno_1",Tt="_sticky_1ypno_10",ce={modalFooter:St,sticky:Tt},Et=({sticky:t,zIndex:o=4,gap:n=2,className:a,...l})=>e.jsx(s.Row,{className:i(ce.modalFooter,t&&ce.sticky,a),shadow:"var(--swui-sticky-footer-shadow)",zIndex:o,gap:n,...l}),Ht="_unreadDot_l8bni_1",Wt="_dot_l8bni_4",ie={unreadDot:Ht,dot:Wt},be=({children:t})=>e.jsxs("div",{className:ie.unreadDot,children:[t,e.jsx("div",{className:ie.dot})]}),qt="_notificationHeader_1rl25_1",Pt="_timestamp_1rl25_2",de={notificationHeader:qt,timestamp:Pt},K=({text:t,timestamp:o,icon:n,iconAriaLabel:a,contentLeft:l,contentRight:d,onClickClose:m,unread:c=!1,variant:h,iconBackgroundColor:_,forceCloseButtonAlignment:j})=>{const C=n?e.jsx(p.CircledIcon,{size:"small",icon:n,"aria-label":a,variant:"whiteBg",backgroundColor:_||we(c,h)}):void 0;return e.jsxs(s.Row,{alignItems:"flex-start",justifyContent:"space-between","data-comp":"NotificationHeader",className:de.notificationHeader,gap:2,children:[e.jsxs(s.Row,{gap:2,alignItems:"flex-start",children:[l&&e.jsx(s.Column,{justifyContent:"center",children:l}),!l&&C&&e.jsx(s.Row,{alignItems:"center",height:"40px",children:c?e.jsx(be,{children:C}):C}),e.jsxs(s.Box,{minHeight:20,justifyContent:"center",flex:1,gap:.5,children:[n||m||j?e.jsx(s.Space,{num:.5}):null,e.jsx(s.Text,{variant:"bold",children:t}),o&&e.jsx("div",{className:de.timestamp,children:e.jsx(s.Text,{size:"small",color:_e.cssColor(c?"--lhds-color-blue-600":"--lhds-color-ui-600"),children:o})})]})]}),d&&e.jsx(s.Column,{justifyContent:"center",children:d}),m&&e.jsx(s.Row,{alignItems:"center",height:"40px",width:"40px",children:e.jsx(p.CloseButton,{onClick:m})})]})},we=(t,o)=>{if(!(!t&&o==="standard"))return"--lhds-color-ui-50"},Gt="_notification_tpz0j_1",Vt="_body_tpz0j_10",Ut="_standard_tpz0j_15",Xt="_unread_tpz0j_16",Yt="_danger_tpz0j_21",M={notification:Gt,body:Vt,standard:Ut,unread:Xt,danger:Yt},Jt=({variant:t="standard",children:o,unread:n,...a})=>e.jsxs("div",{"data-comp":"Notification",className:i(M.notification,M[t],n&&M.unread),children:[e.jsx(K,{...a,unread:n,variant:t}),o&&e.jsx(s.Column,{className:M.body,children:o})]}),Kt="_notificationList_1rkvu_1",Qt={notificationList:Kt},Zt=({children:t})=>e.jsxs("div",{"data-comp":"NotificationList",className:Qt.notificationList,children:[t,e.jsx("div",{})]}),eo="_toast_1ifzt_1",to="_body_1ifzt_2",ue={toast:eo,body:to},oo=({children:t,width:o=364,maxWidth:n,...a})=>e.jsxs(s.Box,{className:ue.toast,"data-comp":"Toast",width:o,maxWidth:n,children:[e.jsx(K,{forceCloseButtonAlignment:!0,...a}),t&&e.jsx("div",{className:ue.body,children:t})]}),so="_toastBox_1lvsy_1",no="_clickable_1lvsy_8",me={toastBox:so,clickable:no},ao=({className:t,...o})=>e.jsx(s.Box,{as:o.onClick?"button":void 0,className:i(t,me.toastBox,o.onClick&&me.clickable),"data-comp":"Toast",role:"alert",...o}),ro="_toastContainer_1rek2_1",lo={toastContainer:ro},co=({...t})=>e.jsx(ge.ToastContainer,{className:lo.toastContainer,closeButton:({closeToast:o})=>e.jsx(p.CloseButton,{onClick:o}),hideProgressBar:!0,pauseOnFocusLoss:!1,pauseOnHover:!0,draggable:!1,...t}),io=(t,o)=>ge.toast(t,o);exports.Alert=Ze;exports.BaseWindow=fe;exports.DRAGGABLE_CANCEL_CLASSNAME=Y;exports.DRAGGABLE_HANDLE_CLASSNAME=X;exports.DialogContext=$;exports.Drawer=Ve;exports.DrawerHeader=Xe;exports.InfoAlert=Ot;exports.LoadingModal=lt;exports.Modal=xe;exports.ModalActionButtons=he;exports.ModalBody=je;exports.ModalCloseButton=ye;exports.ModalContainer=Ce;exports.ModalFooter=Et;exports.ModalHeader=ve;exports.ModalHeading=J;exports.Notification=Jt;exports.NotificationHeader=K;exports.NotificationList=Zt;exports.Toast=oo;exports.ToastBox=ao;exports.ToastContainer=co;exports.UnreadDot=be;exports.Window=ct;exports.WindowFooter=it;exports.WindowHeader=pe;exports.getIconBgColorFromVariant=we;exports.setupDeclarativeModals=Le;exports.showToast=io;exports.useAlertDialog=_t;exports.useDialog=z;exports.useDialogPromise=dt;exports.useDrawerDialog=Lt;exports.useModalDialog=Mt;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/declarative-modals/DeclarativeModalSetup.ts","../src/declarative-modals/window/BaseWindow.tsx","../src/declarative-modals/drawer/Drawer.tsx","../src/declarative-modals/drawer/DrawerHeader.tsx","../src/declarative-modals/alert/Alert.tsx","../src/declarative-modals/modal/Modal.tsx","../src/declarative-modals/loading-modal/LoadingModal.tsx","../src/declarative-modals/window/WindowHeader.tsx","../src/declarative-modals/window/Window.tsx","../src/declarative-modals/window/WindowFooter.tsx","../src/dialog/DialogContext.ts","../src/dialog/UseDialog.tsx","../src/dialog/UseDialogPromise.ts","../src/dialog/alert/UseAlertDialog.ts","../src/dialog/drawer/UseDrawerDialog.ts","../src/dialog/modal/UseModalDialog.ts","../src/building-blocks/ModalHeading.tsx","../src/building-blocks/ModalActionButtons.tsx","../src/building-blocks/ModalBody.tsx","../src/building-blocks/ModalContainer.tsx","../src/building-blocks/ModalCloseButton.tsx","../src/building-blocks/ModalHeader.tsx","../src/ready-made-modals/InfoAlert.tsx","../src/building-blocks/ModalFooter.tsx","../src/toasts/notification/UnreadDot.tsx","../src/toasts/notification/NotificationHeader.tsx","../src/toasts/notification/Notification.tsx","../src/toasts/notification/NotificationList.tsx","../src/toasts/toast/Toast.tsx","../src/toasts/toast/ToastBox.tsx","../src/toasts/toast-container/ToastContainer.tsx","../src/toasts/toast-container/util/showToast.ts"],"sourcesContent":["import ReactModal from \"react-modal\";\n\nexport const setupDeclarativeModals = (htmlElement: string | HTMLElement) => {\n ReactModal.setAppElement(htmlElement);\n};\n","import * as React from \"react\";\nimport { useRef } from \"react\";\nimport ReactModal from \"react-modal\";\nimport Draggable from \"react-draggable\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface BaseWindowProps extends ReactModal.Props {\n width?: string;\n maxWidth?: string;\n onRequestClose?: () => void;\n draggable?: boolean;\n}\n\nexport const DRAGGABLE_HANDLE_CLASSNAME = \"draggable-modal-handle\";\nexport const DRAGGABLE_CANCEL_CLASSNAME = \"draggable-modal-cancel\";\n\nexport const BaseWindow: React.FC<BaseWindowProps> = ({\n width,\n maxWidth,\n draggable = false,\n children,\n ...reactModalProps\n}) => {\n const nodeRef = useRef<HTMLDivElement>(null);\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n {...reactModalProps}\n >\n <Draggable\n handle={`.${DRAGGABLE_HANDLE_CLASSNAME}`}\n cancel={`.${DRAGGABLE_CANCEL_CLASSNAME}, button, [role=\"tooltip\"]`}\n bounds=\".ReactModal__Overlay\"\n disabled={!draggable}\n nodeRef={nodeRef as React.RefObject<HTMLElement>}\n >\n <div\n style={{\n [\"--swui-modal-width\" as string]: width,\n [\"--swui-modal-max-width\" as string]: maxWidth,\n }}\n className={cx(styles.content, {\n [styles.isDraggable]: draggable,\n })}\n ref={nodeRef}\n >\n {children}\n </div>\n </Draggable>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cx from \"classnames\";\nimport styles from \"./Drawer.module.css\";\nimport { exhaustSwitchCase, FlattenUnion } from \"@stenajs-webui/core\";\nimport {\n SlideFrom,\n SlideFromLeftRight,\n SlideFromTopBottom,\n} from \"../../common-types\";\n\nexport type DrawerProps = DrawerBaseLeftRight | DrawerBaseTopBottom;\n\nexport interface DrawerBaseLeftRight extends DrawerBaseProps {\n width?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('left'|'right')}\n */\n slideFrom?: SlideFromLeftRight;\n}\n\nexport interface DrawerBaseTopBottom extends DrawerBaseProps {\n height?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('top'|'bottom')}\n */\n slideFrom?: SlideFromTopBottom;\n}\n\ninterface DrawerBaseProps\n extends Omit<\n ReactModal.Props,\n | \"closeTimeoutMS\"\n | \"portalClassName\"\n | \"overlayClassName\"\n | \"className\"\n | \"style\"\n | \"parentSelector\"\n > {\n background?: string;\n\n /**\n * When true, there will be a gap between the drawer and the viewport.\n */\n floating?: boolean;\n\n zIndex?: number;\n onRequestClose?: () => void;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n background,\n zIndex,\n children,\n slideFrom = \"left\",\n portalTarget,\n floating,\n ...reactModalProps\n}) => {\n const { height, width } = reactModalProps as FlattenUnion<DrawerProps>;\n\n return (\n <ReactModal\n closeTimeoutMS={250}\n portalClassName={styles.portal}\n overlayClassName={{\n base: styles.overlay,\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n className={{\n base: cx(\n styles.content,\n getClassNameForSlide(slideFrom),\n floating && styles.floating,\n ),\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n style={{ content: { width, height, background }, overlay: { zIndex } }}\n parentSelector={portalTarget ? () => portalTarget : undefined}\n {...reactModalProps}\n >\n {children}\n </ReactModal>\n );\n};\n\nconst getClassNameForSlide = (slideFrom: SlideFrom): string => {\n switch (slideFrom) {\n case \"left\":\n return styles.slideFromLeft;\n case \"right\":\n return styles.slideFromRight;\n case \"top\":\n return styles.slideFromTop;\n case \"bottom\":\n return styles.slideFromBottom;\n default:\n return exhaustSwitchCase(slideFrom, styles.slideFromLeft);\n }\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon, stenaTimes } from \"@stenajs-webui/elements\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DrawerHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n icon?: IconDefinition;\n}\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n header,\n contentRight,\n onRequestClose,\n icon,\n}) => {\n return (\n <Spacing\n position={\"sticky\"}\n top={0}\n zIndex={100}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row alignItems={\"center\"} gap={2}>\n <Space num={1} />\n {icon && <Icon icon={icon} size={24} />}\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Alert.module.css\";\n\nexport interface AlertProps extends ReactModal.Props {\n onRequestClose?: () => void;\n}\n\nconst style = { overlay: { justifyContent: \"center\" } };\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n ...reactModalProps\n}) => {\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n style={style}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { useEventCallback } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./Modal.module.css\";\n\nexport interface ModalProps\n extends Omit<ReactModal.Props, \"className\" | \"overlayClassName\"> {\n background?: string;\n onRequestClose?: () => void;\n className?: string;\n overlayClassName?: string;\n}\n\nconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n background,\n className,\n overlayClassName,\n ...reactModalProps\n}) => {\n const ref = useRef<HTMLDivElement | null>(null);\n\n const [scrollbarGutter, setScrollbarGutter] = useState<\n \"auto\" | \"stable\" | undefined\n >(isSafari ? \"auto\" : undefined);\n\n const style = {\n overlay: { justifyContent: \"center\" },\n content: {\n \"--swui-modal-content-bg-color\": background,\n } as CSSProperties,\n };\n\n const updateScrollbarGutter = useEventCallback(() => {\n if (!isSafari) {\n return;\n }\n\n const container = ref.current;\n if (container) {\n setScrollbarGutter(\n container.scrollHeight > container.clientHeight ? \"stable\" : \"auto\",\n );\n }\n });\n\n /**\n * Applying scrollbar-gutter fixes a glitch in Safari where redraw\n * sometimes makes the modal change width (with or without gutter included in size calculation).\n * This causes the modal to jump around when hovering with mouse or resizing window.\n *\n * If this glitch is fixed in Safari, this code can be removed.\n */\n\n useEffect(() => {\n window.addEventListener(\"resize\", updateScrollbarGutter);\n document.addEventListener(\"DOMContentLoaded\", updateScrollbarGutter);\n return () => {\n window.removeEventListener(\"resize\", updateScrollbarGutter);\n document.removeEventListener(\"DOMContentLoaded\", updateScrollbarGutter);\n };\n }, [updateScrollbarGutter]);\n\n return (\n <ReactModal\n overlayClassName={{\n base: cx(overlayClassName, styles.overlay),\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n className={{\n base: cx(className, styles.modal),\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n style={style}\n closeTimeoutMS={250}\n onAfterOpen={updateScrollbarGutter}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{\n [\"--swui-modal-width\" as string]: \"fit-content\",\n scrollbarGutter,\n }}\n ref={ref}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n Box,\n Column,\n Heading,\n Indent,\n Row,\n Spacing,\n} from \"@stenajs-webui/core\";\nimport { Icon, Spinner } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./LoadingModal.module.css\";\n\nexport interface LoadingModalProps extends Omit<ReactModal.Props, \"isOpen\"> {\n headerText?: string;\n headerIconLeft?: IconDefinition;\n}\n\nexport const LoadingModal: React.FC<LoadingModalProps> = ({\n headerIconLeft,\n headerText,\n shouldCloseOnOverlayClick = false,\n shouldCloseOnEsc = false,\n ...modalProps\n}) => {\n return (\n <ReactModal\n {...modalProps}\n isOpen\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEsc={shouldCloseOnEsc}\n className={styles.modal}\n overlayClassName={styles.overlay}\n >\n <Column spacing={2} alignItems={\"center\"}>\n <Box\n alignItems={\"center\"}\n justifyContent={\"center\"}\n width={\"64px\"}\n height={\"64px\"}\n borderRadius={\"50%\"}\n background={\"white\"}\n shadow={\"modal\"}\n >\n <Spinner size={\"small\"} />\n </Box>\n {(headerIconLeft || headerText) && (\n <>\n <Spacing />\n <Row indent={2}>\n {headerIconLeft && (\n <>\n <Icon size={14} icon={headerIconLeft} color={\"white\"} />\n <Indent />\n </>\n )}\n {headerText && (\n <Heading variant={\"h4\"} color={\"white\"}>\n {headerText}\n </Heading>\n )}\n </Row>\n </>\n )}\n </Column>\n </ReactModal>\n );\n};\n","import { CloseButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n DRAGGABLE_CANCEL_CLASSNAME,\n DRAGGABLE_HANDLE_CLASSNAME,\n} from \"./BaseWindow\";\nimport { Box, Row, Txt } from \"@stenajs-webui/core\";\n\nexport interface WindowHeaderProps {\n onRequestClose?: () => void;\n header?: ReactNode;\n headerText?: string;\n closeButtonClassName?: string;\n}\n\nexport const WindowHeader: React.FC<WindowHeaderProps> = ({\n onRequestClose,\n header,\n headerText,\n closeButtonClassName,\n}) => {\n return (\n <Row\n spacing={2}\n indent={2}\n borderBottom={\"1px solid var(--lhds-color-ui-300)\"}\n className={DRAGGABLE_HANDLE_CLASSNAME}\n >\n <Row flex={1} indent alignItems={\"center\"}>\n {headerText && (\n <Txt className={DRAGGABLE_CANCEL_CLASSNAME} size={\"large\"}>\n {headerText}\n </Txt>\n )}\n {header}\n </Row>\n <Box alignSelf={\"flex-start\"}>\n <CloseButton\n className={closeButtonClassName}\n onClick={onRequestClose}\n />\n </Box>\n </Row>\n );\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { BaseWindow, BaseWindowProps } from \"./BaseWindow\";\nimport { WindowHeader, WindowHeaderProps } from \"./WindowHeader\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface WindowProps extends BaseWindowProps, WindowHeaderProps {\n spacing?: number;\n indent?: number;\n draggable?: boolean;\n footer?: React.ReactNode;\n disableStickyFooter?: boolean;\n}\n\nexport const Window: React.FC<WindowProps> = ({\n header,\n headerText,\n children,\n spacing,\n indent,\n draggable = false,\n onRequestClose,\n closeButtonClassName,\n footer,\n disableStickyFooter = false,\n ...props\n}) => {\n const activeSpacing = typeof spacing === \"number\" ? spacing : 1;\n const activeIndent = typeof indent === \"number\" ? indent : 1;\n\n return (\n <BaseWindow\n {...props}\n onRequestClose={onRequestClose}\n draggable={draggable}\n >\n <WindowHeader\n onRequestClose={onRequestClose}\n header={header}\n headerText={headerText}\n closeButtonClassName={closeButtonClassName}\n />\n <Box spacing={activeSpacing} indent={activeIndent}>\n {children}\n </Box>\n {footer && (\n <Box\n className={cx(styles.footer, {\n [styles.stickyFooter]: !disableStickyFooter,\n })}\n >\n {footer}\n </Box>\n )}\n </BaseWindow>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface WindowFooterProps {\n children?: ReactNode;\n}\n\nexport const WindowFooter: React.FC<WindowFooterProps> = ({ children }) => (\n <Column indent={2} spacing={2}>\n {children}\n </Column>\n);\n","import { createContext } from \"react\";\nimport { RejectCommand, ResolveCommand } from \"./DialogCommands\";\n\nexport interface DialogContextValue<TResolveValue> {\n resolve: ResolveCommand<TResolveValue>;\n reject: RejectCommand;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const DialogContext = createContext<DialogContextValue<any> | undefined>(\n undefined,\n);\n","import cx from \"classnames\";\nimport React, {\n CSSProperties,\n MouseEventHandler,\n ReactEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { RejectCommand, ResolveCommand, ShowCommand } from \"./DialogCommands\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\nimport { Modal } from \"../declarative-modals/modal/Modal\";\n\ntype UseDialogCallbacks<TProps, TPromiseResolve> = {\n show: ShowCommand<TProps, TPromiseResolve>;\n reject: RejectCommand;\n};\n\nexport type UseDialogResult<TProps, TPromiseResolve> = [\n ReactNode,\n UseDialogCallbacks<TProps, TPromiseResolve>,\n];\n\nexport interface DialogOptions {\n divInsteadOfDialog?: boolean;\n elementId?: string;\n background?: string;\n disableCloseOnClickOutside?: boolean;\n modal: boolean;\n className: string;\n closingClassName: string;\n contentWrapperClassName: string;\n contentWrapperStyle?: CSSProperties;\n dialogStyle?: CSSProperties;\n ref?: RefObject<HTMLDialogElement | null>;\n onResolve?: () => void;\n onReject?: () => void;\n /**\n * Sets aria-label on modal or dialog element.\n */\n label?: string;\n /**\n * Sets aria-labelledby on modal or dialog element.\n */\n labelledby?: string;\n /**\n * Sets aria-describedby on modal or dialog element.\n */\n describedby?: string;\n}\n\nexport function useDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n {\n ref,\n modal,\n contentWrapperClassName,\n closingClassName,\n contentWrapperStyle,\n dialogStyle,\n divInsteadOfDialog,\n disableCloseOnClickOutside,\n elementId,\n onResolve,\n onReject,\n className,\n background,\n label,\n labelledby,\n describedby,\n }: DialogOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n const localRef = useRef<HTMLDialogElement>(null);\n const currentRef = ref ?? localRef;\n const [key, forceRerender] = useReducer((x) => x + 1, 0);\n const promiseRef = useRef<Promise<TPromiseResolve | undefined>>(null);\n const resolveRef = useRef<ResolveCommand<TPromiseResolve> | undefined>(null);\n const modalComponentProps = useRef<TProps>(undefined);\n const closedByPromiseRef = useRef<boolean>(false);\n const rejectRef = useRef<RejectCommand | undefined>(null);\n /**\n * Used by Modal to control open/close with animation.\n */\n const [isOpen, setIsOpen] = useState(false);\n /**\n * Used by both Modal and dialog to decide if content is visible. When props is cleared, we can not render content that requires props.\n */\n const [contentVisible, setContentVisible] = useState(false);\n /**\n * Used by dialog to know if it is currently animating to closed state.\n */\n const [closing, setClosing] = useState(false);\n\n const Comp = component;\n\n const show = useCallback<ShowCommand<TProps, TPromiseResolve>>(\n (props?: TProps) => {\n promiseRef.current = new Promise<TPromiseResolve | undefined>(\n (resolve, reject) => {\n resolveRef.current = resolve;\n rejectRef.current = reject;\n },\n );\n setClosing(false);\n setIsOpen(true);\n setContentVisible(true);\n forceRerender();\n closedByPromiseRef.current = false;\n modalComponentProps.current = props;\n if (modal) {\n currentRef.current?.showModal();\n } else {\n currentRef.current?.show();\n }\n return promiseRef.current;\n },\n [currentRef, modal],\n );\n\n const resolve = useCallback<ResolveCommand<TPromiseResolve>>(\n (value) => {\n closedByPromiseRef.current = true;\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n (ev) => {\n ev.stopPropagation();\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n }, 300);\n }\n },\n [currentRef, onResolve, divInsteadOfDialog],\n );\n\n const reject = useCallback<RejectCommand>(\n (error) => {\n closedByPromiseRef.current = true;\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n (ev) => {\n ev.stopPropagation();\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n }, 300);\n }\n },\n [currentRef, divInsteadOfDialog, onReject],\n );\n\n const onClose = useCallback<ReactEventHandler<HTMLDialogElement>>(\n (ev) => {\n // Remove content immediately, since it cannot be animated when closed by browser.\n ev.stopPropagation();\n if (!closedByPromiseRef.current) {\n setClosing(false);\n setIsOpen(false);\n setContentVisible(false);\n rejectRef.current?.();\n onReject?.();\n modalComponentProps.current = undefined;\n }\n },\n [onReject],\n );\n\n const onClick = useCallback<MouseEventHandler<HTMLDialogElement>>(\n (e) => {\n if (e.target !== currentRef.current) {\n return;\n }\n\n const rect = currentRef.current.getBoundingClientRect();\n\n const clickedInsideDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!clickedInsideDialog) {\n reject();\n }\n },\n [currentRef, reject],\n );\n\n const contextValue = useMemo(\n () => ({ resolve, reject }) as DialogContextValue<unknown>,\n [reject, resolve],\n );\n\n const element = useMemo<ReactNode>(\n () =>\n divInsteadOfDialog ? (\n <Modal\n isOpen={isOpen}\n onRequestClose={reject}\n background={background}\n contentLabel={label}\n id={elementId}\n aria={{ modal: true, labelledby, describedby }}\n >\n <DialogContext.Provider value={contextValue}>\n {contentVisible && (\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n )}\n </DialogContext.Provider>\n </Modal>\n ) : (\n <dialog\n onClick={disableCloseOnClickOutside ? undefined : onClick}\n onClose={onClose}\n ref={currentRef}\n id={elementId}\n className={cx(className, closing && closingClassName)}\n aria-label={label}\n aria-labelledby={labelledby}\n aria-describedby={describedby}\n style={{ background: background, ...dialogStyle }}\n >\n <div style={contentWrapperStyle} className={contentWrapperClassName}>\n {contentVisible && (\n <DialogContext.Provider value={contextValue}>\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n </DialogContext.Provider>\n )}\n </div>\n </dialog>\n ),\n [\n divInsteadOfDialog,\n isOpen,\n reject,\n background,\n label,\n elementId,\n labelledby,\n describedby,\n contextValue,\n contentVisible,\n Comp,\n key,\n disableCloseOnClickOutside,\n onClick,\n onClose,\n currentRef,\n className,\n closing,\n closingClassName,\n dialogStyle,\n contentWrapperStyle,\n contentWrapperClassName,\n ],\n );\n\n return [element, { show, reject }];\n}\n","import { useContext } from \"react\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\n\nexport const useDialogPromise = <\n TResolveValue = void,\n>(): DialogContextValue<TResolveValue> => {\n const context = useContext(DialogContext);\n if (context == null) {\n throw new Error(\"useDialogPromise is being used outside of dialog.\");\n }\n return context as DialogContextValue<TResolveValue>;\n};\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./AlertDialog.module.css\";\n\nexport function useAlertDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.alertDialog),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./DrawerDialog.module.css\";\nimport { SlideFrom } from \"../../common-types\";\n\ninterface DrawerOptions\n extends Partial<Omit<DialogOptions, \"disableCloseOnClickOutside\">> {}\n\nexport function useDrawerDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n slideFrom: SlideFrom = \"left\",\n options?: DrawerOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n disableCloseOnClickOutside: true,\n modal: false,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.drawerDialog, styles[slideFrom]),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./ModalDialog.module.css\";\n\nexport function useModalDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.modalDialog),\n });\n}\n","import * as React from \"react\";\nimport { Heading, HeadingVariant } from \"@stenajs-webui/core\";\n\nexport type ModalHeadingSizeVariant = \"medium\" | \"large\";\n\nexport interface ModalHeadingProps {\n size?: ModalHeadingSizeVariant;\n children: string;\n headingLevel?: HeadingVariant;\n}\n\nexport const ModalHeading: React.FC<ModalHeadingProps> = ({\n headingLevel = \"h2\",\n size = \"medium\",\n children,\n}) => {\n return (\n <Heading variant={size === \"medium\" ? \"h3\" : \"h1\"} as={headingLevel}>\n {children}\n </Heading>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport styles from \"./ModalActionButtons.module.css\";\nimport { Box, Spacing } from \"@stenajs-webui/core\";\n\nexport interface ModalActionButtonsProps extends PropsWithChildren {}\n\nexport const ModalActionButtons: React.FC<ModalActionButtonsProps> = ({\n children,\n}) => {\n return (\n <Box width={\"100%\"}>\n <Spacing />\n <div className={styles.modalActionButtons}>{children}</div>\n </Box>\n );\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport styles from \"./ModalBody.module.css\";\nimport cx from \"classnames\";\n\nexport type ModalBodyVariant = \"normal\" | \"relaxed\";\n\nexport interface ModalBodyProps extends Omit<BoxProps, \"indent\" | \"spacing\"> {\n variant?: ModalBodyVariant;\n}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({\n gap = 3,\n variant = \"normal\",\n className,\n ...props\n}) => {\n return (\n <Column\n className={cx(styles.modalBody, styles[variant], className)}\n indent={variant === \"relaxed\" ? 5 : 3}\n spacing={variant === \"relaxed\" ? 5 : 3}\n gap={gap}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport interface ModalContainerProps\n extends PropsWithChildren,\n Pick<BoxProps, \"maxWidth\"> {}\n\nexport const ModalContainer: React.FC<ModalContainerProps> = ({\n children,\n maxWidth,\n}) => {\n return (\n <Column\n flex={1}\n height={\"100%\"}\n justifyContent={\"space-between\"}\n maxWidth={maxWidth}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaTimesThick,\n} from \"@stenajs-webui/elements\";\n\nexport interface ModalCloseButtonProps extends FlatButtonProps {}\n\nexport const ModalCloseButton: React.FC<ModalCloseButtonProps> = (props) => {\n return (\n <FlatButton\n size={\"large\"}\n variant={\"danger\"}\n leftIcon={stenaTimesThick}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { Column, HeadingVariant, Row } from \"@stenajs-webui/core\";\nimport { ModalHeading, ModalHeadingSizeVariant } from \"./ModalHeading\";\nimport { ModalCloseButton } from \"./ModalCloseButton\";\n\nexport type ModalHeaderProps =\n | ModalHeaderWithCloseButtonProps\n | ModalHeaderWithNoCloseButtonProps;\n\nexport interface ModalHeaderCommonProps {\n heading?: string;\n headingSize?: ModalHeadingSizeVariant;\n headingLevel?: HeadingVariant;\n}\n\nexport interface ModalHeaderWithCloseButtonProps\n extends ModalHeaderCommonProps {\n onClickClose?: never;\n closeButtonAriaLabel?: never;\n}\n\nexport interface ModalHeaderWithNoCloseButtonProps\n extends ModalHeaderCommonProps {\n onClickClose: () => void;\n closeButtonAriaLabel: string;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({\n heading,\n headingLevel,\n headingSize,\n onClickClose,\n closeButtonAriaLabel,\n}) => {\n return (\n <Column>\n <Row justifyContent={\"space-between\"} alignItems={\"center\"} gap={2}>\n {heading ? (\n <ModalHeading headingLevel={headingLevel} size={headingSize}>\n {heading}\n </ModalHeading>\n ) : (\n <div />\n )}\n {onClickClose ? (\n <ModalCloseButton\n onClick={onClickClose}\n size={headingSize}\n aria-label={closeButtonAriaLabel}\n />\n ) : null}\n </Row>\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Column, Spacing, Text } from \"@stenajs-webui/core\";\nimport { ModalHeading } from \"../building-blocks/ModalHeading\";\nimport { ModalActionButtons } from \"../building-blocks/ModalActionButtons\";\nimport { CircledIcon, MediumIcon } from \"@stenajs-webui/elements\";\nimport { ModalBody } from \"../building-blocks/ModalBody\";\nimport { ModalContainer } from \"../building-blocks/ModalContainer\";\nimport { ModalHeader } from \"../building-blocks/ModalHeader\";\n\nexport type InfoAlertProps =\n | InfoAlertPropsWithNoCloseButton\n | InfoAlertPropsWithCloseButton;\n\nexport interface InfoAlertCommonProps extends PropsWithChildren {\n heading: string;\n text?: string;\n buttons?: ReactNode;\n icon?: MediumIcon;\n maxWidth?: string;\n minWidth?: string;\n}\n\nexport interface InfoAlertPropsWithNoCloseButton extends InfoAlertCommonProps {\n onClickClose?: never;\n closeButtonAriaLabel?: never;\n}\n\nexport interface InfoAlertPropsWithCloseButton extends InfoAlertCommonProps {\n onClickClose: () => void;\n closeButtonAriaLabel: string;\n}\n\nexport const InfoAlert: React.FC<InfoAlertProps> = ({\n icon,\n buttons,\n heading,\n text,\n children,\n maxWidth,\n minWidth,\n ...props\n}) => {\n return (\n <ModalContainer>\n <ModalBody gap={0}>\n {props.onClickClose && (\n <ModalHeader\n onClickClose={props.onClickClose}\n closeButtonAriaLabel={props.closeButtonAriaLabel}\n />\n )}\n <Column\n gap={2}\n flexDirection={\"column\"}\n alignItems={\"center\"}\n maxWidth={maxWidth}\n minWidth={minWidth}\n >\n {icon && (\n <>\n {!props.onClickClose && <Spacing />}\n <CircledIcon icon={icon} size={\"large\"} />\n <Spacing />\n </>\n )}\n <ModalHeading>{heading}</ModalHeading>\n {text && <Text textAlign={\"center\"}>{text}</Text>}\n {children}\n {buttons && <ModalActionButtons>{buttons}</ModalActionButtons>}\n </Column>\n </ModalBody>\n </ModalContainer>\n );\n};\n","import { BoxProps, Row } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./ModalFooter.module.css\";\n\nexport interface ModalFooterProps extends BoxProps {\n sticky?: boolean;\n gap?: number;\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({\n sticky,\n zIndex = 4,\n gap = 2,\n className,\n ...boxProps\n}) => {\n return (\n <Row\n className={cx(styles.modalFooter, sticky && styles.sticky, className)}\n shadow={\"var(--swui-sticky-footer-shadow)\"}\n zIndex={zIndex}\n gap={gap}\n {...boxProps}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./UnreadDot.module.css\";\n\nexport interface UnreadDotProps {\n children: ReactNode;\n}\n\nexport const UnreadDot: React.FC<UnreadDotProps> = ({ children }) => {\n return (\n <div className={styles.unreadDot}>\n {children}\n <div className={styles.dot} />\n </div>\n );\n};\n","import { Box, Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { CircledIcon, CloseButton, MediumIcon } from \"@stenajs-webui/elements\";\nimport { cssColor, CssPropColor } from \"@stenajs-webui/theme\";\nimport { UnreadDot } from \"./UnreadDot\";\nimport { NotificationVariant } from \"./Notification\";\nimport styles from \"./NotificationHeader.module.css\";\n\nexport interface NotificationHeaderProps {\n /** Text. */\n text: string;\n /** Timestamp. */\n timestamp?: string;\n /** Icon. */\n icon?: MediumIcon;\n /** Icon description for accessibility. */\n iconAriaLabel?: string;\n /** Left content instead of icon. */\n contentLeft?: React.ReactNode;\n /** Right content. */\n contentRight?: React.ReactNode;\n /** What happens on clicking close. */\n onClickClose?: () => void;\n /** Mark the notification as unread */\n unread?: boolean;\n /** Notification variant. Will affect icon bg color */\n variant?: NotificationVariant;\n /** Icon background color. Will override other icon bg color */\n iconBackgroundColor?: CssPropColor;\n /** Force alignment of text for close button. This is used with toastify, which adds close button outside of the header. */\n forceCloseButtonAlignment?: boolean;\n}\n\nexport const NotificationHeader: React.FC<NotificationHeaderProps> = ({\n text,\n timestamp,\n icon,\n iconAriaLabel,\n contentLeft,\n contentRight,\n onClickClose,\n unread = false,\n variant,\n iconBackgroundColor,\n forceCloseButtonAlignment,\n}) => {\n const circledIcon = icon ? (\n <CircledIcon\n size={\"small\"}\n icon={icon}\n aria-label={iconAriaLabel}\n variant={\"whiteBg\"}\n backgroundColor={\n iconBackgroundColor\n ? iconBackgroundColor\n : getIconBgColorFromVariant(unread, variant)\n }\n />\n ) : undefined;\n\n return (\n <Row\n alignItems={\"flex-start\"}\n justifyContent={\"space-between\"}\n data-comp={\"NotificationHeader\"}\n className={styles.notificationHeader}\n gap={2}\n >\n <Row gap={2} alignItems={\"flex-start\"}>\n {contentLeft && (\n <Column justifyContent={\"center\"}>{contentLeft}</Column>\n )}\n {!contentLeft && circledIcon && (\n <Row alignItems={\"center\"} height={\"40px\"}>\n {unread ? <UnreadDot>{circledIcon}</UnreadDot> : circledIcon}\n </Row>\n )}\n <Box minHeight={20} justifyContent={\"center\"} flex={1} gap={0.5}>\n {icon || onClickClose || forceCloseButtonAlignment ? (\n <Space num={0.5} />\n ) : null}\n <Text variant={\"bold\"}>{text}</Text>\n {timestamp && (\n <div className={styles.timestamp}>\n <Text\n size={\"small\"}\n color={cssColor(\n unread ? \"--lhds-color-blue-600\" : \"--lhds-color-ui-600\",\n )}\n >\n {timestamp}\n </Text>\n </div>\n )}\n </Box>\n </Row>\n {contentRight && (\n <Column justifyContent={\"center\"}>{contentRight}</Column>\n )}\n {onClickClose && (\n <Row alignItems={\"center\"} height={\"40px\"} width={\"40px\"}>\n <CloseButton onClick={onClickClose} />\n </Row>\n )}\n </Row>\n );\n};\n\nexport const getIconBgColorFromVariant = (\n unread: boolean,\n variant?: NotificationVariant,\n): CssPropColor | undefined => {\n if (!unread && variant === \"standard\") {\n return undefined;\n }\n return \"--lhds-color-ui-50\";\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n NotificationHeader,\n NotificationHeaderProps,\n} from \"./NotificationHeader\";\nimport styles from \"./Notification.module.css\";\nimport cx from \"classnames\";\n\nexport type NotificationVariant = \"standard\" | \"danger\";\n\nexport interface NotificationProps extends NotificationHeaderProps {\n children?: ReactNode;\n}\n\nexport const Notification: React.FC<NotificationProps> = ({\n variant = \"standard\",\n children,\n unread,\n ...headerProps\n}) => (\n <div\n data-comp={\"Notification\"}\n className={cx(\n styles.notification,\n styles[variant],\n unread && styles.unread,\n )}\n >\n <NotificationHeader {...headerProps} unread={unread} variant={variant} />\n {children && <Column className={styles.body}>{children}</Column>}\n </div>\n);\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./NotificationList.module.css\";\n\nexport interface NotificationListProps {\n children?: ReactNode;\n}\n\nexport const NotificationList: React.FC<NotificationListProps> = ({\n children,\n}) => {\n return (\n <div data-comp={\"NotificationList\"} className={styles.notificationList}>\n {children}\n <div />\n </div>\n );\n};\n","import { Box, BoxProps } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport styles from \"./Toast.module.css\";\nimport {\n NotificationHeader,\n NotificationHeaderProps,\n} from \"../notification/NotificationHeader\";\n\nexport interface ToastProps\n extends Pick<BoxProps, \"children\" | \"width\" | \"maxWidth\">,\n Omit<NotificationHeaderProps, \"contentRight\"> {}\n\nexport const Toast: React.FC<ToastProps> = ({\n children,\n width = 364,\n maxWidth,\n ...headerProps\n}) => (\n <Box\n className={styles.toast}\n data-comp={\"Toast\"}\n width={width}\n maxWidth={maxWidth}\n >\n <NotificationHeader forceCloseButtonAlignment {...headerProps} />\n {children && <div className={styles.body}>{children}</div>}\n </Box>\n);\n","import * as React from \"react\";\nimport { Box, BoxProps } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport styles from \"./ToastBox.module.css\";\n\nexport interface ToastBoxProps extends BoxProps {}\n\nexport const ToastBox: React.FC<ToastBoxProps> = ({ className, ...props }) => {\n return (\n <Box\n as={props.onClick ? \"button\" : undefined}\n className={cx(\n className,\n styles.toastBox,\n props.onClick && styles.clickable,\n )}\n data-comp={\"Toast\"}\n role={\"alert\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport {\n ToastContainer as ToastifyToastContainer,\n ToastContainerProps as ToastifyToastContainerProps,\n} from \"react-toastify\";\nimport styles from \"./ToastContainer.module.css\";\nimport { CloseButton } from \"@stenajs-webui/elements\";\n\nexport type ToastContainerProps = ToastifyToastContainerProps;\n\nexport const ToastContainer: React.FC<ToastContainerProps> = ({ ...props }) => {\n return (\n <ToastifyToastContainer\n className={styles.toastContainer}\n closeButton={({ closeToast }) => <CloseButton onClick={closeToast} />}\n hideProgressBar={true}\n pauseOnFocusLoss={false}\n pauseOnHover={true}\n draggable={false}\n {...props}\n />\n );\n};\n","import { toast, ToastContent, ToastOptions } from \"react-toastify\";\n\nexport const showToast = <T>(\n content: ToastContent<T>,\n options?: ToastOptions<T> | undefined,\n) => toast<T>(content, options);\n"],"names":["setupDeclarativeModals","htmlElement","ReactModal","DRAGGABLE_HANDLE_CLASSNAME","DRAGGABLE_CANCEL_CLASSNAME","BaseWindow","width","maxWidth","draggable","children","reactModalProps","nodeRef","useRef","jsx","styles","Draggable","cx","Drawer","background","zIndex","slideFrom","portalTarget","floating","height","getClassNameForSlide","exhaustSwitchCase","DrawerHeader","header","contentRight","onRequestClose","icon","Spacing","cssColor","jsxs","Row","Space","Icon","Heading","FlatButton","stenaTimes","style","Alert","isSafari","Modal","className","overlayClassName","ref","scrollbarGutter","setScrollbarGutter","useState","updateScrollbarGutter","useEventCallback","container","useEffect","LoadingModal","headerIconLeft","headerText","shouldCloseOnOverlayClick","shouldCloseOnEsc","modalProps","Column","Box","Spinner","Fragment","Indent","WindowHeader","closeButtonClassName","Txt","CloseButton","Window","spacing","indent","footer","disableStickyFooter","props","activeSpacing","activeIndent","WindowFooter","DialogContext","createContext","useDialog","component","modal","contentWrapperClassName","closingClassName","contentWrapperStyle","dialogStyle","divInsteadOfDialog","disableCloseOnClickOutside","elementId","onResolve","onReject","label","labelledby","describedby","localRef","currentRef","key","forceRerender","useReducer","x","promiseRef","resolveRef","modalComponentProps","closedByPromiseRef","rejectRef","isOpen","setIsOpen","contentVisible","setContentVisible","closing","setClosing","Comp","show","useCallback","resolve","reject","value","ev","error","onClose","onClick","e","rect","contextValue","useMemo","createElement","useDialogPromise","context","useContext","useAlertDialog","options","useDrawerDialog","useModalDialog","ModalHeading","headingLevel","size","ModalActionButtons","ModalBody","gap","variant","ModalContainer","ModalCloseButton","stenaTimesThick","ModalHeader","heading","headingSize","onClickClose","closeButtonAriaLabel","InfoAlert","buttons","text","minWidth","CircledIcon","Text","ModalFooter","sticky","boxProps","UnreadDot","NotificationHeader","timestamp","iconAriaLabel","contentLeft","unread","iconBackgroundColor","forceCloseButtonAlignment","circledIcon","getIconBgColorFromVariant","Notification","headerProps","NotificationList","Toast","ToastBox","ToastContainer","ToastifyToastContainer","closeToast","showToast","content","toast"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/declarative-modals/DeclarativeModalSetup.ts","../src/declarative-modals/window/BaseWindow.tsx","../src/declarative-modals/drawer/Drawer.tsx","../src/declarative-modals/drawer/DrawerHeader.tsx","../src/declarative-modals/alert/Alert.tsx","../src/declarative-modals/modal/Modal.tsx","../src/declarative-modals/loading-modal/LoadingModal.tsx","../src/declarative-modals/window/WindowHeader.tsx","../src/declarative-modals/window/Window.tsx","../src/declarative-modals/window/WindowFooter.tsx","../src/dialog/DialogContext.ts","../src/dialog/UseDialog.tsx","../src/dialog/UseDialogPromise.ts","../src/dialog/alert/UseAlertDialog.ts","../src/dialog/drawer/UseDrawerDialog.ts","../src/dialog/modal/UseModalDialog.ts","../src/building-blocks/ModalHeading.tsx","../src/building-blocks/ModalActionButtons.tsx","../src/building-blocks/ModalBody.tsx","../src/building-blocks/ModalContainer.tsx","../src/building-blocks/ModalCloseButton.tsx","../src/building-blocks/ModalHeader.tsx","../src/ready-made-modals/InfoAlert.tsx","../src/building-blocks/ModalFooter.tsx","../src/toasts/notification/UnreadDot.tsx","../src/toasts/notification/NotificationHeader.tsx","../src/toasts/notification/Notification.tsx","../src/toasts/notification/NotificationList.tsx","../src/toasts/toast/Toast.tsx","../src/toasts/toast/ToastBox.tsx","../src/toasts/toast-container/ToastContainer.tsx","../src/toasts/toast-container/util/showToast.ts"],"sourcesContent":["import ReactModal from \"react-modal\";\n\nexport const setupDeclarativeModals = (htmlElement: string | HTMLElement) => {\n ReactModal.setAppElement(htmlElement);\n};\n","import * as React from \"react\";\nimport { useRef } from \"react\";\nimport ReactModal from \"react-modal\";\nimport Draggable from \"react-draggable\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface BaseWindowProps extends ReactModal.Props {\n width?: string;\n maxWidth?: string;\n onRequestClose?: () => void;\n draggable?: boolean;\n}\n\nexport const DRAGGABLE_HANDLE_CLASSNAME = \"draggable-modal-handle\";\nexport const DRAGGABLE_CANCEL_CLASSNAME = \"draggable-modal-cancel\";\n\nexport const BaseWindow: React.FC<BaseWindowProps> = ({\n width,\n maxWidth,\n draggable = false,\n children,\n ...reactModalProps\n}) => {\n const nodeRef = useRef<HTMLDivElement>(null);\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n {...reactModalProps}\n >\n <Draggable\n handle={`.${DRAGGABLE_HANDLE_CLASSNAME}`}\n cancel={`.${DRAGGABLE_CANCEL_CLASSNAME}, button, [role=\"tooltip\"]`}\n bounds=\".ReactModal__Overlay\"\n disabled={!draggable}\n nodeRef={nodeRef as React.RefObject<HTMLElement>}\n >\n <div\n style={{\n [\"--swui-modal-width\" as string]: width,\n [\"--swui-modal-max-width\" as string]: maxWidth,\n }}\n className={cx(styles.content, {\n [styles.isDraggable]: draggable,\n })}\n ref={nodeRef}\n >\n {children}\n </div>\n </Draggable>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cx from \"classnames\";\nimport styles from \"./Drawer.module.css\";\nimport { exhaustSwitchCase, FlattenUnion } from \"@stenajs-webui/core\";\nimport {\n SlideFrom,\n SlideFromLeftRight,\n SlideFromTopBottom,\n} from \"../../common-types\";\n\nexport type DrawerProps = DrawerBaseLeftRight | DrawerBaseTopBottom;\n\nexport interface DrawerBaseLeftRight extends DrawerBaseProps {\n width?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('left'|'right')}\n */\n slideFrom?: SlideFromLeftRight;\n}\n\nexport interface DrawerBaseTopBottom extends DrawerBaseProps {\n height?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('top'|'bottom')}\n */\n slideFrom?: SlideFromTopBottom;\n}\n\ninterface DrawerBaseProps\n extends Omit<\n ReactModal.Props,\n | \"closeTimeoutMS\"\n | \"portalClassName\"\n | \"overlayClassName\"\n | \"className\"\n | \"style\"\n | \"parentSelector\"\n > {\n background?: string;\n\n /**\n * When true, there will be a gap between the drawer and the viewport.\n */\n floating?: boolean;\n\n zIndex?: number;\n onRequestClose?: () => void;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n background,\n zIndex,\n children,\n slideFrom = \"left\",\n portalTarget,\n floating,\n ...reactModalProps\n}) => {\n const { height, width } = reactModalProps as FlattenUnion<DrawerProps>;\n\n return (\n <ReactModal\n closeTimeoutMS={250}\n portalClassName={styles.portal}\n overlayClassName={{\n base: styles.overlay,\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n className={{\n base: cx(\n styles.content,\n getClassNameForSlide(slideFrom),\n floating && styles.floating,\n ),\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n style={{ content: { width, height, background }, overlay: { zIndex } }}\n parentSelector={portalTarget ? () => portalTarget : undefined}\n {...reactModalProps}\n >\n {children}\n </ReactModal>\n );\n};\n\nconst getClassNameForSlide = (slideFrom: SlideFrom): string => {\n switch (slideFrom) {\n case \"left\":\n return styles.slideFromLeft;\n case \"right\":\n return styles.slideFromRight;\n case \"top\":\n return styles.slideFromTop;\n case \"bottom\":\n return styles.slideFromBottom;\n default:\n return exhaustSwitchCase(slideFrom, styles.slideFromLeft);\n }\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon, stenaTimes } from \"@stenajs-webui/elements\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DrawerHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n icon?: IconDefinition;\n}\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n header,\n contentRight,\n onRequestClose,\n icon,\n}) => {\n return (\n <Spacing\n position={\"sticky\"}\n top={0}\n zIndex={100}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row alignItems={\"center\"} gap={2}>\n <Space num={1} />\n {icon && <Icon icon={icon} size={24} />}\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Alert.module.css\";\n\nexport interface AlertProps extends ReactModal.Props {\n onRequestClose?: () => void;\n}\n\nconst style = { overlay: { justifyContent: \"center\" } };\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n ...reactModalProps\n}) => {\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n style={style}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { useEventCallback } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./Modal.module.css\";\n\nexport interface ModalProps\n extends Omit<ReactModal.Props, \"className\" | \"overlayClassName\"> {\n background?: string;\n onRequestClose?: () => void;\n className?: string;\n overlayClassName?: string;\n}\n\nconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n background,\n className,\n overlayClassName,\n ...reactModalProps\n}) => {\n const ref = useRef<HTMLDivElement | null>(null);\n\n const [scrollbarGutter, setScrollbarGutter] = useState<\n \"auto\" | \"stable\" | undefined\n >(isSafari ? \"auto\" : undefined);\n\n const style = {\n overlay: { justifyContent: \"center\" },\n content: {\n \"--swui-modal-content-bg-color\": background,\n } as CSSProperties,\n };\n\n const updateScrollbarGutter = useEventCallback(() => {\n if (!isSafari) {\n return;\n }\n\n const container = ref.current;\n if (container) {\n setScrollbarGutter(\n container.scrollHeight > container.clientHeight ? \"stable\" : \"auto\",\n );\n }\n });\n\n /**\n * Applying scrollbar-gutter fixes a glitch in Safari where redraw\n * sometimes makes the modal change width (with or without gutter included in size calculation).\n * This causes the modal to jump around when hovering with mouse or resizing window.\n *\n * If this glitch is fixed in Safari, this code can be removed.\n */\n\n useEffect(() => {\n window.addEventListener(\"resize\", updateScrollbarGutter);\n document.addEventListener(\"DOMContentLoaded\", updateScrollbarGutter);\n return () => {\n window.removeEventListener(\"resize\", updateScrollbarGutter);\n document.removeEventListener(\"DOMContentLoaded\", updateScrollbarGutter);\n };\n }, [updateScrollbarGutter]);\n\n return (\n <ReactModal\n overlayClassName={{\n base: cx(overlayClassName, styles.overlay),\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n className={{\n base: cx(className, styles.modal),\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n style={style}\n closeTimeoutMS={250}\n onAfterOpen={updateScrollbarGutter}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{\n [\"--swui-modal-width\" as string]: \"fit-content\",\n scrollbarGutter,\n }}\n ref={ref}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n Box,\n Column,\n Heading,\n Indent,\n Row,\n Spacing,\n} from \"@stenajs-webui/core\";\nimport { Icon, Spinner } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./LoadingModal.module.css\";\n\nexport interface LoadingModalProps extends Omit<ReactModal.Props, \"isOpen\"> {\n headerText?: string;\n headerIconLeft?: IconDefinition;\n}\n\nexport const LoadingModal: React.FC<LoadingModalProps> = ({\n headerIconLeft,\n headerText,\n shouldCloseOnOverlayClick = false,\n shouldCloseOnEsc = false,\n ...modalProps\n}) => {\n return (\n <ReactModal\n {...modalProps}\n isOpen\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEsc={shouldCloseOnEsc}\n className={styles.modal}\n overlayClassName={styles.overlay}\n >\n <Column spacing={2} alignItems={\"center\"}>\n <Box\n alignItems={\"center\"}\n justifyContent={\"center\"}\n width={\"64px\"}\n height={\"64px\"}\n borderRadius={\"50%\"}\n background={\"white\"}\n shadow={\"modal\"}\n >\n <Spinner size={\"small\"} />\n </Box>\n {(headerIconLeft || headerText) && (\n <>\n <Spacing />\n <Row indent={2}>\n {headerIconLeft && (\n <>\n <Icon size={14} icon={headerIconLeft} color={\"white\"} />\n <Indent />\n </>\n )}\n {headerText && (\n <Heading variant={\"h4\"} color={\"white\"}>\n {headerText}\n </Heading>\n )}\n </Row>\n </>\n )}\n </Column>\n </ReactModal>\n );\n};\n","import { CloseButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n DRAGGABLE_CANCEL_CLASSNAME,\n DRAGGABLE_HANDLE_CLASSNAME,\n} from \"./BaseWindow\";\nimport { Box, Row, Txt } from \"@stenajs-webui/core\";\n\nexport interface WindowHeaderProps {\n onRequestClose?: () => void;\n header?: ReactNode;\n headerText?: string;\n closeButtonClassName?: string;\n}\n\nexport const WindowHeader: React.FC<WindowHeaderProps> = ({\n onRequestClose,\n header,\n headerText,\n closeButtonClassName,\n}) => {\n return (\n <Row\n spacing={2}\n indent={2}\n borderBottom={\"1px solid var(--lhds-color-ui-300)\"}\n className={DRAGGABLE_HANDLE_CLASSNAME}\n >\n <Row flex={1} indent alignItems={\"center\"}>\n {headerText && (\n <Txt className={DRAGGABLE_CANCEL_CLASSNAME} size={\"large\"}>\n {headerText}\n </Txt>\n )}\n {header}\n </Row>\n <Box alignSelf={\"flex-start\"}>\n <CloseButton\n className={closeButtonClassName}\n onClick={onRequestClose}\n />\n </Box>\n </Row>\n );\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { BaseWindow, BaseWindowProps } from \"./BaseWindow\";\nimport { WindowHeader, WindowHeaderProps } from \"./WindowHeader\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface WindowProps extends BaseWindowProps, WindowHeaderProps {\n spacing?: number;\n indent?: number;\n draggable?: boolean;\n footer?: React.ReactNode;\n disableStickyFooter?: boolean;\n}\n\nexport const Window: React.FC<WindowProps> = ({\n header,\n headerText,\n children,\n spacing,\n indent,\n draggable = false,\n onRequestClose,\n closeButtonClassName,\n footer,\n disableStickyFooter = false,\n ...props\n}) => {\n const activeSpacing = typeof spacing === \"number\" ? spacing : 1;\n const activeIndent = typeof indent === \"number\" ? indent : 1;\n\n return (\n <BaseWindow\n {...props}\n onRequestClose={onRequestClose}\n draggable={draggable}\n >\n <WindowHeader\n onRequestClose={onRequestClose}\n header={header}\n headerText={headerText}\n closeButtonClassName={closeButtonClassName}\n />\n <Box spacing={activeSpacing} indent={activeIndent}>\n {children}\n </Box>\n {footer && (\n <Box\n className={cx(styles.footer, {\n [styles.stickyFooter]: !disableStickyFooter,\n })}\n >\n {footer}\n </Box>\n )}\n </BaseWindow>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface WindowFooterProps {\n children?: ReactNode;\n}\n\nexport const WindowFooter: React.FC<WindowFooterProps> = ({ children }) => (\n <Column indent={2} spacing={2}>\n {children}\n </Column>\n);\n","import { createContext } from \"react\";\nimport { RejectCommand, ResolveCommand } from \"./DialogCommands\";\n\nexport interface DialogContextValue<TResolveValue> {\n resolve: ResolveCommand<TResolveValue>;\n reject: RejectCommand;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const DialogContext = createContext<DialogContextValue<any> | undefined>(\n undefined,\n);\n","import cx from \"classnames\";\nimport React, {\n CSSProperties,\n MouseEventHandler,\n ReactEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { RejectCommand, ResolveCommand, ShowCommand } from \"./DialogCommands\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\nimport { Modal } from \"../declarative-modals/modal/Modal\";\n\ntype UseDialogCallbacks<TProps, TPromiseResolve> = {\n show: ShowCommand<TProps, TPromiseResolve>;\n reject: RejectCommand;\n};\n\nexport type UseDialogResult<TProps, TPromiseResolve> = [\n ReactNode,\n UseDialogCallbacks<TProps, TPromiseResolve>,\n];\n\nexport interface DialogOptions {\n divInsteadOfDialog?: boolean;\n elementId?: string;\n background?: string;\n disableCloseOnClickOutside?: boolean;\n modal: boolean;\n className: string;\n closingClassName: string;\n contentWrapperClassName: string;\n contentWrapperStyle?: CSSProperties;\n dialogStyle?: CSSProperties;\n ref?: RefObject<HTMLDialogElement | null>;\n onResolve?: () => void;\n onReject?: () => void;\n /**\n * Sets aria-label on modal or dialog element.\n */\n label?: string;\n /**\n * Sets aria-labelledby on modal or dialog element.\n */\n labelledby?: string;\n /**\n * Sets aria-describedby on modal or dialog element.\n */\n describedby?: string;\n}\n\nexport function useDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n {\n ref,\n modal,\n contentWrapperClassName,\n closingClassName,\n contentWrapperStyle,\n dialogStyle,\n divInsteadOfDialog,\n disableCloseOnClickOutside,\n elementId,\n onResolve,\n onReject,\n className,\n background,\n label,\n labelledby,\n describedby,\n }: DialogOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n const localRef = useRef<HTMLDialogElement>(null);\n const currentRef = ref ?? localRef;\n const [key, forceRerender] = useReducer((x) => x + 1, 0);\n const promiseRef = useRef<Promise<TPromiseResolve | undefined>>(null);\n const resolveRef = useRef<ResolveCommand<TPromiseResolve> | undefined>(null);\n const modalComponentProps = useRef<TProps>(undefined);\n const closedByPromiseRef = useRef<boolean>(false);\n const rejectRef = useRef<RejectCommand | undefined>(null);\n /**\n * Used by Modal to control open/close with animation.\n */\n const [isOpen, setIsOpen] = useState(false);\n /**\n * Used by both Modal and dialog to decide if content is visible. When props is cleared, we can not render content that requires props.\n */\n const [contentVisible, setContentVisible] = useState(false);\n /**\n * Used by dialog to know if it is currently animating to closed state.\n */\n const [closing, setClosing] = useState(false);\n\n const Comp = component;\n\n const show = useCallback<ShowCommand<TProps, TPromiseResolve>>(\n (props?: TProps) => {\n promiseRef.current = new Promise<TPromiseResolve | undefined>(\n (resolve, reject) => {\n resolveRef.current = resolve;\n rejectRef.current = reject;\n },\n );\n setClosing(false);\n setIsOpen(true);\n setContentVisible(true);\n forceRerender();\n closedByPromiseRef.current = false;\n modalComponentProps.current = props;\n if (modal) {\n currentRef.current?.showModal();\n } else {\n currentRef.current?.show();\n }\n return promiseRef.current;\n },\n [currentRef, modal],\n );\n\n const resolve = useCallback<ResolveCommand<TPromiseResolve>>(\n (value) => {\n closedByPromiseRef.current = true;\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n (ev) => {\n ev.stopPropagation();\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n }, 300);\n }\n },\n [currentRef, onResolve, divInsteadOfDialog],\n );\n\n const reject = useCallback<RejectCommand>(\n (error) => {\n closedByPromiseRef.current = true;\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n (ev) => {\n ev.stopPropagation();\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n }, 300);\n }\n },\n [currentRef, divInsteadOfDialog, onReject],\n );\n\n const onClose = useCallback<ReactEventHandler<HTMLDialogElement>>(\n (ev) => {\n // Remove content immediately, since it cannot be animated when closed by browser.\n ev.stopPropagation();\n if (!closedByPromiseRef.current) {\n setClosing(false);\n setIsOpen(false);\n setContentVisible(false);\n rejectRef.current?.();\n onReject?.();\n modalComponentProps.current = undefined;\n }\n },\n [onReject],\n );\n\n const onClick = useCallback<MouseEventHandler<HTMLDialogElement>>(\n (e) => {\n if (e.target !== currentRef.current) {\n return;\n }\n\n const rect = currentRef.current.getBoundingClientRect();\n\n const clickedInsideDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!clickedInsideDialog) {\n reject();\n }\n },\n [currentRef, reject],\n );\n\n const contextValue = useMemo(\n () => ({ resolve, reject }) as DialogContextValue<unknown>,\n [reject, resolve],\n );\n\n const element = useMemo<ReactNode>(\n () =>\n divInsteadOfDialog ? (\n <Modal\n isOpen={isOpen}\n onRequestClose={reject}\n background={background}\n contentLabel={label}\n id={elementId}\n aria={{ modal: true, labelledby, describedby }}\n >\n <DialogContext.Provider value={contextValue}>\n {contentVisible && (\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n )}\n </DialogContext.Provider>\n </Modal>\n ) : (\n <dialog\n onClick={disableCloseOnClickOutside ? undefined : onClick}\n onClose={onClose}\n ref={currentRef}\n id={elementId}\n className={cx(\"swui-dialog\", className, closing && closingClassName)}\n aria-label={label}\n aria-labelledby={labelledby}\n aria-describedby={describedby}\n style={{ background: background, ...dialogStyle }}\n >\n <div style={contentWrapperStyle} className={contentWrapperClassName}>\n {contentVisible && (\n <DialogContext.Provider value={contextValue}>\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n </DialogContext.Provider>\n )}\n </div>\n </dialog>\n ),\n [\n divInsteadOfDialog,\n isOpen,\n reject,\n background,\n label,\n elementId,\n labelledby,\n describedby,\n contextValue,\n contentVisible,\n Comp,\n key,\n disableCloseOnClickOutside,\n onClick,\n onClose,\n currentRef,\n className,\n closing,\n closingClassName,\n dialogStyle,\n contentWrapperStyle,\n contentWrapperClassName,\n ],\n );\n\n return [element, { show, reject }];\n}\n","import { useContext } from \"react\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\n\nexport const useDialogPromise = <\n TResolveValue = void,\n>(): DialogContextValue<TResolveValue> => {\n const context = useContext(DialogContext);\n if (context == null) {\n throw new Error(\"useDialogPromise is being used outside of dialog.\");\n }\n return context as DialogContextValue<TResolveValue>;\n};\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./AlertDialog.module.css\";\n\nexport function useAlertDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.alertDialog),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./DrawerDialog.module.css\";\nimport { SlideFrom } from \"../../common-types\";\n\ninterface DrawerOptions\n extends Partial<Omit<DialogOptions, \"disableCloseOnClickOutside\">> {}\n\nexport function useDrawerDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n slideFrom: SlideFrom = \"left\",\n options?: DrawerOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n disableCloseOnClickOutside: true,\n modal: false,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.drawerDialog, styles[slideFrom]),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./ModalDialog.module.css\";\n\nexport function useModalDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.modalDialog),\n });\n}\n","import * as React from \"react\";\nimport { Heading, HeadingVariant } from \"@stenajs-webui/core\";\n\nexport type ModalHeadingSizeVariant = \"medium\" | \"large\";\n\nexport interface ModalHeadingProps {\n size?: ModalHeadingSizeVariant;\n children: string;\n headingLevel?: HeadingVariant;\n}\n\nexport const ModalHeading: React.FC<ModalHeadingProps> = ({\n headingLevel = \"h2\",\n size = \"medium\",\n children,\n}) => {\n return (\n <Heading variant={size === \"medium\" ? \"h3\" : \"h1\"} as={headingLevel}>\n {children}\n </Heading>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport styles from \"./ModalActionButtons.module.css\";\nimport { Box, Spacing } from \"@stenajs-webui/core\";\n\nexport interface ModalActionButtonsProps extends PropsWithChildren {}\n\nexport const ModalActionButtons: React.FC<ModalActionButtonsProps> = ({\n children,\n}) => {\n return (\n <Box width={\"100%\"}>\n <Spacing />\n <div className={styles.modalActionButtons}>{children}</div>\n </Box>\n );\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport styles from \"./ModalBody.module.css\";\nimport cx from \"classnames\";\n\nexport type ModalBodyVariant = \"normal\" | \"relaxed\";\n\nexport interface ModalBodyProps extends Omit<BoxProps, \"indent\" | \"spacing\"> {\n variant?: ModalBodyVariant;\n}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({\n gap = 3,\n variant = \"normal\",\n className,\n ...props\n}) => {\n return (\n <Column\n className={cx(styles.modalBody, styles[variant], className)}\n indent={variant === \"relaxed\" ? 5 : 3}\n spacing={variant === \"relaxed\" ? 5 : 3}\n gap={gap}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport interface ModalContainerProps\n extends PropsWithChildren,\n Pick<BoxProps, \"maxWidth\"> {}\n\nexport const ModalContainer: React.FC<ModalContainerProps> = ({\n children,\n maxWidth,\n}) => {\n return (\n <Column\n flex={1}\n height={\"100%\"}\n justifyContent={\"space-between\"}\n maxWidth={maxWidth}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaTimesThick,\n} from \"@stenajs-webui/elements\";\n\nexport interface ModalCloseButtonProps extends FlatButtonProps {}\n\nexport const ModalCloseButton: React.FC<ModalCloseButtonProps> = (props) => {\n return (\n <FlatButton\n size={\"large\"}\n variant={\"danger\"}\n leftIcon={stenaTimesThick}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { Column, HeadingVariant, Row } from \"@stenajs-webui/core\";\nimport { ModalHeading, ModalHeadingSizeVariant } from \"./ModalHeading\";\nimport { ModalCloseButton } from \"./ModalCloseButton\";\n\nexport type ModalHeaderProps =\n | ModalHeaderWithCloseButtonProps\n | ModalHeaderWithNoCloseButtonProps;\n\nexport interface ModalHeaderCommonProps {\n heading?: string;\n headingSize?: ModalHeadingSizeVariant;\n headingLevel?: HeadingVariant;\n}\n\nexport interface ModalHeaderWithCloseButtonProps\n extends ModalHeaderCommonProps {\n onClickClose?: never;\n closeButtonAriaLabel?: never;\n}\n\nexport interface ModalHeaderWithNoCloseButtonProps\n extends ModalHeaderCommonProps {\n onClickClose: () => void;\n closeButtonAriaLabel: string;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({\n heading,\n headingLevel,\n headingSize,\n onClickClose,\n closeButtonAriaLabel,\n}) => {\n return (\n <Column>\n <Row justifyContent={\"space-between\"} alignItems={\"center\"} gap={2}>\n {heading ? (\n <ModalHeading headingLevel={headingLevel} size={headingSize}>\n {heading}\n </ModalHeading>\n ) : (\n <div />\n )}\n {onClickClose ? (\n <ModalCloseButton\n onClick={onClickClose}\n size={headingSize}\n aria-label={closeButtonAriaLabel}\n />\n ) : null}\n </Row>\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Column, Spacing, Text } from \"@stenajs-webui/core\";\nimport { ModalHeading } from \"../building-blocks/ModalHeading\";\nimport { ModalActionButtons } from \"../building-blocks/ModalActionButtons\";\nimport { CircledIcon, MediumIcon } from \"@stenajs-webui/elements\";\nimport { ModalBody } from \"../building-blocks/ModalBody\";\nimport { ModalContainer } from \"../building-blocks/ModalContainer\";\nimport { ModalHeader } from \"../building-blocks/ModalHeader\";\n\nexport type InfoAlertProps =\n | InfoAlertPropsWithNoCloseButton\n | InfoAlertPropsWithCloseButton;\n\nexport interface InfoAlertCommonProps extends PropsWithChildren {\n heading: string;\n text?: string;\n buttons?: ReactNode;\n icon?: MediumIcon;\n maxWidth?: string;\n minWidth?: string;\n}\n\nexport interface InfoAlertPropsWithNoCloseButton extends InfoAlertCommonProps {\n onClickClose?: never;\n closeButtonAriaLabel?: never;\n}\n\nexport interface InfoAlertPropsWithCloseButton extends InfoAlertCommonProps {\n onClickClose: () => void;\n closeButtonAriaLabel: string;\n}\n\nexport const InfoAlert: React.FC<InfoAlertProps> = ({\n icon,\n buttons,\n heading,\n text,\n children,\n maxWidth,\n minWidth,\n ...props\n}) => {\n return (\n <ModalContainer>\n <ModalBody gap={0}>\n {props.onClickClose && (\n <ModalHeader\n onClickClose={props.onClickClose}\n closeButtonAriaLabel={props.closeButtonAriaLabel}\n />\n )}\n <Column\n gap={2}\n flexDirection={\"column\"}\n alignItems={\"center\"}\n maxWidth={maxWidth}\n minWidth={minWidth}\n >\n {icon && (\n <>\n {!props.onClickClose && <Spacing />}\n <CircledIcon icon={icon} size={\"large\"} />\n <Spacing />\n </>\n )}\n <ModalHeading>{heading}</ModalHeading>\n {text && <Text textAlign={\"center\"}>{text}</Text>}\n {children}\n {buttons && <ModalActionButtons>{buttons}</ModalActionButtons>}\n </Column>\n </ModalBody>\n </ModalContainer>\n );\n};\n","import { BoxProps, Row } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./ModalFooter.module.css\";\n\nexport interface ModalFooterProps extends BoxProps {\n sticky?: boolean;\n gap?: number;\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({\n sticky,\n zIndex = 4,\n gap = 2,\n className,\n ...boxProps\n}) => {\n return (\n <Row\n className={cx(styles.modalFooter, sticky && styles.sticky, className)}\n shadow={\"var(--swui-sticky-footer-shadow)\"}\n zIndex={zIndex}\n gap={gap}\n {...boxProps}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./UnreadDot.module.css\";\n\nexport interface UnreadDotProps {\n children: ReactNode;\n}\n\nexport const UnreadDot: React.FC<UnreadDotProps> = ({ children }) => {\n return (\n <div className={styles.unreadDot}>\n {children}\n <div className={styles.dot} />\n </div>\n );\n};\n","import { Box, Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { CircledIcon, CloseButton, MediumIcon } from \"@stenajs-webui/elements\";\nimport { cssColor, CssPropColor } from \"@stenajs-webui/theme\";\nimport { UnreadDot } from \"./UnreadDot\";\nimport { NotificationVariant } from \"./Notification\";\nimport styles from \"./NotificationHeader.module.css\";\n\nexport interface NotificationHeaderProps {\n /** Text. */\n text: string;\n /** Timestamp. */\n timestamp?: string;\n /** Icon. */\n icon?: MediumIcon;\n /** Icon description for accessibility. */\n iconAriaLabel?: string;\n /** Left content instead of icon. */\n contentLeft?: React.ReactNode;\n /** Right content. */\n contentRight?: React.ReactNode;\n /** What happens on clicking close. */\n onClickClose?: () => void;\n /** Mark the notification as unread */\n unread?: boolean;\n /** Notification variant. Will affect icon bg color */\n variant?: NotificationVariant;\n /** Icon background color. Will override other icon bg color */\n iconBackgroundColor?: CssPropColor;\n /** Force alignment of text for close button. This is used with toastify, which adds close button outside of the header. */\n forceCloseButtonAlignment?: boolean;\n}\n\nexport const NotificationHeader: React.FC<NotificationHeaderProps> = ({\n text,\n timestamp,\n icon,\n iconAriaLabel,\n contentLeft,\n contentRight,\n onClickClose,\n unread = false,\n variant,\n iconBackgroundColor,\n forceCloseButtonAlignment,\n}) => {\n const circledIcon = icon ? (\n <CircledIcon\n size={\"small\"}\n icon={icon}\n aria-label={iconAriaLabel}\n variant={\"whiteBg\"}\n backgroundColor={\n iconBackgroundColor\n ? iconBackgroundColor\n : getIconBgColorFromVariant(unread, variant)\n }\n />\n ) : undefined;\n\n return (\n <Row\n alignItems={\"flex-start\"}\n justifyContent={\"space-between\"}\n data-comp={\"NotificationHeader\"}\n className={styles.notificationHeader}\n gap={2}\n >\n <Row gap={2} alignItems={\"flex-start\"}>\n {contentLeft && (\n <Column justifyContent={\"center\"}>{contentLeft}</Column>\n )}\n {!contentLeft && circledIcon && (\n <Row alignItems={\"center\"} height={\"40px\"}>\n {unread ? <UnreadDot>{circledIcon}</UnreadDot> : circledIcon}\n </Row>\n )}\n <Box minHeight={20} justifyContent={\"center\"} flex={1} gap={0.5}>\n {icon || onClickClose || forceCloseButtonAlignment ? (\n <Space num={0.5} />\n ) : null}\n <Text variant={\"bold\"}>{text}</Text>\n {timestamp && (\n <div className={styles.timestamp}>\n <Text\n size={\"small\"}\n color={cssColor(\n unread ? \"--lhds-color-blue-600\" : \"--lhds-color-ui-600\",\n )}\n >\n {timestamp}\n </Text>\n </div>\n )}\n </Box>\n </Row>\n {contentRight && (\n <Column justifyContent={\"center\"}>{contentRight}</Column>\n )}\n {onClickClose && (\n <Row alignItems={\"center\"} height={\"40px\"} width={\"40px\"}>\n <CloseButton onClick={onClickClose} />\n </Row>\n )}\n </Row>\n );\n};\n\nexport const getIconBgColorFromVariant = (\n unread: boolean,\n variant?: NotificationVariant,\n): CssPropColor | undefined => {\n if (!unread && variant === \"standard\") {\n return undefined;\n }\n return \"--lhds-color-ui-50\";\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n NotificationHeader,\n NotificationHeaderProps,\n} from \"./NotificationHeader\";\nimport styles from \"./Notification.module.css\";\nimport cx from \"classnames\";\n\nexport type NotificationVariant = \"standard\" | \"danger\";\n\nexport interface NotificationProps extends NotificationHeaderProps {\n children?: ReactNode;\n}\n\nexport const Notification: React.FC<NotificationProps> = ({\n variant = \"standard\",\n children,\n unread,\n ...headerProps\n}) => (\n <div\n data-comp={\"Notification\"}\n className={cx(\n styles.notification,\n styles[variant],\n unread && styles.unread,\n )}\n >\n <NotificationHeader {...headerProps} unread={unread} variant={variant} />\n {children && <Column className={styles.body}>{children}</Column>}\n </div>\n);\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./NotificationList.module.css\";\n\nexport interface NotificationListProps {\n children?: ReactNode;\n}\n\nexport const NotificationList: React.FC<NotificationListProps> = ({\n children,\n}) => {\n return (\n <div data-comp={\"NotificationList\"} className={styles.notificationList}>\n {children}\n <div />\n </div>\n );\n};\n","import { Box, BoxProps } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport styles from \"./Toast.module.css\";\nimport {\n NotificationHeader,\n NotificationHeaderProps,\n} from \"../notification/NotificationHeader\";\n\nexport interface ToastProps\n extends Pick<BoxProps, \"children\" | \"width\" | \"maxWidth\">,\n Omit<NotificationHeaderProps, \"contentRight\"> {}\n\nexport const Toast: React.FC<ToastProps> = ({\n children,\n width = 364,\n maxWidth,\n ...headerProps\n}) => (\n <Box\n className={styles.toast}\n data-comp={\"Toast\"}\n width={width}\n maxWidth={maxWidth}\n >\n <NotificationHeader forceCloseButtonAlignment {...headerProps} />\n {children && <div className={styles.body}>{children}</div>}\n </Box>\n);\n","import * as React from \"react\";\nimport { Box, BoxProps } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport styles from \"./ToastBox.module.css\";\n\nexport interface ToastBoxProps extends BoxProps {}\n\nexport const ToastBox: React.FC<ToastBoxProps> = ({ className, ...props }) => {\n return (\n <Box\n as={props.onClick ? \"button\" : undefined}\n className={cx(\n className,\n styles.toastBox,\n props.onClick && styles.clickable,\n )}\n data-comp={\"Toast\"}\n role={\"alert\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport {\n ToastContainer as ToastifyToastContainer,\n ToastContainerProps as ToastifyToastContainerProps,\n} from \"react-toastify\";\nimport styles from \"./ToastContainer.module.css\";\nimport { CloseButton } from \"@stenajs-webui/elements\";\n\nexport type ToastContainerProps = ToastifyToastContainerProps;\n\nexport const ToastContainer: React.FC<ToastContainerProps> = ({ ...props }) => {\n return (\n <ToastifyToastContainer\n className={styles.toastContainer}\n closeButton={({ closeToast }) => <CloseButton onClick={closeToast} />}\n hideProgressBar={true}\n pauseOnFocusLoss={false}\n pauseOnHover={true}\n draggable={false}\n {...props}\n />\n );\n};\n","import { toast, ToastContent, ToastOptions } from \"react-toastify\";\n\nexport const showToast = <T>(\n content: ToastContent<T>,\n options?: ToastOptions<T> | undefined,\n) => toast<T>(content, options);\n"],"names":["setupDeclarativeModals","htmlElement","ReactModal","DRAGGABLE_HANDLE_CLASSNAME","DRAGGABLE_CANCEL_CLASSNAME","BaseWindow","width","maxWidth","draggable","children","reactModalProps","nodeRef","useRef","jsx","styles","Draggable","cx","Drawer","background","zIndex","slideFrom","portalTarget","floating","height","getClassNameForSlide","exhaustSwitchCase","DrawerHeader","header","contentRight","onRequestClose","icon","Spacing","cssColor","jsxs","Row","Space","Icon","Heading","FlatButton","stenaTimes","style","Alert","isSafari","Modal","className","overlayClassName","ref","scrollbarGutter","setScrollbarGutter","useState","updateScrollbarGutter","useEventCallback","container","useEffect","LoadingModal","headerIconLeft","headerText","shouldCloseOnOverlayClick","shouldCloseOnEsc","modalProps","Column","Box","Spinner","Fragment","Indent","WindowHeader","closeButtonClassName","Txt","CloseButton","Window","spacing","indent","footer","disableStickyFooter","props","activeSpacing","activeIndent","WindowFooter","DialogContext","createContext","useDialog","component","modal","contentWrapperClassName","closingClassName","contentWrapperStyle","dialogStyle","divInsteadOfDialog","disableCloseOnClickOutside","elementId","onResolve","onReject","label","labelledby","describedby","localRef","currentRef","key","forceRerender","useReducer","x","promiseRef","resolveRef","modalComponentProps","closedByPromiseRef","rejectRef","isOpen","setIsOpen","contentVisible","setContentVisible","closing","setClosing","Comp","show","useCallback","resolve","reject","value","ev","error","onClose","onClick","e","rect","contextValue","useMemo","createElement","useDialogPromise","context","useContext","useAlertDialog","options","useDrawerDialog","useModalDialog","ModalHeading","headingLevel","size","ModalActionButtons","ModalBody","gap","variant","ModalContainer","ModalCloseButton","stenaTimesThick","ModalHeader","heading","headingSize","onClickClose","closeButtonAriaLabel","InfoAlert","buttons","text","minWidth","CircledIcon","Text","ModalFooter","sticky","boxProps","UnreadDot","NotificationHeader","timestamp","iconAriaLabel","contentLeft","unread","iconBackgroundColor","forceCloseButtonAlignment","circledIcon","getIconBgColorFromVariant","Notification","headerProps","NotificationList","Toast","ToastBox","ToastContainer","ToastifyToastContainer","closeToast","showToast","content","toast"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stenajs-webui/modal",
|
|
3
|
-
"version": "23.
|
|
3
|
+
"version": "23.20.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "",
|
|
6
6
|
"author": "mattias800",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"deploy": "gh-pages -d example/build"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@stenajs-webui/core": "23.
|
|
41
|
-
"@stenajs-webui/elements": "23.
|
|
42
|
-
"@stenajs-webui/theme": "23.
|
|
40
|
+
"@stenajs-webui/core": "23.20.0",
|
|
41
|
+
"@stenajs-webui/elements": "23.20.0",
|
|
42
|
+
"@stenajs-webui/theme": "23.20.0",
|
|
43
43
|
"@types/react-modal": "^3.16.3",
|
|
44
44
|
"classnames": "^2.5.1",
|
|
45
45
|
"react-draggable": "4.4.6",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"files": [
|
|
68
68
|
"dist"
|
|
69
69
|
],
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "0755e997133b1a03a1cb39f7fa566509c84a635f",
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
|
73
73
|
}
|