ndcloud-storybook 1.3.0 → 1.3.5

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.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var react = require('@emotion/react');
4
- var styled17 = require('@emotion/styled');
5
- var jsxRuntime = require('@emotion/react/jsx-runtime');
4
+ var styled18 = require('@emotion/styled');
6
5
  var react$1 = require('react');
6
+ var jsxRuntime = require('@emotion/react/jsx-runtime');
7
7
 
8
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
 
10
- var styled17__default = /*#__PURE__*/_interopDefault(styled17);
10
+ var styled18__default = /*#__PURE__*/_interopDefault(styled18);
11
11
 
12
12
  // src/atoms/Button/Button.tsx
13
13
  var Spinner = ({
@@ -42,7 +42,7 @@ var spin = react.keyframes`
42
42
  from { transform: rotate(0deg); }
43
43
  to { transform: rotate(360deg); }
44
44
  `;
45
- var Wrapper = styled17__default.default.div`
45
+ var Wrapper = styled18__default.default.div`
46
46
  display: inline-flex;
47
47
  align-items: center;
48
48
  justify-content: center;
@@ -153,6 +153,7 @@ var Variant = /* @__PURE__ */ ((Variant2) => {
153
153
  Variant2["Primary"] = "primary";
154
154
  Variant2["Secondary"] = "secondary";
155
155
  Variant2["Outline"] = "outline";
156
+ Variant2["Dark"] = "dark";
156
157
  return Variant2;
157
158
  })(Variant || {});
158
159
  var VARIANTS = {
@@ -168,33 +169,44 @@ var VARIANTS = {
168
169
  background: colors.backgrounds.transparent,
169
170
  border: `1px solid ${getOpacity(colors.baseColors.grey2, 10)}`,
170
171
  color: getOpacity(colors.baseColors.darkBlue3, 85)
172
+ },
173
+ dark: {
174
+ background: colors.baseColors.grey6,
175
+ color: colors.baseColors.white1
171
176
  }
172
177
  };
173
- var Button = ({
174
- label,
175
- icon,
176
- loading,
177
- disabled,
178
- className,
179
- variant = "primary",
180
- selected,
181
- ...rest
182
- }) => /* @__PURE__ */ jsxRuntime.jsx(
183
- StyledButton,
184
- {
185
- variant,
186
- disabled: disabled || loading,
187
- selected,
178
+ var Button = react$1.forwardRef(
179
+ ({
180
+ label,
181
+ icon,
182
+ loading,
183
+ disabled,
188
184
  className,
189
- ...rest,
190
- children: loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner_default, {}) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
191
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { children: icon }),
192
- label
193
- ] })
194
- }
185
+ variant = "primary",
186
+ selected,
187
+ type = "button",
188
+ ...rest
189
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
190
+ StyledButton,
191
+ {
192
+ ref,
193
+ variant,
194
+ disabled: disabled || loading,
195
+ selected,
196
+ className,
197
+ type,
198
+ "aria-busy": loading,
199
+ "aria-label": loading ? `${label} (loading)` : void 0,
200
+ ...rest,
201
+ children: loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner_default, {}) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
202
+ icon && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: icon }),
203
+ label
204
+ ] })
205
+ }
206
+ )
195
207
  );
196
208
  var Button_default = Button;
197
- var StyledButton = styled17__default.default.button`
209
+ var StyledButton = styled18__default.default.button`
198
210
  display: flex;
199
211
  align-items: center;
200
212
  justify-content: center;
@@ -214,6 +226,29 @@ var StyledButton = styled17__default.default.button`
214
226
  }
215
227
 
216
228
  ${({ variant = "primary", disabled, selected }) => {
229
+ if (variant === "dark") {
230
+ return react.css`
231
+ background: ${colors.baseColors.grey6};
232
+ border: ${selected ? `2px solid ${colors.baseColors.white1}` : "1px solid transparent"};
233
+ color: ${disabled ? colors.baseColors.grey4 : colors.baseColors.white1};
234
+ opacity: ${disabled ? 0.6 : 1};
235
+ cursor: ${disabled ? "not-allowed" : "pointer"};
236
+ pointer-events: ${disabled ? "none" : "auto"};
237
+
238
+ &:hover:not(:disabled) {
239
+ background: ${colors.baseColors.grey5};
240
+ }
241
+
242
+ &:active:not(:disabled) {
243
+ border: 1px solid ${colors.baseColors.primaryPurple};
244
+ }
245
+
246
+ &:focus-visible {
247
+ outline: 2px solid ${colors.baseColors.primaryBlue};
248
+ outline-offset: 2px;
249
+ }
250
+ `;
251
+ }
217
252
  const { background, color, border } = VARIANTS[variant];
218
253
  return react.css`
219
254
  background: ${background};
@@ -289,7 +324,7 @@ var Input = ({ className, error, warning, ...rest }) => {
289
324
  return /* @__PURE__ */ jsxRuntime.jsx(StyledInput, { className, error, warning, ...rest });
290
325
  };
291
326
  var Input_default = Input;
292
- var StyledInput = styled17__default.default.input`
327
+ var StyledInput = styled18__default.default.input`
293
328
  ${baseInputStyles}
294
329
 
295
330
  ${({ error }) => error && errorStyles}
@@ -309,9 +344,16 @@ var useDarkMode = () => {
309
344
  }, []);
310
345
  return isDark;
311
346
  };
312
-
313
- // src/assets/icons/Checkmark.svg?react
314
- var Checkmark_default = "./Checkmark-OGDFVW3O.svg?react";
347
+ var CheckmarkIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
348
+ "path",
349
+ {
350
+ d: "M2 6L5 9L10 2",
351
+ stroke: "currentColor",
352
+ strokeWidth: "2",
353
+ strokeLinecap: "round",
354
+ strokeLinejoin: "round"
355
+ }
356
+ ) });
315
357
  var Checkbox = ({
316
358
  className,
317
359
  danger,
@@ -342,13 +384,13 @@ var Checkbox = ({
342
384
  darkMode,
343
385
  disabled,
344
386
  size,
345
- children: /* @__PURE__ */ jsxRuntime.jsx(Checkmark_default, {})
387
+ children: /* @__PURE__ */ jsxRuntime.jsx(CheckmarkIcon, {})
346
388
  }
347
389
  )
348
390
  ] });
349
391
  };
350
392
  var Checkbox_default = Checkbox;
351
- var CheckboxWrapper = styled17__default.default.label`
393
+ var CheckboxWrapper = styled18__default.default.label`
352
394
  position: relative;
353
395
  display: inline-block;
354
396
  cursor: pointer;
@@ -369,7 +411,7 @@ var CheckboxWrapper = styled17__default.default.label`
369
411
  `}
370
412
  }
371
413
  `;
372
- var StyledCheckbox = styled17__default.default.input`
414
+ var StyledCheckbox = styled18__default.default.input`
373
415
  position: absolute;
374
416
  opacity: 0;
375
417
  cursor: pointer;
@@ -387,7 +429,7 @@ var StyledCheckbox = styled17__default.default.input`
387
429
  cursor: not-allowed;
388
430
  }
389
431
  `;
390
- var CheckmarkWrapper = styled17__default.default.span`
432
+ var CheckmarkWrapper = styled18__default.default.span`
391
433
  display: inline-flex;
392
434
  align-items: center;
393
435
  justify-content: center;
@@ -397,6 +439,7 @@ var CheckmarkWrapper = styled17__default.default.span`
397
439
  border-radius: 4px;
398
440
  transition: all 0.2s ease;
399
441
  color: transparent;
442
+ cursor: pointer;
400
443
 
401
444
  svg {
402
445
  width: 60%;
@@ -408,9 +451,11 @@ var CheckmarkWrapper = styled17__default.default.span`
408
451
  return darkMode ? react.css`
409
452
  background-color: ${colors.baseColors.grey1};
410
453
  border: 1px solid ${colors.baseColors.grey4};
454
+ cursor: not-allowed;
411
455
  ` : react.css`
412
456
  background-color: ${colors.baseColors.grey7};
413
457
  border: 1px solid ${colors.baseColors.grey7};
458
+ cursor: not-allowed;
414
459
  `;
415
460
  }
416
461
  if (checked) {
@@ -436,6 +481,72 @@ var CheckmarkWrapper = styled17__default.default.span`
436
481
  `;
437
482
  }}
438
483
  `;
484
+ var XIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
485
+ "path",
486
+ {
487
+ d: "M4 4L12 12M12 4L4 12",
488
+ stroke: "currentColor",
489
+ strokeWidth: "2",
490
+ strokeLinecap: "round",
491
+ strokeLinejoin: "round"
492
+ }
493
+ ) });
494
+ var ErrorNotification = ({
495
+ message,
496
+ className,
497
+ darkMode: darkModeProp
498
+ }) => {
499
+ const autoDarkMode = useDarkMode();
500
+ const darkMode = darkModeProp !== void 0 ? darkModeProp : autoDarkMode;
501
+ const isLongMessage = message.length > 120;
502
+ return /* @__PURE__ */ jsxRuntime.jsxs(ErrorNotificationWrapper, { className, darkMode, isLong: isLongMessage, children: [
503
+ /* @__PURE__ */ jsxRuntime.jsx(IconContainer, { darkMode, isLong: isLongMessage, children: /* @__PURE__ */ jsxRuntime.jsx(XIcon, {}) }),
504
+ /* @__PURE__ */ jsxRuntime.jsx(MessageText, { darkMode, isLong: isLongMessage, children: message })
505
+ ] });
506
+ };
507
+ var ErrorNotification_default = ErrorNotification;
508
+ var ErrorNotificationWrapper = styled18__default.default.div`
509
+ display: flex;
510
+ align-items: ${({ isLong }) => isLong ? "flex-start" : "center"};
511
+ gap: 12px;
512
+ min-height: 74px;
513
+ max-width: 356px;
514
+ padding: ${({ isLong }) => isLong ? "20px" : "0"} 16px;
515
+ border-radius: 6px;
516
+ background-color: ${getOpacity(colors.accents.error, 30)};
517
+ border: 1px solid ${colors.accents.error};
518
+ color: ${({ darkMode }) => darkMode ? colors.baseColors.white1 : colors.baseColors.darkBlue1};
519
+ font-family: ${typography.fontFamily.primary};
520
+ font-size: ${FONT_SIZES.m}px;
521
+ font-weight: ${FONT_WEIGHTS.normal};
522
+ line-height: ${typography.lineHeight.normal};
523
+ `;
524
+ var IconContainer = styled18__default.default.div`
525
+ display: flex;
526
+ align-items: center;
527
+ justify-content: center;
528
+ flex-shrink: 0;
529
+ width: 32px;
530
+ height: 32px;
531
+ margin: 0;
532
+ border-radius: 50%;
533
+ background-color: ${getOpacity(colors.baseColors.white1, 30)};
534
+ color: ${colors.accents.error};
535
+
536
+ svg {
537
+ width: 16px;
538
+ height: 16px;
539
+ }
540
+ `;
541
+ var MessageText = styled18__default.default.p`
542
+ flex: 1;
543
+ margin: 0;
544
+ padding: 0;
545
+ color: ${({ darkMode }) => darkMode ? colors.baseColors.white1 : colors.baseColors.darkBlue1};
546
+ font-weight: ${FONT_WEIGHTS.bold};
547
+ word-wrap: break-word;
548
+ word-break: break-word;
549
+ `;
439
550
  var Label = ({ className, htmlFor, children, ...rest }) => {
440
551
  return /* @__PURE__ */ jsxRuntime.jsx("label", { className, htmlFor, ...rest, children });
441
552
  };
@@ -444,7 +555,7 @@ var Textarea = ({ className, error, warning, ...rest }) => {
444
555
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTextarea, { className, error, warning, ...rest });
445
556
  };
446
557
  var Textarea_default = Textarea;
447
- var StyledTextarea = styled17__default.default.textarea`
558
+ var StyledTextarea = styled18__default.default.textarea`
448
559
  ${baseInputStyles}
449
560
  resize: vertical;
450
561
  min-height: 80px;
@@ -472,7 +583,7 @@ var Tab = ({
472
583
  );
473
584
  };
474
585
  var Tab_default = Tab;
475
- var StyledTab = styled17__default.default.div`
586
+ var StyledTab = styled18__default.default.div`
476
587
  display: inline-block;
477
588
  padding: 8px 16px;
478
589
  user-select: none;
@@ -493,7 +604,7 @@ var StyledTab = styled17__default.default.div`
493
604
  }
494
605
  `}
495
606
  `;
496
- var HelperText = styled17__default.default.div`
607
+ var HelperText = styled18__default.default.div`
497
608
  margin-top: 4px;
498
609
  font-size: ${typography.fontSize.xs}px;
499
610
  color: ${({ error, warning }) => {
@@ -533,7 +644,7 @@ function GroupBadge({ role, status, children }) {
533
644
  const displayText = status?.toLowerCase() === USER_STATUS.INVITED ? "Invited" : children;
534
645
  return /* @__PURE__ */ jsxRuntime.jsx(Badge, { badgeColor, children: displayText });
535
646
  }
536
- var Badge = styled17__default.default.div`
647
+ var Badge = styled18__default.default.div`
537
648
  display: inline-flex;
538
649
  padding: 8px 28px;
539
650
  border-radius: 100px;
@@ -568,7 +679,7 @@ function UserAvatar({
568
679
  return /* @__PURE__ */ jsxRuntime.jsx(ColourAvatar, { badgeColor, size, children: initials });
569
680
  }
570
681
  var UserAvatar_default = UserAvatar;
571
- var ColourAvatar = styled17__default.default.div`
682
+ var ColourAvatar = styled18__default.default.div`
572
683
  width: ${({ size }) => typeof size === "number" ? `${size}px` : size === "large" ? "56px" : "40px"};
573
684
  height: ${({ size }) => typeof size === "number" ? `${size}px` : size === "large" ? "56px" : "40px"};
574
685
  border-radius: 50%;
@@ -582,7 +693,7 @@ var ColourAvatar = styled17__default.default.div`
582
693
  font-weight: ${FONT_WEIGHTS.normal};
583
694
  flex-shrink: 0;
584
695
  `;
585
- var ProfileAvatar = styled17__default.default(ColourAvatar)`
696
+ var ProfileAvatar = styled18__default.default(ColourAvatar)`
586
697
  color: #fff;
587
698
  background: ${colors.gradients.gradient1};
588
699
  border: none;
@@ -627,7 +738,7 @@ var FormField = ({
627
738
  displayText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error: hasError, warning: hasWarning, children: displayText })
628
739
  ] });
629
740
  };
630
- var FormFieldWrapper = styled17__default.default.div`
741
+ var FormFieldWrapper = styled18__default.default.div`
631
742
  display: flex;
632
743
  flex-direction: column;
633
744
 
@@ -675,7 +786,7 @@ var FormFieldTextarea = ({
675
786
  displayText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error: hasError, warning: hasWarning, children: displayText })
676
787
  ] });
677
788
  };
678
- var FormFieldWrapper2 = styled17__default.default.div`
789
+ var FormFieldWrapper2 = styled18__default.default.div`
679
790
  display: flex;
680
791
  flex-direction: column;
681
792
 
@@ -686,16 +797,16 @@ var FormFieldWrapper2 = styled17__default.default.div`
686
797
  }
687
798
  `;
688
799
  var FormFieldTextarea_default = FormFieldTextarea;
689
- var SearchContainer = styled17__default.default.div`
800
+ var SearchContainer = styled18__default.default.div`
690
801
  width: ${({ width }) => typeof width === "number" ? `${width}px` : width || "208px"};
691
802
  `;
692
- var InputWrapper = styled17__default.default.div`
803
+ var InputWrapper = styled18__default.default.div`
693
804
  position: relative;
694
805
  width: 100%;
695
806
  display: flex;
696
807
  align-items: center;
697
808
  `;
698
- var IconWrapper = styled17__default.default.div`
809
+ var IconWrapper = styled18__default.default.div`
699
810
  position: absolute;
700
811
  left: 17px;
701
812
  top: 50%;
@@ -707,7 +818,7 @@ var IconWrapper = styled17__default.default.div`
707
818
  pointer-events: none;
708
819
  z-index: 2;
709
820
  `;
710
- var StyledInput2 = styled17__default.default(Input_default)`
821
+ var StyledInput2 = styled18__default.default(Input_default)`
711
822
  width: 100%;
712
823
  padding-right: ${({ hasClearButton }) => hasClearButton ? "32px" : "17px"};
713
824
  padding-left: ${({ hasIcon }) => hasIcon ? "44px" : "17px"};
@@ -719,7 +830,7 @@ var StyledInput2 = styled17__default.default(Input_default)`
719
830
  padding-left: ${({ hasIcon }) => hasIcon ? "43px" : "16px"};
720
831
  }
721
832
  `;
722
- var ClearButton = styled17__default.default.button`
833
+ var ClearButton = styled18__default.default.button`
723
834
  position: absolute;
724
835
  right: 8px;
725
836
  top: 50%;
@@ -745,7 +856,7 @@ var ClearButton = styled17__default.default.button`
745
856
  border-radius: 4px;
746
857
  }
747
858
  `;
748
- var ClearIcon = styled17__default.default.svg`
859
+ var ClearIcon = styled18__default.default.svg`
749
860
  width: 16px;
750
861
  height: 16px;
751
862
  stroke-width: 2;
@@ -795,7 +906,7 @@ function TableElement({ children, ...rest }) {
795
906
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTable, { ...rest, children });
796
907
  }
797
908
  var Table_default = TableElement;
798
- var StyledTable = styled17__default.default.table`
909
+ var StyledTable = styled18__default.default.table`
799
910
  width: 100%;
800
911
  border-collapse: separate;
801
912
  border-spacing: 0 4px;
@@ -804,7 +915,7 @@ function TableHeader({ alignRight, children, ...rest }) {
804
915
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableHeader, { alignRight, ...rest, children });
805
916
  }
806
917
  var TableHeader_default = TableHeader;
807
- var StyledTableHeader = styled17__default.default.th`
918
+ var StyledTableHeader = styled18__default.default.th`
808
919
  padding-bottom: 12px;
809
920
  text-align: ${({ alignRight }) => alignRight ? "right" : "left"};
810
921
  font-size: ${FONT_SIZES.xs}px;
@@ -816,17 +927,17 @@ function TableCell({ children, colSpan, ...rest }) {
816
927
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableCell, { colSpan, ...rest, children });
817
928
  }
818
929
  var TableCell_default = TableCell;
819
- var StyledTableCell = styled17__default.default.td`
930
+ var StyledTableCell = styled18__default.default.td`
820
931
 
821
932
  `;
822
933
  function TableRow({ children, ...rest }) {
823
934
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableRow, { ...rest, children });
824
935
  }
825
936
  var TableRow_default = TableRow;
826
- var StyledTableRow = styled17__default.default.tr`
937
+ var StyledTableRow = styled18__default.default.tr`
827
938
  /* Base row styling */
828
939
  `;
829
- var TableRowWrapper = styled17__default.default.div`
940
+ var TableRowWrapper = styled18__default.default.div`
830
941
  border-radius: 6px;
831
942
  border: 1px solid ${colors.baseColors.grey7};
832
943
  display: flex;
@@ -834,16 +945,16 @@ var TableRowWrapper = styled17__default.default.div`
834
945
  justify-content: space-between;
835
946
  padding: 12px 24px;
836
947
  `;
837
- var CheckboxWrapper2 = styled17__default.default.div`
948
+ var CheckboxWrapper2 = styled18__default.default.div`
838
949
  display: flex;
839
950
  align-items: center;
840
951
  `;
841
- var ActionsWrapper = styled17__default.default.div`
952
+ var ActionsWrapper = styled18__default.default.div`
842
953
  display: flex;
843
954
  align-items: center;
844
955
  justify-content: flex-end;
845
956
  `;
846
- var AlignedTableCell = styled17__default.default(TableCell_default)`
957
+ var AlignedTableCell = styled18__default.default(TableCell_default)`
847
958
  padding-top: 12px;
848
959
  padding-bottom: 12px;
849
960
  padding-left: ${({ alignRight }) => alignRight ? "0" : "24px"};
@@ -855,29 +966,29 @@ var AlignedTableCell = styled17__default.default(TableCell_default)`
855
966
  ${({ isFirst }) => isFirst && `border-top-left-radius: 6px; border-bottom-left-radius: 6px;`}
856
967
  ${({ isLast }) => isLast && `border-top-right-radius: 6px; border-bottom-right-radius: 6px;`}
857
968
  `;
858
- var CellContent = styled17__default.default.div`
969
+ var CellContent = styled18__default.default.div`
859
970
  display: flex;
860
971
  align-items: center;
861
972
  justify-content: ${({ alignRight }) => alignRight ? "flex-end" : "flex-start"};
862
973
  flex: ${({ alignRight }) => alignRight ? "0 0 auto" : "1"};
863
974
  min-width: 0;
864
975
  `;
865
- var TableWrapper = styled17__default.default.div`
976
+ var TableWrapper = styled18__default.default.div`
866
977
  margin-top: 32px;
867
978
  `;
868
- var EmptyState = styled17__default.default.div`
979
+ var EmptyState = styled18__default.default.div`
869
980
  padding: 24px;
870
981
  text-align: center;
871
982
  display: flex;
872
983
  flex-direction: column;
873
984
  gap: 8px;
874
985
  `;
875
- var EmptyHeader = styled17__default.default.div`
986
+ var EmptyHeader = styled18__default.default.div`
876
987
  font-size: 26px;
877
988
  font-weight: 700;
878
989
  color: ${colors.baseColors.darkBlue1};
879
990
  `;
880
- var EmptySubheader = styled17__default.default.div`
991
+ var EmptySubheader = styled18__default.default.div`
881
992
  font-size: 12px;
882
993
  font-weight: 500;
883
994
  color: ${colors.baseColors.grey3};
@@ -990,6 +1101,7 @@ var DataTable_default = Table;
990
1101
  exports.Badge = Badge_default;
991
1102
  exports.Button = Button_default;
992
1103
  exports.Checkbox = Checkbox_default;
1104
+ exports.ErrorNotification = ErrorNotification_default;
993
1105
  exports.FONT_SIZES = FONT_SIZES;
994
1106
  exports.FONT_SIZE_KEYS = FONT_SIZE_KEYS;
995
1107
  exports.FONT_WEIGHTS = FONT_WEIGHTS;