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.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { keyframes, css } from '@emotion/react';
2
- import styled16 from '@emotion/styled';
2
+ import styled18 from '@emotion/styled';
3
3
  import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
4
+ import { useState, useEffect } from 'react';
4
5
 
5
6
  // src/atoms/Button/Button.tsx
6
7
  var Spinner = ({
@@ -35,7 +36,7 @@ var spin = keyframes`
35
36
  from { transform: rotate(0deg); }
36
37
  to { transform: rotate(360deg); }
37
38
  `;
38
- var Wrapper = styled16.div`
39
+ var Wrapper = styled18.div`
39
40
  display: inline-flex;
40
41
  align-items: center;
41
42
  justify-content: center;
@@ -187,7 +188,7 @@ var Button = ({
187
188
  }
188
189
  );
189
190
  var Button_default = Button;
190
- var StyledButton = styled16.button`
191
+ var StyledButton = styled18.button`
191
192
  display: flex;
192
193
  align-items: center;
193
194
  justify-content: center;
@@ -282,12 +283,229 @@ var Input = ({ className, error, warning, ...rest }) => {
282
283
  return /* @__PURE__ */ jsx(StyledInput, { className, error, warning, ...rest });
283
284
  };
284
285
  var Input_default = Input;
285
- var StyledInput = styled16.input`
286
+ var StyledInput = styled18.input`
286
287
  ${baseInputStyles}
287
288
 
288
289
  ${({ error }) => error && errorStyles}
289
290
  ${({ warning }) => warning && warningStyles}
290
291
  `;
292
+ var useDarkMode = () => {
293
+ const checkDarkMode = () => {
294
+ if (typeof window === "undefined") return false;
295
+ const globals = new URLSearchParams(window.location.search).get("globals");
296
+ return !!(globals?.includes("backgrounds.value:dark") || window.location.href.includes("backgrounds.value:dark"));
297
+ };
298
+ const [isDark, setIsDark] = useState(checkDarkMode);
299
+ useEffect(() => {
300
+ const handlePopState = () => setIsDark(checkDarkMode());
301
+ window.addEventListener("popstate", handlePopState);
302
+ return () => window.removeEventListener("popstate", handlePopState);
303
+ }, []);
304
+ return isDark;
305
+ };
306
+ var CheckmarkIcon = (props) => /* @__PURE__ */ jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: /* @__PURE__ */ jsx(
307
+ "path",
308
+ {
309
+ d: "M2 6L5 9L10 2",
310
+ stroke: "currentColor",
311
+ strokeWidth: "2",
312
+ strokeLinecap: "round",
313
+ strokeLinejoin: "round"
314
+ }
315
+ ) });
316
+ var Checkbox = ({
317
+ className,
318
+ danger,
319
+ darkMode: darkModeProp,
320
+ checked,
321
+ size = 20,
322
+ disabled,
323
+ ...rest
324
+ }) => {
325
+ const autoDarkMode = useDarkMode();
326
+ const darkMode = darkModeProp !== void 0 ? darkModeProp : autoDarkMode;
327
+ return /* @__PURE__ */ jsxs(CheckboxWrapper, { className, danger, darkMode, size, children: [
328
+ /* @__PURE__ */ jsx(
329
+ StyledCheckbox,
330
+ {
331
+ type: "checkbox",
332
+ checked,
333
+ danger,
334
+ disabled,
335
+ ...rest
336
+ }
337
+ ),
338
+ /* @__PURE__ */ jsx(
339
+ CheckmarkWrapper,
340
+ {
341
+ checked,
342
+ danger,
343
+ darkMode,
344
+ disabled,
345
+ size,
346
+ children: /* @__PURE__ */ jsx(CheckmarkIcon, {})
347
+ }
348
+ )
349
+ ] });
350
+ };
351
+ var Checkbox_default = Checkbox;
352
+ var CheckboxWrapper = styled18.label`
353
+ position: relative;
354
+ display: inline-block;
355
+ cursor: pointer;
356
+
357
+ &:has(input:disabled) {
358
+ cursor: not-allowed;
359
+ }
360
+
361
+ &:hover input:not(:checked):not(:disabled) + span {
362
+ ${({ danger, darkMode }) => danger ? css`
363
+ border-color: ${colors.accents.danger};
364
+ ` : darkMode ? css`
365
+ background-color: ${colors.baseColors.grey2};
366
+ border-color: ${colors.baseColors.grey4};
367
+ ` : css`
368
+ background-color: ${getOpacity(colors.baseColors.grey7, 40)};
369
+ border-color: ${colors.baseColors.grey3};
370
+ `}
371
+ }
372
+ `;
373
+ var StyledCheckbox = styled18.input`
374
+ position: absolute;
375
+ opacity: 0;
376
+ cursor: pointer;
377
+ height: 0;
378
+ width: 0;
379
+
380
+ &:focus-visible + * {
381
+ outline: 2px solid ${colors.baseColors.primaryBlue};
382
+ outline-offset: 2px;
383
+ border-radius: 4px;
384
+ }
385
+
386
+ &:disabled + * {
387
+ opacity: 0.5;
388
+ cursor: not-allowed;
389
+ }
390
+ `;
391
+ var CheckmarkWrapper = styled18.span`
392
+ display: inline-flex;
393
+ align-items: center;
394
+ justify-content: center;
395
+ width: ${({ size }) => size}px;
396
+ height: ${({ size }) => size}px;
397
+ box-sizing: border-box;
398
+ border-radius: 4px;
399
+ transition: all 0.2s ease;
400
+ color: transparent;
401
+ cursor: pointer;
402
+
403
+ svg {
404
+ width: 60%;
405
+ height: 60%;
406
+ }
407
+
408
+ ${({ checked, danger, darkMode, disabled }) => {
409
+ if (disabled) {
410
+ return darkMode ? css`
411
+ background-color: ${colors.baseColors.grey1};
412
+ border: 1px solid ${colors.baseColors.grey4};
413
+ cursor: not-allowed;
414
+ ` : css`
415
+ background-color: ${colors.baseColors.grey7};
416
+ border: 1px solid ${colors.baseColors.grey7};
417
+ cursor: not-allowed;
418
+ `;
419
+ }
420
+ if (checked) {
421
+ const bgColor = danger ? colors.accents.danger : colors.baseColors.primaryPurple;
422
+ return css`
423
+ background-color: ${bgColor};
424
+ border: 1px solid ${bgColor};
425
+ color: ${colors.baseColors.white1};
426
+ `;
427
+ }
428
+ if (danger) {
429
+ return css`
430
+ background-color: ${getOpacity(colors.accents.danger, 10)};
431
+ border: 1px solid ${colors.accents.danger};
432
+ `;
433
+ }
434
+ return darkMode ? css`
435
+ background-color: ${colors.baseColors.grey1};
436
+ border: 1px solid ${colors.baseColors.grey4};
437
+ ` : css`
438
+ background-color: ${colors.baseColors.white1};
439
+ border: 1px solid ${colors.baseColors.grey7};
440
+ `;
441
+ }}
442
+ `;
443
+ var XIcon = (props) => /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: /* @__PURE__ */ jsx(
444
+ "path",
445
+ {
446
+ d: "M4 4L12 12M12 4L4 12",
447
+ stroke: "currentColor",
448
+ strokeWidth: "2",
449
+ strokeLinecap: "round",
450
+ strokeLinejoin: "round"
451
+ }
452
+ ) });
453
+ var ErrorNotification = ({
454
+ message,
455
+ className,
456
+ darkMode: darkModeProp
457
+ }) => {
458
+ const autoDarkMode = useDarkMode();
459
+ const darkMode = darkModeProp !== void 0 ? darkModeProp : autoDarkMode;
460
+ const isLongMessage = message.length > 120;
461
+ return /* @__PURE__ */ jsxs(ErrorNotificationWrapper, { className, darkMode, isLong: isLongMessage, children: [
462
+ /* @__PURE__ */ jsx(IconContainer, { darkMode, isLong: isLongMessage, children: /* @__PURE__ */ jsx(XIcon, {}) }),
463
+ /* @__PURE__ */ jsx(MessageText, { darkMode, isLong: isLongMessage, children: message })
464
+ ] });
465
+ };
466
+ var ErrorNotification_default = ErrorNotification;
467
+ var ErrorNotificationWrapper = styled18.div`
468
+ display: flex;
469
+ align-items: ${({ isLong }) => isLong ? "flex-start" : "center"};
470
+ gap: 12px;
471
+ min-height: 74px;
472
+ max-width: 356px;
473
+ padding: ${({ isLong }) => isLong ? "20px" : "0"} 16px;
474
+ border-radius: 6px;
475
+ background-color: ${getOpacity(colors.accents.error, 30)};
476
+ border: 1px solid ${colors.accents.error};
477
+ color: ${({ darkMode }) => darkMode ? colors.baseColors.white1 : colors.baseColors.darkBlue1};
478
+ font-family: ${typography.fontFamily.primary};
479
+ font-size: ${FONT_SIZES.m}px;
480
+ font-weight: ${FONT_WEIGHTS.normal};
481
+ line-height: ${typography.lineHeight.normal};
482
+ `;
483
+ var IconContainer = styled18.div`
484
+ display: flex;
485
+ align-items: center;
486
+ justify-content: center;
487
+ flex-shrink: 0;
488
+ width: 32px;
489
+ height: 32px;
490
+ margin: 0;
491
+ border-radius: 50%;
492
+ background-color: ${getOpacity(colors.baseColors.white1, 30)};
493
+ color: ${colors.accents.error};
494
+
495
+ svg {
496
+ width: 16px;
497
+ height: 16px;
498
+ }
499
+ `;
500
+ var MessageText = styled18.p`
501
+ flex: 1;
502
+ margin: 0;
503
+ padding: 0;
504
+ color: ${({ darkMode }) => darkMode ? colors.baseColors.white1 : colors.baseColors.darkBlue1};
505
+ font-weight: ${FONT_WEIGHTS.bold};
506
+ word-wrap: break-word;
507
+ word-break: break-word;
508
+ `;
291
509
  var Label = ({ className, htmlFor, children, ...rest }) => {
292
510
  return /* @__PURE__ */ jsx("label", { className, htmlFor, ...rest, children });
293
511
  };
@@ -296,7 +514,7 @@ var Textarea = ({ className, error, warning, ...rest }) => {
296
514
  return /* @__PURE__ */ jsx(StyledTextarea, { className, error, warning, ...rest });
297
515
  };
298
516
  var Textarea_default = Textarea;
299
- var StyledTextarea = styled16.textarea`
517
+ var StyledTextarea = styled18.textarea`
300
518
  ${baseInputStyles}
301
519
  resize: vertical;
302
520
  min-height: 80px;
@@ -324,7 +542,7 @@ var Tab = ({
324
542
  );
325
543
  };
326
544
  var Tab_default = Tab;
327
- var StyledTab = styled16.div`
545
+ var StyledTab = styled18.div`
328
546
  display: inline-block;
329
547
  padding: 8px 16px;
330
548
  user-select: none;
@@ -345,7 +563,7 @@ var StyledTab = styled16.div`
345
563
  }
346
564
  `}
347
565
  `;
348
- var HelperText = styled16.div`
566
+ var HelperText = styled18.div`
349
567
  margin-top: 4px;
350
568
  font-size: ${typography.fontSize.xs}px;
351
569
  color: ${({ error, warning }) => {
@@ -385,7 +603,7 @@ function GroupBadge({ role, status, children }) {
385
603
  const displayText = status?.toLowerCase() === USER_STATUS.INVITED ? "Invited" : children;
386
604
  return /* @__PURE__ */ jsx(Badge, { badgeColor, children: displayText });
387
605
  }
388
- var Badge = styled16.div`
606
+ var Badge = styled18.div`
389
607
  display: inline-flex;
390
608
  padding: 8px 28px;
391
609
  border-radius: 100px;
@@ -420,7 +638,7 @@ function UserAvatar({
420
638
  return /* @__PURE__ */ jsx(ColourAvatar, { badgeColor, size, children: initials });
421
639
  }
422
640
  var UserAvatar_default = UserAvatar;
423
- var ColourAvatar = styled16.div`
641
+ var ColourAvatar = styled18.div`
424
642
  width: ${({ size }) => typeof size === "number" ? `${size}px` : size === "large" ? "56px" : "40px"};
425
643
  height: ${({ size }) => typeof size === "number" ? `${size}px` : size === "large" ? "56px" : "40px"};
426
644
  border-radius: 50%;
@@ -434,12 +652,12 @@ var ColourAvatar = styled16.div`
434
652
  font-weight: ${FONT_WEIGHTS.normal};
435
653
  flex-shrink: 0;
436
654
  `;
437
- var ProfileAvatar = styled16(ColourAvatar)`
655
+ var ProfileAvatar = styled18(ColourAvatar)`
438
656
  color: #fff;
439
657
  background: ${colors.gradients.gradient1};
440
658
  border: none;
441
659
  border-radius: 999px;
442
- line-height: 138%;
660
+ padding-top: 2px;
443
661
  margin-bottom: 12px;
444
662
  `;
445
663
  var FormField = ({
@@ -479,7 +697,7 @@ var FormField = ({
479
697
  displayText && /* @__PURE__ */ jsx(HelperText, { error: hasError, warning: hasWarning, children: displayText })
480
698
  ] });
481
699
  };
482
- var FormFieldWrapper = styled16.div`
700
+ var FormFieldWrapper = styled18.div`
483
701
  display: flex;
484
702
  flex-direction: column;
485
703
 
@@ -527,7 +745,7 @@ var FormFieldTextarea = ({
527
745
  displayText && /* @__PURE__ */ jsx(HelperText, { error: hasError, warning: hasWarning, children: displayText })
528
746
  ] });
529
747
  };
530
- var FormFieldWrapper2 = styled16.div`
748
+ var FormFieldWrapper2 = styled18.div`
531
749
  display: flex;
532
750
  flex-direction: column;
533
751
 
@@ -538,16 +756,16 @@ var FormFieldWrapper2 = styled16.div`
538
756
  }
539
757
  `;
540
758
  var FormFieldTextarea_default = FormFieldTextarea;
541
- var SearchContainer = styled16.div`
759
+ var SearchContainer = styled18.div`
542
760
  width: ${({ width }) => typeof width === "number" ? `${width}px` : width || "208px"};
543
761
  `;
544
- var InputWrapper = styled16.div`
762
+ var InputWrapper = styled18.div`
545
763
  position: relative;
546
764
  width: 100%;
547
765
  display: flex;
548
766
  align-items: center;
549
767
  `;
550
- var IconWrapper = styled16.div`
768
+ var IconWrapper = styled18.div`
551
769
  position: absolute;
552
770
  left: 17px;
553
771
  top: 50%;
@@ -559,7 +777,7 @@ var IconWrapper = styled16.div`
559
777
  pointer-events: none;
560
778
  z-index: 2;
561
779
  `;
562
- var StyledInput2 = styled16(Input_default)`
780
+ var StyledInput2 = styled18(Input_default)`
563
781
  width: 100%;
564
782
  padding-right: ${({ hasClearButton }) => hasClearButton ? "32px" : "17px"};
565
783
  padding-left: ${({ hasIcon }) => hasIcon ? "44px" : "17px"};
@@ -571,7 +789,7 @@ var StyledInput2 = styled16(Input_default)`
571
789
  padding-left: ${({ hasIcon }) => hasIcon ? "43px" : "16px"};
572
790
  }
573
791
  `;
574
- var ClearButton = styled16.button`
792
+ var ClearButton = styled18.button`
575
793
  position: absolute;
576
794
  right: 8px;
577
795
  top: 50%;
@@ -597,7 +815,7 @@ var ClearButton = styled16.button`
597
815
  border-radius: 4px;
598
816
  }
599
817
  `;
600
- var ClearIcon = styled16.svg`
818
+ var ClearIcon = styled18.svg`
601
819
  width: 16px;
602
820
  height: 16px;
603
821
  stroke-width: 2;
@@ -647,7 +865,7 @@ function TableElement({ children, ...rest }) {
647
865
  return /* @__PURE__ */ jsx(StyledTable, { ...rest, children });
648
866
  }
649
867
  var Table_default = TableElement;
650
- var StyledTable = styled16.table`
868
+ var StyledTable = styled18.table`
651
869
  width: 100%;
652
870
  border-collapse: separate;
653
871
  border-spacing: 0 4px;
@@ -656,7 +874,7 @@ function TableHeader({ alignRight, children, ...rest }) {
656
874
  return /* @__PURE__ */ jsx(StyledTableHeader, { alignRight, ...rest, children });
657
875
  }
658
876
  var TableHeader_default = TableHeader;
659
- var StyledTableHeader = styled16.th`
877
+ var StyledTableHeader = styled18.th`
660
878
  padding-bottom: 12px;
661
879
  text-align: ${({ alignRight }) => alignRight ? "right" : "left"};
662
880
  font-size: ${FONT_SIZES.xs}px;
@@ -668,17 +886,17 @@ function TableCell({ children, colSpan, ...rest }) {
668
886
  return /* @__PURE__ */ jsx(StyledTableCell, { colSpan, ...rest, children });
669
887
  }
670
888
  var TableCell_default = TableCell;
671
- var StyledTableCell = styled16.td`
889
+ var StyledTableCell = styled18.td`
672
890
 
673
891
  `;
674
892
  function TableRow({ children, ...rest }) {
675
893
  return /* @__PURE__ */ jsx(StyledTableRow, { ...rest, children });
676
894
  }
677
895
  var TableRow_default = TableRow;
678
- var StyledTableRow = styled16.tr`
896
+ var StyledTableRow = styled18.tr`
679
897
  /* Base row styling */
680
898
  `;
681
- var TableRowWrapper = styled16.div`
899
+ var TableRowWrapper = styled18.div`
682
900
  border-radius: 6px;
683
901
  border: 1px solid ${colors.baseColors.grey7};
684
902
  display: flex;
@@ -686,16 +904,16 @@ var TableRowWrapper = styled16.div`
686
904
  justify-content: space-between;
687
905
  padding: 12px 24px;
688
906
  `;
689
- var CheckboxWrapper = styled16.div`
907
+ var CheckboxWrapper2 = styled18.div`
690
908
  display: flex;
691
909
  align-items: center;
692
910
  `;
693
- var ActionsWrapper = styled16.div`
911
+ var ActionsWrapper = styled18.div`
694
912
  display: flex;
695
913
  align-items: center;
696
914
  justify-content: flex-end;
697
915
  `;
698
- var AlignedTableCell = styled16(TableCell_default)`
916
+ var AlignedTableCell = styled18(TableCell_default)`
699
917
  padding-top: 12px;
700
918
  padding-bottom: 12px;
701
919
  padding-left: ${({ alignRight }) => alignRight ? "0" : "24px"};
@@ -707,29 +925,29 @@ var AlignedTableCell = styled16(TableCell_default)`
707
925
  ${({ isFirst }) => isFirst && `border-top-left-radius: 6px; border-bottom-left-radius: 6px;`}
708
926
  ${({ isLast }) => isLast && `border-top-right-radius: 6px; border-bottom-right-radius: 6px;`}
709
927
  `;
710
- var CellContent = styled16.div`
928
+ var CellContent = styled18.div`
711
929
  display: flex;
712
930
  align-items: center;
713
931
  justify-content: ${({ alignRight }) => alignRight ? "flex-end" : "flex-start"};
714
932
  flex: ${({ alignRight }) => alignRight ? "0 0 auto" : "1"};
715
933
  min-width: 0;
716
934
  `;
717
- var TableWrapper = styled16.div`
935
+ var TableWrapper = styled18.div`
718
936
  margin-top: 32px;
719
937
  `;
720
- var EmptyState = styled16.div`
938
+ var EmptyState = styled18.div`
721
939
  padding: 24px;
722
940
  text-align: center;
723
941
  display: flex;
724
942
  flex-direction: column;
725
943
  gap: 8px;
726
944
  `;
727
- var EmptyHeader = styled16.div`
945
+ var EmptyHeader = styled18.div`
728
946
  font-size: 26px;
729
947
  font-weight: 700;
730
948
  color: ${colors.baseColors.darkBlue1};
731
949
  `;
732
- var EmptySubheader = styled16.div`
950
+ var EmptySubheader = styled18.div`
733
951
  font-size: 12px;
734
952
  font-weight: 500;
735
953
  color: ${colors.baseColors.grey3};
@@ -798,7 +1016,7 @@ function Table({
798
1016
  const isSelected = selectedRows.has(rowKey);
799
1017
  if (rowLayout === "spaced") {
800
1018
  return /* @__PURE__ */ jsx(TableRow_default, { children: /* @__PURE__ */ jsx(TableCell_default, { colSpan: totalColumns, children: /* @__PURE__ */ jsxs(TableRowWrapper, { children: [
801
- showCheckboxes && /* @__PURE__ */ jsx(CheckboxWrapper, { children: /* @__PURE__ */ jsx(
1019
+ showCheckboxes && /* @__PURE__ */ jsx(CheckboxWrapper2, { children: /* @__PURE__ */ jsx(
802
1020
  "input",
803
1021
  {
804
1022
  type: "checkbox",
@@ -839,6 +1057,6 @@ function Table({
839
1057
  }
840
1058
  var DataTable_default = Table;
841
1059
 
842
- export { Badge_default as Badge, Button_default as Button, FONT_SIZES, FONT_SIZE_KEYS, FONT_WEIGHTS, FormField_default as FormField, FormFieldTextarea_default as FormFieldTextarea, GroupBadge, HelperText, Input_default as Input, Label_default as Label, SearchInput_default as SearchInput, Tab_default as Tab, DataTable_default as Table, TableCell_default as TableCell, Table_default as TableElement, TableHeader_default as TableHeader, TableRow_default as TableRow, TableRowWrapper, Textarea_default as Textarea, USER_ROLES, USER_STATUS, UserAvatar_default as UserAvatar, Variant, colors, getBadgeColor, getOpacity, typography };
1060
+ export { Badge_default as Badge, Button_default as Button, Checkbox_default as Checkbox, ErrorNotification_default as ErrorNotification, FONT_SIZES, FONT_SIZE_KEYS, FONT_WEIGHTS, FormField_default as FormField, FormFieldTextarea_default as FormFieldTextarea, GroupBadge, HelperText, Input_default as Input, Label_default as Label, SearchInput_default as SearchInput, Tab_default as Tab, DataTable_default as Table, TableCell_default as TableCell, Table_default as TableElement, TableHeader_default as TableHeader, TableRow_default as TableRow, TableRowWrapper, Textarea_default as Textarea, USER_ROLES, USER_STATUS, UserAvatar_default as UserAvatar, Variant, colors, getBadgeColor, getOpacity, typography };
843
1061
  //# sourceMappingURL=index.js.map
844
1062
  //# sourceMappingURL=index.js.map