ndcloud-storybook 1.2.2 → 1.3.1

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,12 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var react = require('@emotion/react');
4
- var styled16 = require('@emotion/styled');
4
+ var styled18 = require('@emotion/styled');
5
5
  var jsxRuntime = require('@emotion/react/jsx-runtime');
6
+ var react$1 = require('react');
6
7
 
7
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
9
 
9
- var styled16__default = /*#__PURE__*/_interopDefault(styled16);
10
+ var styled18__default = /*#__PURE__*/_interopDefault(styled18);
10
11
 
11
12
  // src/atoms/Button/Button.tsx
12
13
  var Spinner = ({
@@ -41,7 +42,7 @@ var spin = react.keyframes`
41
42
  from { transform: rotate(0deg); }
42
43
  to { transform: rotate(360deg); }
43
44
  `;
44
- var Wrapper = styled16__default.default.div`
45
+ var Wrapper = styled18__default.default.div`
45
46
  display: inline-flex;
46
47
  align-items: center;
47
48
  justify-content: center;
@@ -193,7 +194,7 @@ var Button = ({
193
194
  }
194
195
  );
195
196
  var Button_default = Button;
196
- var StyledButton = styled16__default.default.button`
197
+ var StyledButton = styled18__default.default.button`
197
198
  display: flex;
198
199
  align-items: center;
199
200
  justify-content: center;
@@ -288,12 +289,229 @@ var Input = ({ className, error, warning, ...rest }) => {
288
289
  return /* @__PURE__ */ jsxRuntime.jsx(StyledInput, { className, error, warning, ...rest });
289
290
  };
290
291
  var Input_default = Input;
291
- var StyledInput = styled16__default.default.input`
292
+ var StyledInput = styled18__default.default.input`
292
293
  ${baseInputStyles}
293
294
 
294
295
  ${({ error }) => error && errorStyles}
295
296
  ${({ warning }) => warning && warningStyles}
296
297
  `;
298
+ var useDarkMode = () => {
299
+ const checkDarkMode = () => {
300
+ if (typeof window === "undefined") return false;
301
+ const globals = new URLSearchParams(window.location.search).get("globals");
302
+ return !!(globals?.includes("backgrounds.value:dark") || window.location.href.includes("backgrounds.value:dark"));
303
+ };
304
+ const [isDark, setIsDark] = react$1.useState(checkDarkMode);
305
+ react$1.useEffect(() => {
306
+ const handlePopState = () => setIsDark(checkDarkMode());
307
+ window.addEventListener("popstate", handlePopState);
308
+ return () => window.removeEventListener("popstate", handlePopState);
309
+ }, []);
310
+ return isDark;
311
+ };
312
+ 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(
313
+ "path",
314
+ {
315
+ d: "M2 6L5 9L10 2",
316
+ stroke: "currentColor",
317
+ strokeWidth: "2",
318
+ strokeLinecap: "round",
319
+ strokeLinejoin: "round"
320
+ }
321
+ ) });
322
+ var Checkbox = ({
323
+ className,
324
+ danger,
325
+ darkMode: darkModeProp,
326
+ checked,
327
+ size = 20,
328
+ disabled,
329
+ ...rest
330
+ }) => {
331
+ const autoDarkMode = useDarkMode();
332
+ const darkMode = darkModeProp !== void 0 ? darkModeProp : autoDarkMode;
333
+ return /* @__PURE__ */ jsxRuntime.jsxs(CheckboxWrapper, { className, danger, darkMode, size, children: [
334
+ /* @__PURE__ */ jsxRuntime.jsx(
335
+ StyledCheckbox,
336
+ {
337
+ type: "checkbox",
338
+ checked,
339
+ danger,
340
+ disabled,
341
+ ...rest
342
+ }
343
+ ),
344
+ /* @__PURE__ */ jsxRuntime.jsx(
345
+ CheckmarkWrapper,
346
+ {
347
+ checked,
348
+ danger,
349
+ darkMode,
350
+ disabled,
351
+ size,
352
+ children: /* @__PURE__ */ jsxRuntime.jsx(CheckmarkIcon, {})
353
+ }
354
+ )
355
+ ] });
356
+ };
357
+ var Checkbox_default = Checkbox;
358
+ var CheckboxWrapper = styled18__default.default.label`
359
+ position: relative;
360
+ display: inline-block;
361
+ cursor: pointer;
362
+
363
+ &:has(input:disabled) {
364
+ cursor: not-allowed;
365
+ }
366
+
367
+ &:hover input:not(:checked):not(:disabled) + span {
368
+ ${({ danger, darkMode }) => danger ? react.css`
369
+ border-color: ${colors.accents.danger};
370
+ ` : darkMode ? react.css`
371
+ background-color: ${colors.baseColors.grey2};
372
+ border-color: ${colors.baseColors.grey4};
373
+ ` : react.css`
374
+ background-color: ${getOpacity(colors.baseColors.grey7, 40)};
375
+ border-color: ${colors.baseColors.grey3};
376
+ `}
377
+ }
378
+ `;
379
+ var StyledCheckbox = styled18__default.default.input`
380
+ position: absolute;
381
+ opacity: 0;
382
+ cursor: pointer;
383
+ height: 0;
384
+ width: 0;
385
+
386
+ &:focus-visible + * {
387
+ outline: 2px solid ${colors.baseColors.primaryBlue};
388
+ outline-offset: 2px;
389
+ border-radius: 4px;
390
+ }
391
+
392
+ &:disabled + * {
393
+ opacity: 0.5;
394
+ cursor: not-allowed;
395
+ }
396
+ `;
397
+ var CheckmarkWrapper = styled18__default.default.span`
398
+ display: inline-flex;
399
+ align-items: center;
400
+ justify-content: center;
401
+ width: ${({ size }) => size}px;
402
+ height: ${({ size }) => size}px;
403
+ box-sizing: border-box;
404
+ border-radius: 4px;
405
+ transition: all 0.2s ease;
406
+ color: transparent;
407
+ cursor: pointer;
408
+
409
+ svg {
410
+ width: 60%;
411
+ height: 60%;
412
+ }
413
+
414
+ ${({ checked, danger, darkMode, disabled }) => {
415
+ if (disabled) {
416
+ return darkMode ? react.css`
417
+ background-color: ${colors.baseColors.grey1};
418
+ border: 1px solid ${colors.baseColors.grey4};
419
+ cursor: not-allowed;
420
+ ` : react.css`
421
+ background-color: ${colors.baseColors.grey7};
422
+ border: 1px solid ${colors.baseColors.grey7};
423
+ cursor: not-allowed;
424
+ `;
425
+ }
426
+ if (checked) {
427
+ const bgColor = danger ? colors.accents.danger : colors.baseColors.primaryPurple;
428
+ return react.css`
429
+ background-color: ${bgColor};
430
+ border: 1px solid ${bgColor};
431
+ color: ${colors.baseColors.white1};
432
+ `;
433
+ }
434
+ if (danger) {
435
+ return react.css`
436
+ background-color: ${getOpacity(colors.accents.danger, 10)};
437
+ border: 1px solid ${colors.accents.danger};
438
+ `;
439
+ }
440
+ return darkMode ? react.css`
441
+ background-color: ${colors.baseColors.grey1};
442
+ border: 1px solid ${colors.baseColors.grey4};
443
+ ` : react.css`
444
+ background-color: ${colors.baseColors.white1};
445
+ border: 1px solid ${colors.baseColors.grey7};
446
+ `;
447
+ }}
448
+ `;
449
+ 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(
450
+ "path",
451
+ {
452
+ d: "M4 4L12 12M12 4L4 12",
453
+ stroke: "currentColor",
454
+ strokeWidth: "2",
455
+ strokeLinecap: "round",
456
+ strokeLinejoin: "round"
457
+ }
458
+ ) });
459
+ var ErrorNotification = ({
460
+ message,
461
+ className,
462
+ darkMode: darkModeProp
463
+ }) => {
464
+ const autoDarkMode = useDarkMode();
465
+ const darkMode = darkModeProp !== void 0 ? darkModeProp : autoDarkMode;
466
+ const isLongMessage = message.length > 120;
467
+ return /* @__PURE__ */ jsxRuntime.jsxs(ErrorNotificationWrapper, { className, darkMode, isLong: isLongMessage, children: [
468
+ /* @__PURE__ */ jsxRuntime.jsx(IconContainer, { darkMode, isLong: isLongMessage, children: /* @__PURE__ */ jsxRuntime.jsx(XIcon, {}) }),
469
+ /* @__PURE__ */ jsxRuntime.jsx(MessageText, { darkMode, isLong: isLongMessage, children: message })
470
+ ] });
471
+ };
472
+ var ErrorNotification_default = ErrorNotification;
473
+ var ErrorNotificationWrapper = styled18__default.default.div`
474
+ display: flex;
475
+ align-items: ${({ isLong }) => isLong ? "flex-start" : "center"};
476
+ gap: 12px;
477
+ min-height: 74px;
478
+ max-width: 356px;
479
+ padding: ${({ isLong }) => isLong ? "20px" : "0"} 16px;
480
+ border-radius: 6px;
481
+ background-color: ${getOpacity(colors.accents.error, 30)};
482
+ border: 1px solid ${colors.accents.error};
483
+ color: ${({ darkMode }) => darkMode ? colors.baseColors.white1 : colors.baseColors.darkBlue1};
484
+ font-family: ${typography.fontFamily.primary};
485
+ font-size: ${FONT_SIZES.m}px;
486
+ font-weight: ${FONT_WEIGHTS.normal};
487
+ line-height: ${typography.lineHeight.normal};
488
+ `;
489
+ var IconContainer = styled18__default.default.div`
490
+ display: flex;
491
+ align-items: center;
492
+ justify-content: center;
493
+ flex-shrink: 0;
494
+ width: 32px;
495
+ height: 32px;
496
+ margin: 0;
497
+ border-radius: 50%;
498
+ background-color: ${getOpacity(colors.baseColors.white1, 30)};
499
+ color: ${colors.accents.error};
500
+
501
+ svg {
502
+ width: 16px;
503
+ height: 16px;
504
+ }
505
+ `;
506
+ var MessageText = styled18__default.default.p`
507
+ flex: 1;
508
+ margin: 0;
509
+ padding: 0;
510
+ color: ${({ darkMode }) => darkMode ? colors.baseColors.white1 : colors.baseColors.darkBlue1};
511
+ font-weight: ${FONT_WEIGHTS.bold};
512
+ word-wrap: break-word;
513
+ word-break: break-word;
514
+ `;
297
515
  var Label = ({ className, htmlFor, children, ...rest }) => {
298
516
  return /* @__PURE__ */ jsxRuntime.jsx("label", { className, htmlFor, ...rest, children });
299
517
  };
@@ -302,7 +520,7 @@ var Textarea = ({ className, error, warning, ...rest }) => {
302
520
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTextarea, { className, error, warning, ...rest });
303
521
  };
304
522
  var Textarea_default = Textarea;
305
- var StyledTextarea = styled16__default.default.textarea`
523
+ var StyledTextarea = styled18__default.default.textarea`
306
524
  ${baseInputStyles}
307
525
  resize: vertical;
308
526
  min-height: 80px;
@@ -330,7 +548,7 @@ var Tab = ({
330
548
  );
331
549
  };
332
550
  var Tab_default = Tab;
333
- var StyledTab = styled16__default.default.div`
551
+ var StyledTab = styled18__default.default.div`
334
552
  display: inline-block;
335
553
  padding: 8px 16px;
336
554
  user-select: none;
@@ -351,7 +569,7 @@ var StyledTab = styled16__default.default.div`
351
569
  }
352
570
  `}
353
571
  `;
354
- var HelperText = styled16__default.default.div`
572
+ var HelperText = styled18__default.default.div`
355
573
  margin-top: 4px;
356
574
  font-size: ${typography.fontSize.xs}px;
357
575
  color: ${({ error, warning }) => {
@@ -391,7 +609,7 @@ function GroupBadge({ role, status, children }) {
391
609
  const displayText = status?.toLowerCase() === USER_STATUS.INVITED ? "Invited" : children;
392
610
  return /* @__PURE__ */ jsxRuntime.jsx(Badge, { badgeColor, children: displayText });
393
611
  }
394
- var Badge = styled16__default.default.div`
612
+ var Badge = styled18__default.default.div`
395
613
  display: inline-flex;
396
614
  padding: 8px 28px;
397
615
  border-radius: 100px;
@@ -426,7 +644,7 @@ function UserAvatar({
426
644
  return /* @__PURE__ */ jsxRuntime.jsx(ColourAvatar, { badgeColor, size, children: initials });
427
645
  }
428
646
  var UserAvatar_default = UserAvatar;
429
- var ColourAvatar = styled16__default.default.div`
647
+ var ColourAvatar = styled18__default.default.div`
430
648
  width: ${({ size }) => typeof size === "number" ? `${size}px` : size === "large" ? "56px" : "40px"};
431
649
  height: ${({ size }) => typeof size === "number" ? `${size}px` : size === "large" ? "56px" : "40px"};
432
650
  border-radius: 50%;
@@ -440,12 +658,12 @@ var ColourAvatar = styled16__default.default.div`
440
658
  font-weight: ${FONT_WEIGHTS.normal};
441
659
  flex-shrink: 0;
442
660
  `;
443
- var ProfileAvatar = styled16__default.default(ColourAvatar)`
661
+ var ProfileAvatar = styled18__default.default(ColourAvatar)`
444
662
  color: #fff;
445
663
  background: ${colors.gradients.gradient1};
446
664
  border: none;
447
665
  border-radius: 999px;
448
- line-height: 138%;
666
+ padding-top: 2px;
449
667
  margin-bottom: 12px;
450
668
  `;
451
669
  var FormField = ({
@@ -485,7 +703,7 @@ var FormField = ({
485
703
  displayText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error: hasError, warning: hasWarning, children: displayText })
486
704
  ] });
487
705
  };
488
- var FormFieldWrapper = styled16__default.default.div`
706
+ var FormFieldWrapper = styled18__default.default.div`
489
707
  display: flex;
490
708
  flex-direction: column;
491
709
 
@@ -533,7 +751,7 @@ var FormFieldTextarea = ({
533
751
  displayText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error: hasError, warning: hasWarning, children: displayText })
534
752
  ] });
535
753
  };
536
- var FormFieldWrapper2 = styled16__default.default.div`
754
+ var FormFieldWrapper2 = styled18__default.default.div`
537
755
  display: flex;
538
756
  flex-direction: column;
539
757
 
@@ -544,16 +762,16 @@ var FormFieldWrapper2 = styled16__default.default.div`
544
762
  }
545
763
  `;
546
764
  var FormFieldTextarea_default = FormFieldTextarea;
547
- var SearchContainer = styled16__default.default.div`
765
+ var SearchContainer = styled18__default.default.div`
548
766
  width: ${({ width }) => typeof width === "number" ? `${width}px` : width || "208px"};
549
767
  `;
550
- var InputWrapper = styled16__default.default.div`
768
+ var InputWrapper = styled18__default.default.div`
551
769
  position: relative;
552
770
  width: 100%;
553
771
  display: flex;
554
772
  align-items: center;
555
773
  `;
556
- var IconWrapper = styled16__default.default.div`
774
+ var IconWrapper = styled18__default.default.div`
557
775
  position: absolute;
558
776
  left: 17px;
559
777
  top: 50%;
@@ -565,7 +783,7 @@ var IconWrapper = styled16__default.default.div`
565
783
  pointer-events: none;
566
784
  z-index: 2;
567
785
  `;
568
- var StyledInput2 = styled16__default.default(Input_default)`
786
+ var StyledInput2 = styled18__default.default(Input_default)`
569
787
  width: 100%;
570
788
  padding-right: ${({ hasClearButton }) => hasClearButton ? "32px" : "17px"};
571
789
  padding-left: ${({ hasIcon }) => hasIcon ? "44px" : "17px"};
@@ -577,7 +795,7 @@ var StyledInput2 = styled16__default.default(Input_default)`
577
795
  padding-left: ${({ hasIcon }) => hasIcon ? "43px" : "16px"};
578
796
  }
579
797
  `;
580
- var ClearButton = styled16__default.default.button`
798
+ var ClearButton = styled18__default.default.button`
581
799
  position: absolute;
582
800
  right: 8px;
583
801
  top: 50%;
@@ -603,7 +821,7 @@ var ClearButton = styled16__default.default.button`
603
821
  border-radius: 4px;
604
822
  }
605
823
  `;
606
- var ClearIcon = styled16__default.default.svg`
824
+ var ClearIcon = styled18__default.default.svg`
607
825
  width: 16px;
608
826
  height: 16px;
609
827
  stroke-width: 2;
@@ -653,7 +871,7 @@ function TableElement({ children, ...rest }) {
653
871
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTable, { ...rest, children });
654
872
  }
655
873
  var Table_default = TableElement;
656
- var StyledTable = styled16__default.default.table`
874
+ var StyledTable = styled18__default.default.table`
657
875
  width: 100%;
658
876
  border-collapse: separate;
659
877
  border-spacing: 0 4px;
@@ -662,7 +880,7 @@ function TableHeader({ alignRight, children, ...rest }) {
662
880
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableHeader, { alignRight, ...rest, children });
663
881
  }
664
882
  var TableHeader_default = TableHeader;
665
- var StyledTableHeader = styled16__default.default.th`
883
+ var StyledTableHeader = styled18__default.default.th`
666
884
  padding-bottom: 12px;
667
885
  text-align: ${({ alignRight }) => alignRight ? "right" : "left"};
668
886
  font-size: ${FONT_SIZES.xs}px;
@@ -674,17 +892,17 @@ function TableCell({ children, colSpan, ...rest }) {
674
892
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableCell, { colSpan, ...rest, children });
675
893
  }
676
894
  var TableCell_default = TableCell;
677
- var StyledTableCell = styled16__default.default.td`
895
+ var StyledTableCell = styled18__default.default.td`
678
896
 
679
897
  `;
680
898
  function TableRow({ children, ...rest }) {
681
899
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableRow, { ...rest, children });
682
900
  }
683
901
  var TableRow_default = TableRow;
684
- var StyledTableRow = styled16__default.default.tr`
902
+ var StyledTableRow = styled18__default.default.tr`
685
903
  /* Base row styling */
686
904
  `;
687
- var TableRowWrapper = styled16__default.default.div`
905
+ var TableRowWrapper = styled18__default.default.div`
688
906
  border-radius: 6px;
689
907
  border: 1px solid ${colors.baseColors.grey7};
690
908
  display: flex;
@@ -692,16 +910,16 @@ var TableRowWrapper = styled16__default.default.div`
692
910
  justify-content: space-between;
693
911
  padding: 12px 24px;
694
912
  `;
695
- var CheckboxWrapper = styled16__default.default.div`
913
+ var CheckboxWrapper2 = styled18__default.default.div`
696
914
  display: flex;
697
915
  align-items: center;
698
916
  `;
699
- var ActionsWrapper = styled16__default.default.div`
917
+ var ActionsWrapper = styled18__default.default.div`
700
918
  display: flex;
701
919
  align-items: center;
702
920
  justify-content: flex-end;
703
921
  `;
704
- var AlignedTableCell = styled16__default.default(TableCell_default)`
922
+ var AlignedTableCell = styled18__default.default(TableCell_default)`
705
923
  padding-top: 12px;
706
924
  padding-bottom: 12px;
707
925
  padding-left: ${({ alignRight }) => alignRight ? "0" : "24px"};
@@ -713,29 +931,29 @@ var AlignedTableCell = styled16__default.default(TableCell_default)`
713
931
  ${({ isFirst }) => isFirst && `border-top-left-radius: 6px; border-bottom-left-radius: 6px;`}
714
932
  ${({ isLast }) => isLast && `border-top-right-radius: 6px; border-bottom-right-radius: 6px;`}
715
933
  `;
716
- var CellContent = styled16__default.default.div`
934
+ var CellContent = styled18__default.default.div`
717
935
  display: flex;
718
936
  align-items: center;
719
937
  justify-content: ${({ alignRight }) => alignRight ? "flex-end" : "flex-start"};
720
938
  flex: ${({ alignRight }) => alignRight ? "0 0 auto" : "1"};
721
939
  min-width: 0;
722
940
  `;
723
- var TableWrapper = styled16__default.default.div`
941
+ var TableWrapper = styled18__default.default.div`
724
942
  margin-top: 32px;
725
943
  `;
726
- var EmptyState = styled16__default.default.div`
944
+ var EmptyState = styled18__default.default.div`
727
945
  padding: 24px;
728
946
  text-align: center;
729
947
  display: flex;
730
948
  flex-direction: column;
731
949
  gap: 8px;
732
950
  `;
733
- var EmptyHeader = styled16__default.default.div`
951
+ var EmptyHeader = styled18__default.default.div`
734
952
  font-size: 26px;
735
953
  font-weight: 700;
736
954
  color: ${colors.baseColors.darkBlue1};
737
955
  `;
738
- var EmptySubheader = styled16__default.default.div`
956
+ var EmptySubheader = styled18__default.default.div`
739
957
  font-size: 12px;
740
958
  font-weight: 500;
741
959
  color: ${colors.baseColors.grey3};
@@ -804,7 +1022,7 @@ function Table({
804
1022
  const isSelected = selectedRows.has(rowKey);
805
1023
  if (rowLayout === "spaced") {
806
1024
  return /* @__PURE__ */ jsxRuntime.jsx(TableRow_default, { children: /* @__PURE__ */ jsxRuntime.jsx(TableCell_default, { colSpan: totalColumns, children: /* @__PURE__ */ jsxRuntime.jsxs(TableRowWrapper, { children: [
807
- showCheckboxes && /* @__PURE__ */ jsxRuntime.jsx(CheckboxWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
1025
+ showCheckboxes && /* @__PURE__ */ jsxRuntime.jsx(CheckboxWrapper2, { children: /* @__PURE__ */ jsxRuntime.jsx(
808
1026
  "input",
809
1027
  {
810
1028
  type: "checkbox",
@@ -847,6 +1065,8 @@ var DataTable_default = Table;
847
1065
 
848
1066
  exports.Badge = Badge_default;
849
1067
  exports.Button = Button_default;
1068
+ exports.Checkbox = Checkbox_default;
1069
+ exports.ErrorNotification = ErrorNotification_default;
850
1070
  exports.FONT_SIZES = FONT_SIZES;
851
1071
  exports.FONT_SIZE_KEYS = FONT_SIZE_KEYS;
852
1072
  exports.FONT_WEIGHTS = FONT_WEIGHTS;