ndcloud-storybook 1.2.2 → 1.3.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.
@@ -0,0 +1,10 @@
1
+ <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path
3
+ d="M2 6L5 9L10 2"
4
+ stroke="currentColor"
5
+ strokeWidth="2"
6
+ strokeLinecap="round"
7
+ strokeLinejoin="round"
8
+ />
9
+ </svg>
10
+
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 styled17 = 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 styled17__default = /*#__PURE__*/_interopDefault(styled17);
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 = styled17__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 = styled17__default.default.button`
197
198
  display: flex;
198
199
  align-items: center;
199
200
  justify-content: center;
@@ -288,12 +289,153 @@ 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 = styled17__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
+
313
+ // src/assets/icons/Checkmark.svg?react
314
+ var Checkmark_default = "./Checkmark-OGDFVW3O.svg?react";
315
+ var Checkbox = ({
316
+ className,
317
+ danger,
318
+ darkMode: darkModeProp,
319
+ checked,
320
+ size = 20,
321
+ disabled,
322
+ ...rest
323
+ }) => {
324
+ const autoDarkMode = useDarkMode();
325
+ const darkMode = darkModeProp !== void 0 ? darkModeProp : autoDarkMode;
326
+ return /* @__PURE__ */ jsxRuntime.jsxs(CheckboxWrapper, { className, danger, darkMode, size, children: [
327
+ /* @__PURE__ */ jsxRuntime.jsx(
328
+ StyledCheckbox,
329
+ {
330
+ type: "checkbox",
331
+ checked,
332
+ danger,
333
+ disabled,
334
+ ...rest
335
+ }
336
+ ),
337
+ /* @__PURE__ */ jsxRuntime.jsx(
338
+ CheckmarkWrapper,
339
+ {
340
+ checked,
341
+ danger,
342
+ darkMode,
343
+ disabled,
344
+ size,
345
+ children: /* @__PURE__ */ jsxRuntime.jsx(Checkmark_default, {})
346
+ }
347
+ )
348
+ ] });
349
+ };
350
+ var Checkbox_default = Checkbox;
351
+ var CheckboxWrapper = styled17__default.default.label`
352
+ position: relative;
353
+ display: inline-block;
354
+ cursor: pointer;
355
+
356
+ &:has(input:disabled) {
357
+ cursor: not-allowed;
358
+ }
359
+
360
+ &:hover input:not(:checked):not(:disabled) + span {
361
+ ${({ danger, darkMode }) => danger ? react.css`
362
+ border-color: ${colors.accents.danger};
363
+ ` : darkMode ? react.css`
364
+ background-color: ${colors.baseColors.grey2};
365
+ border-color: ${colors.baseColors.grey4};
366
+ ` : react.css`
367
+ background-color: ${getOpacity(colors.baseColors.grey7, 40)};
368
+ border-color: ${colors.baseColors.grey3};
369
+ `}
370
+ }
371
+ `;
372
+ var StyledCheckbox = styled17__default.default.input`
373
+ position: absolute;
374
+ opacity: 0;
375
+ cursor: pointer;
376
+ height: 0;
377
+ width: 0;
378
+
379
+ &:focus-visible + * {
380
+ outline: 2px solid ${colors.baseColors.primaryBlue};
381
+ outline-offset: 2px;
382
+ border-radius: 4px;
383
+ }
384
+
385
+ &:disabled + * {
386
+ opacity: 0.5;
387
+ cursor: not-allowed;
388
+ }
389
+ `;
390
+ var CheckmarkWrapper = styled17__default.default.span`
391
+ display: inline-flex;
392
+ align-items: center;
393
+ justify-content: center;
394
+ width: ${({ size }) => size}px;
395
+ height: ${({ size }) => size}px;
396
+ box-sizing: border-box;
397
+ border-radius: 4px;
398
+ transition: all 0.2s ease;
399
+ color: transparent;
400
+
401
+ svg {
402
+ width: 60%;
403
+ height: 60%;
404
+ }
405
+
406
+ ${({ checked, danger, darkMode, disabled }) => {
407
+ if (disabled) {
408
+ return darkMode ? react.css`
409
+ background-color: ${colors.baseColors.grey1};
410
+ border: 1px solid ${colors.baseColors.grey4};
411
+ ` : react.css`
412
+ background-color: ${colors.baseColors.grey7};
413
+ border: 1px solid ${colors.baseColors.grey7};
414
+ `;
415
+ }
416
+ if (checked) {
417
+ const bgColor = danger ? colors.accents.danger : colors.baseColors.primaryPurple;
418
+ return react.css`
419
+ background-color: ${bgColor};
420
+ border: 1px solid ${bgColor};
421
+ color: ${colors.baseColors.white1};
422
+ `;
423
+ }
424
+ if (danger) {
425
+ return react.css`
426
+ background-color: ${getOpacity(colors.accents.danger, 10)};
427
+ border: 1px solid ${colors.accents.danger};
428
+ `;
429
+ }
430
+ return darkMode ? react.css`
431
+ background-color: ${colors.baseColors.grey1};
432
+ border: 1px solid ${colors.baseColors.grey4};
433
+ ` : react.css`
434
+ background-color: ${colors.baseColors.white1};
435
+ border: 1px solid ${colors.baseColors.grey7};
436
+ `;
437
+ }}
438
+ `;
297
439
  var Label = ({ className, htmlFor, children, ...rest }) => {
298
440
  return /* @__PURE__ */ jsxRuntime.jsx("label", { className, htmlFor, ...rest, children });
299
441
  };
@@ -302,7 +444,7 @@ var Textarea = ({ className, error, warning, ...rest }) => {
302
444
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTextarea, { className, error, warning, ...rest });
303
445
  };
304
446
  var Textarea_default = Textarea;
305
- var StyledTextarea = styled16__default.default.textarea`
447
+ var StyledTextarea = styled17__default.default.textarea`
306
448
  ${baseInputStyles}
307
449
  resize: vertical;
308
450
  min-height: 80px;
@@ -330,7 +472,7 @@ var Tab = ({
330
472
  );
331
473
  };
332
474
  var Tab_default = Tab;
333
- var StyledTab = styled16__default.default.div`
475
+ var StyledTab = styled17__default.default.div`
334
476
  display: inline-block;
335
477
  padding: 8px 16px;
336
478
  user-select: none;
@@ -351,7 +493,7 @@ var StyledTab = styled16__default.default.div`
351
493
  }
352
494
  `}
353
495
  `;
354
- var HelperText = styled16__default.default.div`
496
+ var HelperText = styled17__default.default.div`
355
497
  margin-top: 4px;
356
498
  font-size: ${typography.fontSize.xs}px;
357
499
  color: ${({ error, warning }) => {
@@ -391,7 +533,7 @@ function GroupBadge({ role, status, children }) {
391
533
  const displayText = status?.toLowerCase() === USER_STATUS.INVITED ? "Invited" : children;
392
534
  return /* @__PURE__ */ jsxRuntime.jsx(Badge, { badgeColor, children: displayText });
393
535
  }
394
- var Badge = styled16__default.default.div`
536
+ var Badge = styled17__default.default.div`
395
537
  display: inline-flex;
396
538
  padding: 8px 28px;
397
539
  border-radius: 100px;
@@ -426,7 +568,7 @@ function UserAvatar({
426
568
  return /* @__PURE__ */ jsxRuntime.jsx(ColourAvatar, { badgeColor, size, children: initials });
427
569
  }
428
570
  var UserAvatar_default = UserAvatar;
429
- var ColourAvatar = styled16__default.default.div`
571
+ var ColourAvatar = styled17__default.default.div`
430
572
  width: ${({ size }) => typeof size === "number" ? `${size}px` : size === "large" ? "56px" : "40px"};
431
573
  height: ${({ size }) => typeof size === "number" ? `${size}px` : size === "large" ? "56px" : "40px"};
432
574
  border-radius: 50%;
@@ -440,12 +582,12 @@ var ColourAvatar = styled16__default.default.div`
440
582
  font-weight: ${FONT_WEIGHTS.normal};
441
583
  flex-shrink: 0;
442
584
  `;
443
- var ProfileAvatar = styled16__default.default(ColourAvatar)`
585
+ var ProfileAvatar = styled17__default.default(ColourAvatar)`
444
586
  color: #fff;
445
587
  background: ${colors.gradients.gradient1};
446
588
  border: none;
447
589
  border-radius: 999px;
448
- line-height: 138%;
590
+ padding-top: 2px;
449
591
  margin-bottom: 12px;
450
592
  `;
451
593
  var FormField = ({
@@ -485,7 +627,7 @@ var FormField = ({
485
627
  displayText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error: hasError, warning: hasWarning, children: displayText })
486
628
  ] });
487
629
  };
488
- var FormFieldWrapper = styled16__default.default.div`
630
+ var FormFieldWrapper = styled17__default.default.div`
489
631
  display: flex;
490
632
  flex-direction: column;
491
633
 
@@ -533,7 +675,7 @@ var FormFieldTextarea = ({
533
675
  displayText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error: hasError, warning: hasWarning, children: displayText })
534
676
  ] });
535
677
  };
536
- var FormFieldWrapper2 = styled16__default.default.div`
678
+ var FormFieldWrapper2 = styled17__default.default.div`
537
679
  display: flex;
538
680
  flex-direction: column;
539
681
 
@@ -544,16 +686,16 @@ var FormFieldWrapper2 = styled16__default.default.div`
544
686
  }
545
687
  `;
546
688
  var FormFieldTextarea_default = FormFieldTextarea;
547
- var SearchContainer = styled16__default.default.div`
689
+ var SearchContainer = styled17__default.default.div`
548
690
  width: ${({ width }) => typeof width === "number" ? `${width}px` : width || "208px"};
549
691
  `;
550
- var InputWrapper = styled16__default.default.div`
692
+ var InputWrapper = styled17__default.default.div`
551
693
  position: relative;
552
694
  width: 100%;
553
695
  display: flex;
554
696
  align-items: center;
555
697
  `;
556
- var IconWrapper = styled16__default.default.div`
698
+ var IconWrapper = styled17__default.default.div`
557
699
  position: absolute;
558
700
  left: 17px;
559
701
  top: 50%;
@@ -565,7 +707,7 @@ var IconWrapper = styled16__default.default.div`
565
707
  pointer-events: none;
566
708
  z-index: 2;
567
709
  `;
568
- var StyledInput2 = styled16__default.default(Input_default)`
710
+ var StyledInput2 = styled17__default.default(Input_default)`
569
711
  width: 100%;
570
712
  padding-right: ${({ hasClearButton }) => hasClearButton ? "32px" : "17px"};
571
713
  padding-left: ${({ hasIcon }) => hasIcon ? "44px" : "17px"};
@@ -577,7 +719,7 @@ var StyledInput2 = styled16__default.default(Input_default)`
577
719
  padding-left: ${({ hasIcon }) => hasIcon ? "43px" : "16px"};
578
720
  }
579
721
  `;
580
- var ClearButton = styled16__default.default.button`
722
+ var ClearButton = styled17__default.default.button`
581
723
  position: absolute;
582
724
  right: 8px;
583
725
  top: 50%;
@@ -603,7 +745,7 @@ var ClearButton = styled16__default.default.button`
603
745
  border-radius: 4px;
604
746
  }
605
747
  `;
606
- var ClearIcon = styled16__default.default.svg`
748
+ var ClearIcon = styled17__default.default.svg`
607
749
  width: 16px;
608
750
  height: 16px;
609
751
  stroke-width: 2;
@@ -653,7 +795,7 @@ function TableElement({ children, ...rest }) {
653
795
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTable, { ...rest, children });
654
796
  }
655
797
  var Table_default = TableElement;
656
- var StyledTable = styled16__default.default.table`
798
+ var StyledTable = styled17__default.default.table`
657
799
  width: 100%;
658
800
  border-collapse: separate;
659
801
  border-spacing: 0 4px;
@@ -662,7 +804,7 @@ function TableHeader({ alignRight, children, ...rest }) {
662
804
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableHeader, { alignRight, ...rest, children });
663
805
  }
664
806
  var TableHeader_default = TableHeader;
665
- var StyledTableHeader = styled16__default.default.th`
807
+ var StyledTableHeader = styled17__default.default.th`
666
808
  padding-bottom: 12px;
667
809
  text-align: ${({ alignRight }) => alignRight ? "right" : "left"};
668
810
  font-size: ${FONT_SIZES.xs}px;
@@ -674,17 +816,17 @@ function TableCell({ children, colSpan, ...rest }) {
674
816
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableCell, { colSpan, ...rest, children });
675
817
  }
676
818
  var TableCell_default = TableCell;
677
- var StyledTableCell = styled16__default.default.td`
819
+ var StyledTableCell = styled17__default.default.td`
678
820
 
679
821
  `;
680
822
  function TableRow({ children, ...rest }) {
681
823
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTableRow, { ...rest, children });
682
824
  }
683
825
  var TableRow_default = TableRow;
684
- var StyledTableRow = styled16__default.default.tr`
826
+ var StyledTableRow = styled17__default.default.tr`
685
827
  /* Base row styling */
686
828
  `;
687
- var TableRowWrapper = styled16__default.default.div`
829
+ var TableRowWrapper = styled17__default.default.div`
688
830
  border-radius: 6px;
689
831
  border: 1px solid ${colors.baseColors.grey7};
690
832
  display: flex;
@@ -692,16 +834,16 @@ var TableRowWrapper = styled16__default.default.div`
692
834
  justify-content: space-between;
693
835
  padding: 12px 24px;
694
836
  `;
695
- var CheckboxWrapper = styled16__default.default.div`
837
+ var CheckboxWrapper2 = styled17__default.default.div`
696
838
  display: flex;
697
839
  align-items: center;
698
840
  `;
699
- var ActionsWrapper = styled16__default.default.div`
841
+ var ActionsWrapper = styled17__default.default.div`
700
842
  display: flex;
701
843
  align-items: center;
702
844
  justify-content: flex-end;
703
845
  `;
704
- var AlignedTableCell = styled16__default.default(TableCell_default)`
846
+ var AlignedTableCell = styled17__default.default(TableCell_default)`
705
847
  padding-top: 12px;
706
848
  padding-bottom: 12px;
707
849
  padding-left: ${({ alignRight }) => alignRight ? "0" : "24px"};
@@ -713,29 +855,29 @@ var AlignedTableCell = styled16__default.default(TableCell_default)`
713
855
  ${({ isFirst }) => isFirst && `border-top-left-radius: 6px; border-bottom-left-radius: 6px;`}
714
856
  ${({ isLast }) => isLast && `border-top-right-radius: 6px; border-bottom-right-radius: 6px;`}
715
857
  `;
716
- var CellContent = styled16__default.default.div`
858
+ var CellContent = styled17__default.default.div`
717
859
  display: flex;
718
860
  align-items: center;
719
861
  justify-content: ${({ alignRight }) => alignRight ? "flex-end" : "flex-start"};
720
862
  flex: ${({ alignRight }) => alignRight ? "0 0 auto" : "1"};
721
863
  min-width: 0;
722
864
  `;
723
- var TableWrapper = styled16__default.default.div`
865
+ var TableWrapper = styled17__default.default.div`
724
866
  margin-top: 32px;
725
867
  `;
726
- var EmptyState = styled16__default.default.div`
868
+ var EmptyState = styled17__default.default.div`
727
869
  padding: 24px;
728
870
  text-align: center;
729
871
  display: flex;
730
872
  flex-direction: column;
731
873
  gap: 8px;
732
874
  `;
733
- var EmptyHeader = styled16__default.default.div`
875
+ var EmptyHeader = styled17__default.default.div`
734
876
  font-size: 26px;
735
877
  font-weight: 700;
736
878
  color: ${colors.baseColors.darkBlue1};
737
879
  `;
738
- var EmptySubheader = styled16__default.default.div`
880
+ var EmptySubheader = styled17__default.default.div`
739
881
  font-size: 12px;
740
882
  font-weight: 500;
741
883
  color: ${colors.baseColors.grey3};
@@ -804,7 +946,7 @@ function Table({
804
946
  const isSelected = selectedRows.has(rowKey);
805
947
  if (rowLayout === "spaced") {
806
948
  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(
949
+ showCheckboxes && /* @__PURE__ */ jsxRuntime.jsx(CheckboxWrapper2, { children: /* @__PURE__ */ jsxRuntime.jsx(
808
950
  "input",
809
951
  {
810
952
  type: "checkbox",
@@ -847,6 +989,7 @@ var DataTable_default = Table;
847
989
 
848
990
  exports.Badge = Badge_default;
849
991
  exports.Button = Button_default;
992
+ exports.Checkbox = Checkbox_default;
850
993
  exports.FONT_SIZES = FONT_SIZES;
851
994
  exports.FONT_SIZE_KEYS = FONT_SIZE_KEYS;
852
995
  exports.FONT_WEIGHTS = FONT_WEIGHTS;