@crewlethq/ui 0.33.0 → 0.34.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.
Files changed (70) hide show
  1. package/README.md +18 -0
  2. package/dist/ArtifactBar/index.js +6 -4
  3. package/dist/ArtifactCard/ArtifactCard.d.ts +51 -11
  4. package/dist/ArtifactCard/index.d.ts +2 -2
  5. package/dist/ArtifactCard/index.js +3 -1
  6. package/dist/ArtifactCard-XHRLAL7C.css +289 -0
  7. package/dist/ArtifactCover/index.js +4 -2
  8. package/dist/ArtifactIcon/index.js +4 -2
  9. package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +53 -0
  10. package/dist/ArtifactKindIllustration/index.d.ts +3 -0
  11. package/dist/ArtifactKindIllustration/index.js +3 -0
  12. package/dist/ArtifactKindIllustration-4NG6IE3C.css +211 -0
  13. package/dist/Canvas/index.js +2 -2
  14. package/dist/CanvasBoard/index.js +4 -4
  15. package/dist/CanvasToolbar/index.js +3 -3
  16. package/dist/ChangeMark/index.js +3 -3
  17. package/dist/FactList/index.js +2 -2
  18. package/dist/LivePreview/LivePreview.d.ts +83 -0
  19. package/dist/LivePreview/budget.d.ts +50 -0
  20. package/dist/LivePreview/index.d.ts +5 -0
  21. package/dist/LivePreview/index.js +2 -0
  22. package/dist/LivePreview-SRO7KHO4.css +65 -0
  23. package/dist/OrgTable/index.js +1 -1
  24. package/dist/RichEditor/index.js +2 -2
  25. package/dist/SandboxedFrame/index.js +2 -2
  26. package/dist/Select/Select.d.ts +10 -0
  27. package/dist/Select/index.d.ts +1 -1
  28. package/dist/Select/index.js +1 -1
  29. package/dist/{Select-2P7AWUE4.css → Select-A54YS5EP.css} +29 -0
  30. package/dist/ShareDialog/index.js +2 -2
  31. package/dist/SheetGrid/SheetGrid.d.ts +4 -2
  32. package/dist/SheetGrid/index.js +4 -4
  33. package/dist/{SheetGrid-AKPUCK67.css → SheetGrid-GDPCCZ4V.css} +52 -11
  34. package/dist/SheetModel/index.js +1 -1
  35. package/dist/SheetModel/labels.d.ts +1 -1
  36. package/dist/Switcher/index.js +2 -2
  37. package/dist/TimeWindowPicker/index.js +2 -2
  38. package/dist/Tooltip/Tooltip.d.ts +12 -1
  39. package/dist/Tooltip/index.d.ts +1 -1
  40. package/dist/Tooltip/index.js +1 -1
  41. package/dist/TreeCanvas/index.js +3 -3
  42. package/dist/{chunk-22UEIXZE.js → chunk-3P4Y5RX6.js} +1 -1
  43. package/dist/{chunk-GLSOD5Z4.js → chunk-3Y56GQPM.js} +1 -1
  44. package/dist/{chunk-5FYPE5GL.js → chunk-6ZJ3N7QI.js} +5 -2
  45. package/dist/{chunk-2DHMVB5J.js → chunk-AORVEG5V.js} +1 -1
  46. package/dist/{chunk-UQGFHNDI.js → chunk-BQ7AKL2N.js} +3 -2
  47. package/dist/{chunk-ORT5IKHP.js → chunk-CCLNGVCM.js} +1 -1
  48. package/dist/{chunk-UNXLTJU7.js → chunk-CFAJP777.js} +1 -1
  49. package/dist/{chunk-G4ZW7A2W.js → chunk-EWAFN2IU.js} +33 -34
  50. package/dist/{chunk-7WHDPLVJ.js → chunk-HOIZ6MIS.js} +1 -1
  51. package/dist/{chunk-Z6GFMI2Z.js → chunk-IUD5VA2Z.js} +2 -2
  52. package/dist/chunk-KF6YGL4B.js +160 -0
  53. package/dist/{chunk-HH2GKAAE.js → chunk-PLDUNXAO.js} +1 -1
  54. package/dist/{chunk-ZNBLFCQS.js → chunk-SGHIAGPR.js} +2 -2
  55. package/dist/chunk-UDQW6UK7.js +129 -0
  56. package/dist/{chunk-4IJS5CPF.js → chunk-UHJQDFKQ.js} +1 -1
  57. package/dist/{chunk-J6ZSH3F5.js → chunk-VI5FWDZW.js} +2 -2
  58. package/dist/{chunk-MDNVHIB2.js → chunk-WPX6A5BV.js} +2 -2
  59. package/dist/chunk-XTOVADJU.js +170 -0
  60. package/dist/generated/index.d.ts +2 -0
  61. package/dist/generated/index.js +47 -45
  62. package/dist/index.js +47 -45
  63. package/dist/styles.css +544 -27
  64. package/package.json +3 -3
  65. package/dist/ArtifactCard-AS5Z4CVI.css +0 -124
  66. package/dist/chunk-DFZMYB5X.js +0 -108
  67. package/dist/{chunk-3U7S6ZUN.js → chunk-356JNSER.js} +1 -1
  68. package/dist/{chunk-MTMKIUWF.js → chunk-E4NNGC6X.js} +1 -1
  69. package/dist/{chunk-O37AQNLK.js → chunk-GMU6SQ6B.js} +1 -1
  70. /package/dist/{chunk-2JJIN6JN.js → chunk-YCARLYI6.js} +0 -0
package/dist/styles.css CHANGED
@@ -2414,11 +2414,12 @@ button.crewlet-account-row__who:focus-visible {
2414
2414
  }
2415
2415
 
2416
2416
 
2417
- /* ArtifactCard-AS5Z4CVI.css */
2417
+ /* ArtifactCard-XHRLAL7C.css */
2418
2418
  /*
2419
2419
  * A card in a gallery: the preview on top at a fixed ratio, so a grid of them
2420
- * lines up whatever each preview is, then the title and up to three lines of
2421
- * facts. `compact` is a row with the kind's glyph in place of the preview.
2420
+ * lines up whatever each preview is, the kind's badge over its foot, then the
2421
+ * title and one quiet line. `compact` is a row with the kind's glyph in place
2422
+ * of the preview, drawn on Card.
2422
2423
  */
2423
2424
 
2424
2425
  /*
@@ -2444,17 +2445,6 @@ button.crewlet-account-row__who:focus-visible {
2444
2445
  padding: var(--spacing-3);
2445
2446
  }
2446
2447
 
2447
- .crewlet-artifact-card__preview {
2448
- display: flex;
2449
- align-items: center;
2450
- justify-content: center;
2451
- aspect-ratio: 16 / 9;
2452
- overflow: hidden;
2453
- border-bottom: 1px solid var(--color-border-default);
2454
- background: var(--color-surface-inset);
2455
- color: var(--color-text-tertiary);
2456
- }
2457
-
2458
2448
  .crewlet-artifact-card__glyph {
2459
2449
  display: inline-flex;
2460
2450
  color: var(--color-text-tertiary);
@@ -2540,6 +2530,181 @@ button.crewlet-account-row__who:focus-visible {
2540
2530
  font-weight: var(--font-weight-medium);
2541
2531
  }
2542
2532
 
2533
+ /* ---- the gallery card ---- */
2534
+
2535
+ /*
2536
+ * A SOFT PANE WITH A GENEROUS CORNER. The card is the card rung with its
2537
+ * hairline, rounded a step past a plain card's because the preview inside it
2538
+ * is a picture, and a picture in a tight corner reads as a screenshot pasted
2539
+ * into a box. Hover lifts the edge and the shadow, never the colour.
2540
+ */
2541
+ .crewlet-artifact-card--card {
2542
+ position: relative;
2543
+ display: flex;
2544
+ flex-direction: column;
2545
+ min-width: 0;
2546
+ border: 1px solid var(--color-border-default);
2547
+ border-radius: var(--radius-xl);
2548
+ background: var(--color-surface-subtle);
2549
+ transition:
2550
+ border-color var(--motion-duration-base) var(--motion-easing-out),
2551
+ box-shadow var(--motion-duration-base) var(--motion-easing-out),
2552
+ transform var(--motion-duration-base) var(--motion-easing-out);
2553
+ }
2554
+
2555
+ .crewlet-artifact-card--card:hover {
2556
+ border-color: var(--color-border-hover);
2557
+ box-shadow: var(--shadow-card);
2558
+ transform: translateY(-1px);
2559
+ }
2560
+
2561
+ .crewlet-artifact-card--card:has(.crewlet-artifact-card__link:focus-visible) {
2562
+ outline: 2px solid var(--color-focus);
2563
+ outline-offset: var(--size-focus-ring-inset-offset);
2564
+ }
2565
+
2566
+ .crewlet-artifact-card__link {
2567
+ display: flex;
2568
+ flex-direction: column;
2569
+ min-width: 0;
2570
+ border-radius: inherit;
2571
+ color: inherit;
2572
+ text-decoration: none;
2573
+ outline: none;
2574
+ }
2575
+
2576
+ .crewlet-artifact-card__preview {
2577
+ position: relative;
2578
+ display: flex;
2579
+ aspect-ratio: 16 / 9;
2580
+ overflow: hidden;
2581
+ border-bottom: 1px solid var(--color-border-default);
2582
+ border-radius: var(--radius-xl) var(--radius-xl) 0 0;
2583
+ background: var(--color-surface-inset);
2584
+ }
2585
+
2586
+ .crewlet-artifact-card__preview > * {
2587
+ flex: 1 1 auto;
2588
+ min-width: 0;
2589
+ }
2590
+
2591
+ .crewlet-artifact-card--trashed .crewlet-artifact-card__preview > * {
2592
+ opacity: 0.5;
2593
+ filter: grayscale(1);
2594
+ }
2595
+
2596
+ .crewlet-artifact-card--card .crewlet-artifact-card__body {
2597
+ gap: var(--spacing-1);
2598
+ padding: 0 var(--spacing-5) var(--spacing-5);
2599
+ }
2600
+
2601
+ /*
2602
+ * THE KIND'S BADGE STANDS ON THE PREVIEW'S FOOT, half over the picture and
2603
+ * half over the card, the glyph in the kind's ink: what the artifact is, read
2604
+ * before its title, in the one place every card has it.
2605
+ */
2606
+ .crewlet-artifact-card__badge {
2607
+ position: relative;
2608
+ display: inline-flex;
2609
+ flex: none;
2610
+ align-items: center;
2611
+ justify-content: center;
2612
+ align-self: flex-start;
2613
+ width: 40px;
2614
+ height: 40px;
2615
+ margin-top: -22px;
2616
+ margin-bottom: var(--spacing-2);
2617
+ border: 1px solid var(--color-border-default);
2618
+ border-radius: var(--radius-lg);
2619
+ background: var(--color-surface-background);
2620
+ box-shadow: var(--shadow-sm);
2621
+ color: var(--crewlet-kind-ink, var(--color-text-secondary));
2622
+ }
2623
+
2624
+ .crewlet-artifact-card--card .crewlet-artifact-card__title {
2625
+ font-size: var(--font-size-lg);
2626
+ font-weight: var(--font-weight-medium);
2627
+ line-height: 1.35;
2628
+ }
2629
+
2630
+ .crewlet-artifact-card--card .crewlet-artifact-card__facts {
2631
+ font-size: var(--font-size-sm);
2632
+ }
2633
+
2634
+ .crewlet-artifact-card__meta {
2635
+ flex-wrap: nowrap;
2636
+ white-space: nowrap;
2637
+ }
2638
+
2639
+ .crewlet-artifact-card__access {
2640
+ display: inline-flex;
2641
+ flex: none;
2642
+ align-items: center;
2643
+ }
2644
+
2645
+ .crewlet-artifact-card__meta > .crewlet-artifact-card__owner {
2646
+ flex: 0 1 auto;
2647
+ overflow: hidden;
2648
+ }
2649
+
2650
+ .crewlet-artifact-card__owner-name {
2651
+ overflow: hidden;
2652
+ text-overflow: ellipsis;
2653
+ }
2654
+
2655
+ .crewlet-artifact-card__meta > :last-child {
2656
+ flex: none;
2657
+ }
2658
+
2659
+ /*
2660
+ * THE CARD'S OWN CONTROLS, over the preview's top corner and outside the
2661
+ * link: hidden until the card is hovered or holds focus, so a gallery rests
2662
+ * as pictures, and always there on a screen with no hover.
2663
+ */
2664
+ .crewlet-artifact-card__actions {
2665
+ position: absolute;
2666
+ top: var(--spacing-3);
2667
+ right: var(--spacing-3);
2668
+ display: inline-flex;
2669
+ gap: var(--spacing-1);
2670
+ border-radius: var(--radius-md);
2671
+ background: var(--color-surface-background);
2672
+ box-shadow: var(--shadow-sm);
2673
+ opacity: 0;
2674
+ transition: opacity var(--motion-duration-fast) var(--motion-easing-out);
2675
+ }
2676
+
2677
+ .crewlet-artifact-card--card:hover .crewlet-artifact-card__actions,
2678
+ .crewlet-artifact-card--card:focus-within .crewlet-artifact-card__actions,
2679
+ .crewlet-artifact-card__actions:has([aria-expanded='true']) {
2680
+ opacity: 1;
2681
+ }
2682
+
2683
+ @media (hover: none) {
2684
+ .crewlet-artifact-card__actions {
2685
+ opacity: 1;
2686
+ }
2687
+ }
2688
+
2689
+ @media (prefers-reduced-motion: reduce) {
2690
+ .crewlet-artifact-card--card,
2691
+ .crewlet-artifact-card__actions {
2692
+ transition: none;
2693
+ }
2694
+
2695
+ .crewlet-artifact-card--card:hover {
2696
+ transform: none;
2697
+ }
2698
+ }
2699
+
2700
+ .crewlet-artifact-card--skeleton {
2701
+ pointer-events: none;
2702
+ }
2703
+
2704
+ .crewlet-artifact-card--skeleton .crewlet-artifact-card__badge {
2705
+ box-shadow: none;
2706
+ }
2707
+
2543
2708
 
2544
2709
  /* ArtifactCover-D4MBEJ5H.css */
2545
2710
  /* The frame every native cover shares (DocCover, SheetCover, DashboardCover):
@@ -2611,6 +2776,220 @@ button.crewlet-account-row__who:focus-visible {
2611
2776
  }
2612
2777
 
2613
2778
 
2779
+ /* ArtifactKindIllustration-4NG6IE3C.css */
2780
+ /*
2781
+ * A kind's drawing, its tinted ground and the Make something new tile.
2782
+ *
2783
+ * Every colour is the kind's token, `--color-artifact-kind-<kind>` and its
2784
+ * Fill and Line steps, set once per kind on `--crewlet-kind-*` and read by
2785
+ * every rule below, so the drawing, the ground and the tile repaint together
2786
+ * with the theme.
2787
+ */
2788
+
2789
+ .crewlet-kind--doc { --crewlet-kind-hue: var(--color-artifact-kind-doc); --crewlet-kind-fill: var(--color-artifact-kind-doc-fill); --crewlet-kind-line: var(--color-artifact-kind-doc-line); --crewlet-kind-ink: var(--color-artifact-kind-doc-ink); }
2790
+ .crewlet-kind--slides { --crewlet-kind-hue: var(--color-artifact-kind-slides); --crewlet-kind-fill: var(--color-artifact-kind-slides-fill); --crewlet-kind-line: var(--color-artifact-kind-slides-line); --crewlet-kind-ink: var(--color-artifact-kind-slides-ink); }
2791
+ .crewlet-kind--design { --crewlet-kind-hue: var(--color-artifact-kind-design); --crewlet-kind-fill: var(--color-artifact-kind-design-fill); --crewlet-kind-line: var(--color-artifact-kind-design-line); --crewlet-kind-ink: var(--color-artifact-kind-design-ink); }
2792
+ .crewlet-kind--dashboard { --crewlet-kind-hue: var(--color-artifact-kind-dashboard); --crewlet-kind-fill: var(--color-artifact-kind-dashboard-fill); --crewlet-kind-line: var(--color-artifact-kind-dashboard-line); --crewlet-kind-ink: var(--color-artifact-kind-dashboard-ink); }
2793
+ .crewlet-kind--html { --crewlet-kind-hue: var(--color-artifact-kind-html); --crewlet-kind-fill: var(--color-artifact-kind-html-fill); --crewlet-kind-line: var(--color-artifact-kind-html-line); --crewlet-kind-ink: var(--color-artifact-kind-html-ink); }
2794
+ .crewlet-kind--sheet { --crewlet-kind-hue: var(--color-artifact-kind-sheet); --crewlet-kind-fill: var(--color-artifact-kind-sheet-fill); --crewlet-kind-line: var(--color-artifact-kind-sheet-line); --crewlet-kind-ink: var(--color-artifact-kind-sheet-ink); }
2795
+
2796
+ /* ---- the drawing ---- */
2797
+
2798
+ .crewlet-kind-illustration {
2799
+ display: block;
2800
+ width: 100%;
2801
+ height: 100%;
2802
+ overflow: visible;
2803
+ }
2804
+
2805
+ /* THE FOUR WEIGHTS, each the kind's hue at a fixed opacity: the body is a
2806
+ translucent pane with a hairline edge, lines are content, a soft block is
2807
+ a picture or a bar, and the mark is the one solid thing the eye lands on. */
2808
+ .crewlet-kind-illustration .b {
2809
+ fill: var(--crewlet-kind-hue);
2810
+ fill-opacity: 0.14;
2811
+ stroke: var(--crewlet-kind-hue);
2812
+ stroke-opacity: 0.5;
2813
+ stroke-width: 1.5;
2814
+ }
2815
+
2816
+ .crewlet-kind-illustration .l {
2817
+ fill: var(--crewlet-kind-hue);
2818
+ fill-opacity: 0.45;
2819
+ }
2820
+
2821
+ .crewlet-kind-illustration .s {
2822
+ fill: var(--crewlet-kind-hue);
2823
+ fill-opacity: 0.62;
2824
+ }
2825
+
2826
+ .crewlet-kind-illustration .m {
2827
+ fill: var(--crewlet-kind-hue);
2828
+ }
2829
+
2830
+ /* A rule across the body (a window's bar, a grid's lines). */
2831
+ .crewlet-kind-illustration .r {
2832
+ fill: none;
2833
+ stroke: var(--crewlet-kind-hue);
2834
+ stroke-opacity: 0.3;
2835
+ stroke-width: 1.5;
2836
+ }
2837
+
2838
+ /* A stroke drawn as a glyph: the angle brackets of a page of code. */
2839
+ .crewlet-kind-illustration .k {
2840
+ fill: none;
2841
+ stroke: var(--crewlet-kind-hue);
2842
+ stroke-linecap: round;
2843
+ stroke-linejoin: round;
2844
+ stroke-width: 5;
2845
+ }
2846
+
2847
+ .crewlet-kind-illustration .k--soft {
2848
+ stroke-opacity: 0.55;
2849
+ }
2850
+
2851
+ /* Cut out of a solid mark in the ground's colour: a checkbox's tick. */
2852
+ .crewlet-kind-illustration .c {
2853
+ fill: none;
2854
+ stroke: var(--color-surface-background);
2855
+ stroke-linecap: round;
2856
+ stroke-linejoin: round;
2857
+ stroke-width: 1.4;
2858
+ }
2859
+
2860
+ .crewlet-kind-illustration .c--fill {
2861
+ fill: var(--crewlet-kind-hue);
2862
+ fill-opacity: 0.4;
2863
+ stroke: none;
2864
+ }
2865
+
2866
+ /* ---- the ground ---- */
2867
+
2868
+ /*
2869
+ * THE KIND'S FILL OVER THE CARD, brightest at the top and settling into the
2870
+ * card at the foot, the way light falls on a tinted pane: a flat fill read as
2871
+ * a coloured box, and a hue strong enough to read on its own fought the
2872
+ * previews beside it.
2873
+ */
2874
+ .crewlet-kind-ground {
2875
+ display: flex;
2876
+ align-items: center;
2877
+ justify-content: center;
2878
+ box-sizing: border-box;
2879
+ width: 100%;
2880
+ height: 100%;
2881
+ padding: 8% 10%;
2882
+ background:
2883
+ linear-gradient(180deg, var(--crewlet-kind-fill) 0%, transparent 115%),
2884
+ var(--color-surface-subtle);
2885
+ }
2886
+
2887
+ .crewlet-kind-ground > .crewlet-kind-illustration {
2888
+ max-width: 12rem;
2889
+ max-height: 100%;
2890
+ }
2891
+
2892
+ /* ---- the tile ---- */
2893
+
2894
+ .crewlet-kind-tile {
2895
+ display: flex;
2896
+ flex-direction: column;
2897
+ gap: var(--spacing-2);
2898
+ min-width: 0;
2899
+ color: var(--color-text-primary);
2900
+ text-decoration: none;
2901
+ outline: none;
2902
+ }
2903
+
2904
+ /*
2905
+ * A FRAME AROUND A PANE: the tile is a hairline ring with the tinted ground
2906
+ * set inside it a few pixels in, one radius step tighter, so the pane reads
2907
+ * as sitting in a holder rather than as a coloured rectangle.
2908
+ */
2909
+ .crewlet-kind-tile__frame {
2910
+ display: block;
2911
+ box-sizing: border-box;
2912
+ aspect-ratio: 4 / 3;
2913
+ padding: 5px;
2914
+ border: 1px solid var(--color-border-default);
2915
+ border-radius: var(--radius-2xl);
2916
+ background: var(--color-surface-subtle);
2917
+ transition:
2918
+ border-color var(--motion-duration-base) var(--motion-easing-out),
2919
+ box-shadow var(--motion-duration-base) var(--motion-easing-out);
2920
+ }
2921
+
2922
+ .crewlet-kind-tile__ground {
2923
+ border-radius: var(--radius-xl);
2924
+ box-shadow: inset 0 0 0 1px var(--crewlet-kind-line);
2925
+ overflow: hidden;
2926
+ }
2927
+
2928
+ .crewlet-kind-tile__ground > .crewlet-kind-illustration {
2929
+ transition: transform var(--motion-duration-base) var(--motion-easing-out);
2930
+ }
2931
+
2932
+ .crewlet-kind-tile__label {
2933
+ display: flex;
2934
+ align-items: center;
2935
+ gap: var(--spacing-2);
2936
+ min-width: 0;
2937
+ padding-inline: var(--spacing-1);
2938
+ }
2939
+
2940
+ .crewlet-kind-tile__name {
2941
+ overflow: hidden;
2942
+ font-size: var(--font-size-md);
2943
+ font-weight: var(--font-weight-medium);
2944
+ line-height: 1.3;
2945
+ text-overflow: ellipsis;
2946
+ white-space: nowrap;
2947
+ }
2948
+
2949
+ .crewlet-kind-tile__badge {
2950
+ flex: none;
2951
+ padding: 1px var(--spacing-2);
2952
+ border-radius: var(--radius-sm);
2953
+ background: var(--crewlet-kind-fill);
2954
+ color: var(--color-text-secondary);
2955
+ font-size: var(--font-size-xs);
2956
+ font-weight: var(--font-weight-medium);
2957
+ }
2958
+
2959
+ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame {
2960
+ border-color: var(--color-border-hover);
2961
+ }
2962
+
2963
+ a.crewlet-kind-tile:hover .crewlet-kind-tile__ground > .crewlet-kind-illustration {
2964
+ transform: translateY(-2px) scale(1.03);
2965
+ }
2966
+
2967
+ .crewlet-kind-tile:focus-visible .crewlet-kind-tile__frame {
2968
+ outline: 2px solid var(--color-focus);
2969
+ outline-offset: var(--size-focus-ring-inset-offset);
2970
+ }
2971
+
2972
+ .crewlet-kind-tile--disabled {
2973
+ cursor: not-allowed;
2974
+ }
2975
+
2976
+ .crewlet-kind-tile--disabled .crewlet-kind-tile__ground,
2977
+ .crewlet-kind-tile--disabled .crewlet-kind-tile__name {
2978
+ opacity: 0.55;
2979
+ }
2980
+
2981
+ @media (prefers-reduced-motion: reduce) {
2982
+ .crewlet-kind-tile__frame,
2983
+ .crewlet-kind-tile__ground > .crewlet-kind-illustration {
2984
+ transition: none;
2985
+ }
2986
+
2987
+ a.crewlet-kind-tile:hover .crewlet-kind-tile__ground > .crewlet-kind-illustration {
2988
+ transform: none;
2989
+ }
2990
+ }
2991
+
2992
+
2614
2993
  /* ArtifactPanel-HW3SU7CP.css */
2615
2994
  /*
2616
2995
  * The workspace is a row: the artifact's body, then at most one panel. The
@@ -15482,6 +15861,74 @@ svg.crewlet-datetime__chevron {
15482
15861
  }
15483
15862
 
15484
15863
 
15864
+ /* LivePreview-SRO7KHO4.css */
15865
+ /*
15866
+ * A live preview: the stand-in and the live layer stacked in one box. The box
15867
+ * takes its size from its parent (a card's preview area), so it fills it and
15868
+ * clips whatever the content lays out past its edge.
15869
+ */
15870
+
15871
+ .crewlet-live-preview {
15872
+ position: relative;
15873
+ display: block;
15874
+ width: 100%;
15875
+ height: 100%;
15876
+ overflow: hidden;
15877
+ contain: layout paint;
15878
+ }
15879
+
15880
+ .crewlet-live-preview__fallback {
15881
+ position: absolute;
15882
+ inset: 0;
15883
+ display: flex;
15884
+ transition: opacity var(--motion-duration-base) var(--motion-easing-out);
15885
+ }
15886
+
15887
+ .crewlet-live-preview__live {
15888
+ position: absolute;
15889
+ inset: 0;
15890
+ display: block;
15891
+ overflow: hidden;
15892
+ opacity: 0;
15893
+ pointer-events: none;
15894
+ user-select: none;
15895
+ transition: opacity var(--motion-duration-base) var(--motion-easing-out);
15896
+ }
15897
+
15898
+ /* LAID OUT AT ITS OWN SIZE from the top left corner, and scaled from there:
15899
+ to the box's width, its top left the box's, or whole and centred. */
15900
+ .crewlet-preview-scale {
15901
+ position: absolute;
15902
+ inset: 0;
15903
+ display: block;
15904
+ overflow: hidden;
15905
+ }
15906
+
15907
+ .crewlet-preview-scale__layer {
15908
+ position: absolute;
15909
+ top: 0;
15910
+ left: 0;
15911
+ display: block;
15912
+ overflow: hidden;
15913
+ transform-origin: 0 0;
15914
+ }
15915
+
15916
+ .crewlet-live-preview[data-state='ready'] > .crewlet-live-preview__live {
15917
+ opacity: 1;
15918
+ }
15919
+
15920
+ .crewlet-live-preview[data-state='ready'] > .crewlet-live-preview__fallback {
15921
+ opacity: 0;
15922
+ }
15923
+
15924
+ @media (prefers-reduced-motion: reduce) {
15925
+ .crewlet-live-preview__fallback,
15926
+ .crewlet-live-preview__live {
15927
+ transition: none;
15928
+ }
15929
+ }
15930
+
15931
+
15485
15932
  /* MarkdownEditor-WOKV7CLK.css */
15486
15933
  /*
15487
15934
  * Writing markdown (MarkdownEditor.tsx): the bar, the source or its preview,
@@ -20656,7 +21103,7 @@ button.crewlet-presence-stack__member:focus-visible {
20656
21103
  }
20657
21104
 
20658
21105
 
20659
- /* Select-2P7AWUE4.css */
21106
+ /* Select-A54YS5EP.css */
20660
21107
  /*
20661
21108
  * Select: one chrome over two controls, and the product's only dropdown.
20662
21109
  *
@@ -20756,6 +21203,35 @@ button.crewlet-presence-stack__member:focus-visible {
20756
21203
  border-color: var(--color-feedback-danger);
20757
21204
  }
20758
21205
 
21206
+ /*
21207
+ * QUIET: no boundary and no fill at rest, the hover overlay under the
21208
+ * pointer, and the ring on focus as every field draws it. It sizes to its
21209
+ * answer with no floor, since a quiet picker in a toolbar reads as its words.
21210
+ * A quiet filter that is on takes the accent's soft fill under its accent ink,
21211
+ * so "this narrows the list" still shows without a box around it.
21212
+ */
21213
+ .crewlet-select--quiet {
21214
+ --crewlet-select-auto-min-width: 0px;
21215
+
21216
+ border-color: transparent;
21217
+ background-color: transparent;
21218
+ }
21219
+
21220
+ .crewlet-select--quiet:hover {
21221
+ border-color: transparent;
21222
+ background-color: var(--color-surface-hover);
21223
+ }
21224
+
21225
+ .crewlet-select--quiet.is-open {
21226
+ background-color: var(--color-surface-hover);
21227
+ }
21228
+
21229
+ .crewlet-select--quiet.is-active,
21230
+ .crewlet-select--quiet.is-active:hover {
21231
+ border-color: transparent;
21232
+ background-color: var(--color-brand-accent-soft);
21233
+ }
21234
+
20759
21235
  /* A refused picker keeps its colour while the reader is in it: the ring
20760
21236
  covers the boundary, so a focus-coloured one would paint out the refusal.
20761
21237
  See Input.css. */
@@ -21254,7 +21730,7 @@ svg.crewlet-select__chevron {
21254
21730
  }
21255
21731
 
21256
21732
 
21257
- /* SheetGrid-AKPUCK67.css */
21733
+ /* SheetGrid-GDPCCZ4V.css */
21258
21734
  /*
21259
21735
  * The editable sheet (SheetGrid.tsx) and its cells (cells.tsx).
21260
21736
  *
@@ -21451,25 +21927,56 @@ svg.crewlet-select__chevron {
21451
21927
  box-shadow: 0 0 0 2px var(--crewlet-presence-hue);
21452
21928
  }
21453
21929
 
21930
+ /* THE GUTTER: one centred stack, so the number and the row's actions button
21931
+ take exactly the same place and swapping one for the other moves nothing.
21932
+ Its width is the component's fixed track (SHEET_ROW_NUMBER_WIDTH), which
21933
+ holds five tabular digits, so row 9 and row 10000 stand in one column. */
21454
21934
  .crewlet-sheet-grid__rownum {
21935
+ display: grid;
21936
+ grid-template-areas: 'gutter';
21937
+ place-items: center;
21455
21938
  color: var(--color-text-tertiary);
21456
21939
  font-size: var(--font-size-xs);
21457
21940
  font-variant-numeric: tabular-nums;
21458
21941
  }
21459
21942
 
21460
- /* The row actions sit at the number's trailing edge, over the cell's own
21461
- background, so the number stays readable beside them. */
21943
+ .crewlet-sheet-grid__rownum-number,
21944
+ .crewlet-sheet-grid__row-actions {
21945
+ grid-area: gutter;
21946
+ }
21947
+
21948
+ /* THE ACTIONS BUTTON IS ALWAYS THERE, drawn clear until it is wanted, so a
21949
+ tap on the number opens the row's menu on a screen with no pointer to
21950
+ hover with. It shows, and the number gives way to it, under the pointer,
21951
+ on the row holding focus (the active cell, or the button itself) and while
21952
+ its menu is open. A row the reader has not entered keeps its number. */
21462
21953
  .crewlet-sheet-grid__row-actions {
21463
- position: absolute;
21464
- top: 50%;
21465
- inset-inline-end: 0;
21466
21954
  display: inline-flex;
21467
- transform: translateY(-50%);
21955
+ opacity: 0;
21956
+ }
21957
+
21958
+ .crewlet-sheet-grid__row:is(:hover, :focus-within) > .crewlet-sheet-grid__rownum > .crewlet-sheet-grid__row-actions,
21959
+ .crewlet-sheet-grid__rownum--open > .crewlet-sheet-grid__row-actions {
21960
+ opacity: 1;
21468
21961
  }
21469
21962
 
21470
- /* The active row's actions and the active cell's history are the reader's
21471
- tools while they are in the grid, not marks on a sheet nobody has entered. */
21472
- .crewlet-sheet-grid__grid:not(:focus-within) .crewlet-sheet-grid__row-actions--active-row,
21963
+ .crewlet-sheet-grid__row:is(:hover, :focus-within) > .crewlet-sheet-grid__rownum--actions > .crewlet-sheet-grid__rownum-number,
21964
+ .crewlet-sheet-grid__rownum--open > .crewlet-sheet-grid__rownum-number {
21965
+ visibility: hidden;
21966
+ }
21967
+
21968
+ /* THE SELECTED ROWS' NUMBERS are marked as their cells are, and on the same
21969
+ condition (the reader is in the grid, or the selection spans more than one
21970
+ cell), the way a spreadsheet lights the row headers of a selection. The
21971
+ tint is laid over the gutter's own ground, which a sticky gutter needs: a
21972
+ translucent tint alone lets the values scrolling under it show through. */
21973
+ .crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__rownum--selected {
21974
+ background: linear-gradient(var(--color-brand-accent-soft), var(--color-brand-accent-soft)) var(--color-surface-background);
21975
+ color: var(--color-brand-accent-ink);
21976
+ }
21977
+
21978
+ /* The active cell's history is the reader's tool while they are in the grid,
21979
+ not a mark on a sheet nobody has entered. */
21473
21980
  .crewlet-sheet-grid__grid:not(:focus-within) .crewlet-sheet-grid__cell--history:not(:hover) > .crewlet-sheet-grid__history {
21474
21981
  visibility: hidden;
21475
21982
  }
@@ -21512,9 +22019,11 @@ svg.crewlet-select__chevron {
21512
22019
  /* THE SELECTION IS TINTED WHILE THE READER IS IN THE GRID, or while it
21513
22020
  spans more than one cell. A grid nobody has entered still holds its first
21514
22021
  cell as the active one (the keys start there), and tinting it drew a stray
21515
- highlight on every sheet as it opened. */
22022
+ highlight on every sheet as it opened. The tint is laid over the cell's
22023
+ own ground: alone, a translucent tint on a frozen cell let the values
22024
+ scrolling under it show through. */
21516
22025
  .crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__cell--selected {
21517
- background: var(--color-brand-accent-soft);
22026
+ background: linear-gradient(var(--color-brand-accent-soft), var(--color-brand-accent-soft)) var(--color-surface-background);
21518
22027
  }
21519
22028
 
21520
22029
  /* THE FROZEN EDGE once the grid is scrolled sideways: the columns that stay
@@ -22015,6 +22524,14 @@ svg.crewlet-select__chevron {
22015
22524
  color: HighlightText;
22016
22525
  }
22017
22526
 
22527
+ /* A selected row's number takes the selection's ink on the page's ground:
22528
+ on a Highlight ground the browser's backplate behind the digits drew
22529
+ them as a solid block. */
22530
+ .crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__rownum--selected {
22531
+ background: Canvas;
22532
+ color: Highlight;
22533
+ }
22534
+
22018
22535
  .crewlet-sheet-grid__rownum--present::before {
22019
22536
  background: Highlight;
22020
22537
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.33.0",
3
+ "version": "0.34.1",
4
4
  "description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -42,8 +42,8 @@
42
42
  "clean": "rm -rf dist src/generated"
43
43
  },
44
44
  "dependencies": {
45
- "@crewlethq/icons": "0.33.0",
46
- "@crewlethq/tokens": "0.33.0",
45
+ "@crewlethq/icons": "0.34.1",
46
+ "@crewlethq/tokens": "0.34.1",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",