@lumen-stack/react 0.13.0 → 0.15.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/styles.css CHANGED
@@ -713,6 +713,24 @@
713
713
  border-radius: 24px;
714
714
  overflow: hidden;
715
715
  box-shadow: var(--lumen-shadow-lg);
716
+ transition: width 0.28s var(--lumen-ease), height 0.28s var(--lumen-ease),
717
+ border-radius 0.28s var(--lumen-ease);
718
+ }
719
+ /* Expanded: blow the centered column up to the full viewport for a much
720
+ larger annotation canvas. */
721
+ .lumen-modal[data-lumen-fs="true"][data-lumen-expanded="true"] {
722
+ top: 0;
723
+ left: 0;
724
+ transform: none;
725
+ width: 100vw;
726
+ height: 100dvh;
727
+ max-height: none;
728
+ border-radius: 0;
729
+ }
730
+ .lumen-modal[data-lumen-fs="true"][data-lumen-expanded="true"]
731
+ .lumen-annotate-frame
732
+ canvas {
733
+ max-height: calc(100dvh - 322px);
716
734
  }
717
735
  }
718
736
  .lumen-modal[data-lumen-fs="true"] .lumen-modal-grabber,
@@ -753,20 +771,42 @@
753
771
  .lumen-modal[data-lumen-fs="true"] .lumen-annotate {
754
772
  position: absolute;
755
773
  inset: 0;
756
- padding: calc(env(safe-area-inset-top, 0px) + 126px) 14px 192px;
774
+ /* Mobile: the capture takes (almost) the full height and the compose sheet
775
+ overlaps its lower edge — drag the grabber to push the sheet down and see
776
+ the rest. Desktop restores a full reserve below (landscape fits with a
777
+ gap, no overlap needed). */
778
+ padding: calc(env(safe-area-inset-top, 0px) + 126px) 14px
779
+ calc(env(safe-area-inset-bottom, 0px) + 20px);
757
780
  /* Theme-aware soft surround (harmonizes with the sheet — no harsh black):
758
781
  light → soft grey, dark → slightly lifted dark. */
759
782
  background: color-mix(in srgb, var(--lumen-fg) 8%, var(--lumen-bg));
760
783
  place-items: center;
761
784
  }
785
+ @media (min-width: 640px) {
786
+ .lumen-modal[data-lumen-fs="true"] .lumen-annotate { padding-bottom: 192px; }
787
+ }
762
788
  .lumen-modal[data-lumen-fs="true"] .lumen-annotate-frame {
763
789
  max-width: 100%;
764
790
  max-height: 100%;
765
791
  border-radius: var(--lumen-r-lg);
766
792
  box-shadow: 0 10px 36px -10px rgb(0 0 0 / 0.22), 0 0 0 0.5px rgb(0 0 0 / 0.07);
767
793
  }
794
+ /* Bound the canvas to the SAME available height as the frame — the modal
795
+ minus the top chrome (126px) and the bottom compose sheet (192px) — so a
796
+ tall screenshot scales down (object-fit: contain) instead of overflowing
797
+ the frame and getting clipped. Mobile = full-bleed modal (100dvh); desktop
798
+ = the centred 88vh column (capped at the 940px modal). */
768
799
  .lumen-modal[data-lumen-fs="true"] .lumen-annotate-frame canvas {
769
- max-height: calc(100dvh - 210px);
800
+ /* Mobile: nearly the full height — the sheet overlaps the lower edge. */
801
+ max-height: calc(
802
+ 100dvh - 154px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)
803
+ );
804
+ }
805
+ @media (min-width: 640px) {
806
+ .lumen-modal[data-lumen-fs="true"] .lumen-annotate-frame canvas {
807
+ /* Desktop: fit above the sheet (landscape captures, no overlap needed). */
808
+ max-height: min(calc(88vh - 322px), 618px);
809
+ }
770
810
  }
771
811
  /* floating top chrome: ✕ · method switch · Recapture (replaces the old
772
812
  method-switch + cap-actions in the fullscreen capture surface) */
@@ -914,7 +954,12 @@
914
954
  cursor: pointer;
915
955
  }
916
956
  .lumen-fs-chip svg { width: 15px; height: 15px; }
917
- .lumen-fs-x { width: 38px; padding: 0; justify-content: center; font-size: 15px; }
957
+ .lumen-fs-x { width: 38px; padding: 0; justify-content: center; font-size: 15px; margin-right: auto; }
958
+ /* Expand toggle: icon-only chip, sits with Recapture on the right. Desktop
959
+ only — mobile is already full-bleed. */
960
+ .lumen-fs-expand { width: 38px; padding: 0; justify-content: center; }
961
+ .lumen-fs-expand[aria-pressed="true"] { background: var(--lumen-accent); }
962
+ @media (max-width: 639px) { .lumen-fs-expand { display: none; } }
918
963
  .lumen-fs-mswitch {
919
964
  display: inline-flex;
920
965
  gap: 2px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumen-stack/react",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "React SDK for Lumen — screenshot capture, annotation, and feedback widget.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -39,7 +39,7 @@
39
39
  "react-dom": ">=18"
40
40
  },
41
41
  "dependencies": {
42
- "@lumen-stack/core": "^0.13.2",
42
+ "@lumen-stack/core": "^0.15.0",
43
43
  "html2canvas-pro": "^1.5.8",
44
44
  "sonner": "^1.7.1"
45
45
  },