@leavepulse/ui 0.45.1 → 0.47.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.
Files changed (125) hide show
  1. package/dist/assets/HighlightText-BwC5xbqn.css +6 -0
  2. package/dist/assets/{LpCommandPalette-HzAA4gri.css → LpCommandPalette-DmQUsJqA.css} +21 -21
  3. package/dist/assets/{LpDropzone-i4BdMi1H.css → LpDropzone-Ev6X03zj.css} +12 -12
  4. package/dist/assets/LpKeys-BxRhfQda.css +36 -0
  5. package/dist/assets/LpPaletteFacts-B9FdVmIO.css +93 -0
  6. package/dist/assets/LpPaletteHeader-BVOu1UX5.css +70 -0
  7. package/dist/assets/LpPalettePreview-CJmAKgYW.css +43 -0
  8. package/dist/assets/LpPaletteStats-ClE-37MK.css +33 -0
  9. package/dist/assets/LpPaletteSwatches-CA0B8y2E.css +21 -0
  10. package/dist/assets/{LpShortcutsDialog-CqYX3yy6.css → LpShortcutsDialog-BUp_BX4s.css} +7 -28
  11. package/dist/assets/{LpTable-CPwWxTJS.css → LpTable-xWwI4KPZ.css} +17 -17
  12. package/dist/chunks/HighlightText-BvnYZkhi.js +27 -0
  13. package/dist/chunks/{LpAddressInput-CJOYGZlI.js → LpAddressInput-iOJhmRzy.js} +1 -1
  14. package/dist/chunks/{LpAppShell-B07Lf48e.js → LpAppShell-BmMYcEVx.js} +2 -2
  15. package/dist/chunks/{LpAvatar-C1XStdOo.js → LpAvatar-Cb1jtOVv.js} +22 -4
  16. package/dist/chunks/{LpCard-C2IvucmX.js → LpCard-BdxkMXjo.js} +1 -1
  17. package/dist/chunks/{LpColorPicker-zz4VGkG4.js → LpColorPicker-BLqPX5Vw.js} +1 -1
  18. package/dist/chunks/{LpConfirmDialog-BTVAR4tF.js → LpConfirmDialog-Ca-CTlxT.js} +1 -1
  19. package/dist/chunks/{LpConfirmHost-Ci_uCHgQ.js → LpConfirmHost-BAaSaT2b.js} +1 -1
  20. package/dist/chunks/{LpContextMenu-BqkAYa9X.js → LpContextMenu-1cKew_Dc.js} +17 -4
  21. package/dist/chunks/{LpDrawer-CfRhHwmE.js → LpDrawer-CBFVD624.js} +1 -1
  22. package/dist/chunks/{LpDropdownMenu-DdJGQzPn.js → LpDropdownMenu-DrpJJBp0.js} +22 -8
  23. package/dist/chunks/{LpFileTree-CNurOvkV.js → LpFileTree-bk5VjBey.js} +2 -2
  24. package/dist/chunks/{LpFileTreeNode-D_qRRdsH.js → LpFileTreeNode-BvMSBM7X.js} +1 -1
  25. package/dist/chunks/{LpLightbox-DSDahF23.js → LpLightbox-EVXzAq62.js} +3 -3
  26. package/dist/chunks/{LpLogViewer-KypbgOyo.js → LpLogViewer-BDFXzvcl.js} +2 -2
  27. package/dist/chunks/{LpMediaGallery-YKr-cQPN.js → LpMediaGallery-BnlkN_1f.js} +1 -1
  28. package/dist/chunks/{LpModal-BzTVeNqe.js → LpModal-JNa3B_Lr.js} +12 -5
  29. package/dist/chunks/{LpModalNav-CjABSGCu.js → LpModalNav-BAxC9et7.js} +10 -3
  30. package/dist/chunks/{LpNotificationBell-CCwyJP5C.js → LpNotificationBell-DsqSyMwS.js} +2 -2
  31. package/dist/chunks/LpPalettePreview-CFav_7co.js +19 -0
  32. package/dist/chunks/{LpPie-BEJ2SfI6.js → LpPie-BdSnta11.js} +1 -1
  33. package/dist/chunks/{LpScrollArea-Bry1fdOM.js → LpScrollArea-Hz3-JWUG.js} +23 -5
  34. package/dist/chunks/{LpSidebar-Bwws_X29.js → LpSidebar-DpEiGi8L.js} +2 -2
  35. package/dist/chunks/{LpSidebarNav-kx-LdqNU.js → LpSidebarNav-BUuxipX-.js} +2 -2
  36. package/dist/chunks/{LpThemeSwitcher-B4aVPbNC.js → LpThemeSwitcher-BbYFFT5w.js} +1 -1
  37. package/dist/chunks/MenuTitle-J3ZDYjpV.js +56 -0
  38. package/dist/component-names.d.ts +1 -1
  39. package/dist/components/HighlightText.vue.d.ts +7 -0
  40. package/dist/components/HighlightText.vue.js +4 -0
  41. package/dist/components/LpAddressInput.vue.js +1 -1
  42. package/dist/components/LpAppShell.vue.js +1 -1
  43. package/dist/components/LpAvatar.vue.d.ts +12 -0
  44. package/dist/components/LpAvatar.vue.js +1 -1
  45. package/dist/components/LpCard.vue.js +1 -1
  46. package/dist/components/LpChart.vue.js +1 -1
  47. package/dist/components/LpColorPicker.vue.js +1 -1
  48. package/dist/components/LpCommandPalette.vue.d.ts +152 -15
  49. package/dist/components/LpCommandPalette.vue.js +181 -92
  50. package/dist/components/LpConfirmDialog.vue.js +1 -1
  51. package/dist/components/LpConfirmHost.vue.js +1 -1
  52. package/dist/components/LpContextMenu.vue.d.ts +11 -0
  53. package/dist/components/LpContextMenu.vue.js +1 -1
  54. package/dist/components/LpDrawer.vue.js +1 -1
  55. package/dist/components/LpDropdownMenu.vue.d.ts +6 -0
  56. package/dist/components/LpDropdownMenu.vue.js +1 -1
  57. package/dist/components/LpDropzone.vue.d.ts +14 -0
  58. package/dist/components/LpDropzone.vue.js +9 -7
  59. package/dist/components/LpFileTree.vue.js +1 -1
  60. package/dist/components/LpFileTreeNode.vue.js +1 -1
  61. package/dist/components/LpKeys.vue.d.ts +22 -0
  62. package/dist/components/LpKeys.vue.js +52 -0
  63. package/dist/components/LpLightbox.vue.js +1 -1
  64. package/dist/components/LpLogViewer.vue.js +1 -1
  65. package/dist/components/LpMediaGallery.vue.js +1 -1
  66. package/dist/components/LpModal.vue.d.ts +7 -5
  67. package/dist/components/LpModal.vue.js +1 -1
  68. package/dist/components/LpModalNav.vue.d.ts +5 -3
  69. package/dist/components/LpModalNav.vue.js +1 -1
  70. package/dist/components/LpNotificationBell.vue.js +1 -1
  71. package/dist/components/LpPaletteFacts.vue.d.ts +25 -0
  72. package/dist/components/LpPaletteFacts.vue.js +85 -0
  73. package/dist/components/LpPaletteHeader.vue.d.ts +32 -0
  74. package/dist/components/LpPaletteHeader.vue.js +103 -0
  75. package/dist/components/LpPalettePreview.vue.d.ts +19 -0
  76. package/dist/components/LpPalettePreview.vue.js +4 -0
  77. package/dist/components/LpPaletteStats.vue.d.ts +11 -0
  78. package/dist/components/LpPaletteStats.vue.js +47 -0
  79. package/dist/components/LpPaletteSwatches.vue.d.ts +10 -0
  80. package/dist/components/LpPaletteSwatches.vue.js +34 -0
  81. package/dist/components/LpPie.vue.js +1 -1
  82. package/dist/components/LpScrollArea.vue.d.ts +2 -2
  83. package/dist/components/LpScrollArea.vue.js +1 -1
  84. package/dist/components/LpShortcutsDialog.vue.js +9 -29
  85. package/dist/components/LpSidebar.vue.js +1 -1
  86. package/dist/components/LpSidebarNav.vue.js +1 -1
  87. package/dist/components/LpTable.vue.js +8 -6
  88. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  89. package/dist/components/MenuTitle.vue.d.ts +9 -0
  90. package/dist/components/MenuTitle.vue.js +4 -0
  91. package/dist/components/commandPalette.d.ts +157 -0
  92. package/dist/components/commandPalette.js +103 -0
  93. package/dist/components/commandSearch.d.ts +32 -0
  94. package/dist/components/commandSearch.js +48 -0
  95. package/dist/components/keys.d.ts +2 -0
  96. package/dist/components/keys.js +11 -0
  97. package/dist/composables/useClipboard.js +35 -2
  98. package/dist/index.d.ts +12 -3
  99. package/dist/index.js +161 -138
  100. package/package.json +1 -1
  101. package/src/component-names.ts +6 -0
  102. package/src/components/HighlightText.vue +28 -0
  103. package/src/components/LpAvatar.vue +21 -2
  104. package/src/components/LpCommandPalette.vue +392 -86
  105. package/src/components/LpContextMenu.vue +19 -1
  106. package/src/components/LpDropdownMenu.vue +14 -2
  107. package/src/components/LpDropzone.vue +13 -5
  108. package/src/components/LpKeys.vue +79 -0
  109. package/src/components/LpLightbox.vue +4 -1
  110. package/src/components/LpModal.vue +7 -1
  111. package/src/components/LpModalNav.vue +4 -0
  112. package/src/components/LpPaletteFacts.vue +165 -0
  113. package/src/components/LpPaletteHeader.vue +155 -0
  114. package/src/components/LpPalettePreview.vue +77 -0
  115. package/src/components/LpPaletteStats.vue +81 -0
  116. package/src/components/LpPaletteSwatches.vue +56 -0
  117. package/src/components/LpScrollArea.vue +30 -2
  118. package/src/components/LpShortcutsDialog.vue +2 -45
  119. package/src/components/LpTable.vue +7 -2
  120. package/src/components/MenuTitle.vue +34 -0
  121. package/src/components/commandPalette.ts +264 -0
  122. package/src/components/commandSearch.ts +79 -0
  123. package/src/components/keys.ts +13 -0
  124. package/src/composables/useClipboard.ts +49 -7
  125. package/src/index.ts +12 -3
@@ -0,0 +1,6 @@
1
+
2
+ .lp-highlight {
3
+ border-radius: 2px;
4
+ background: color-mix(in srgb, var(--color-brand) 25%, transparent);
5
+ color: var(--color-ink);
6
+ }
@@ -5,81 +5,81 @@
5
5
  * pane from its right edge as it grows. Animating the columns themselves made
6
6
  * every line of the list and the pane re-wrap on every frame.
7
7
  */
8
- .lp-cmd-dialog[data-v-bb9a3f4c] {
8
+ .lp-cmd-dialog[data-v-6da7fe88] {
9
9
  --lp-cmd-list: min(92vw, 40rem);
10
10
  --lp-cmd-pane: max(0px, min(26rem, 96vw - var(--lp-cmd-list)));
11
11
  width: var(--lp-cmd-list);
12
12
  }
13
- .lp-cmd-split[data-v-bb9a3f4c] {
13
+ .lp-cmd-split[data-v-6da7fe88] {
14
14
  transition:
15
15
  width 300ms var(--ease-emphasized, ease),
16
16
  min-height 300ms var(--ease-emphasized, ease);
17
17
  }
18
18
  @media (min-width: 768px) {
19
- .lp-cmd-split .lp-cmd-list[data-v-bb9a3f4c] {
19
+ .lp-cmd-split .lp-cmd-list[data-v-6da7fe88] {
20
20
  flex: 0 0 auto;
21
21
  /* the dialog's 1px border on each side */
22
22
  width: calc(var(--lp-cmd-list) - 2px);
23
23
  }
24
- .lp-cmd-dialog[data-pane="open"][data-v-bb9a3f4c] {
24
+ .lp-cmd-dialog[data-pane="open"][data-v-6da7fe88] {
25
25
  width: calc(var(--lp-cmd-list) + var(--lp-cmd-pane));
26
26
  min-height: min(76vh, 36rem);
27
27
  }
28
28
  }
29
- .lp-cmd-pane[data-v-bb9a3f4c] {
29
+ .lp-cmd-pane[data-v-6da7fe88] {
30
30
  width: var(--lp-cmd-pane);
31
31
  }
32
32
  /*
33
33
  * The pane rides in from the right edge while the dialog opens up to it, and
34
34
  * leaves the same way, for as long as the dialog takes to close over it.
35
35
  */
36
- .lp-cmd-pane-enter-active[data-v-bb9a3f4c],
37
- .lp-cmd-pane-leave-active[data-v-bb9a3f4c] {
36
+ .lp-cmd-pane-enter-active[data-v-6da7fe88],
37
+ .lp-cmd-pane-leave-active[data-v-6da7fe88] {
38
38
  transition:
39
39
  transform 300ms var(--ease-emphasized, ease),
40
40
  opacity 300ms ease;
41
41
  }
42
- .lp-cmd-pane-enter-from[data-v-bb9a3f4c],
43
- .lp-cmd-pane-leave-to[data-v-bb9a3f4c] {
42
+ .lp-cmd-pane-enter-from[data-v-6da7fe88],
43
+ .lp-cmd-pane-leave-to[data-v-6da7fe88] {
44
44
  opacity: 0;
45
45
  transform: translateX(40%);
46
46
  }
47
- .lp-cmd-para[data-v-bb9a3f4c] {
48
- animation: lp-cmd-para-in-bb9a3f4c 260ms ease-out both;
47
+ .lp-cmd-para[data-v-6da7fe88] {
48
+ animation: lp-cmd-para-in-6da7fe88 260ms ease-out both;
49
49
  }
50
- @keyframes lp-cmd-para-in-bb9a3f4c {
50
+ @keyframes lp-cmd-para-in-6da7fe88 {
51
51
  from {
52
52
  opacity: 0;
53
53
  transform: translateY(4px);
54
54
  }
55
55
  }
56
56
  @media (prefers-reduced-motion: reduce) {
57
- .lp-cmd-split[data-v-bb9a3f4c],
58
- .lp-cmd-pane-enter-active[data-v-bb9a3f4c],
59
- .lp-cmd-pane-leave-active[data-v-bb9a3f4c] {
57
+ .lp-cmd-split[data-v-6da7fe88],
58
+ .lp-cmd-pane-enter-active[data-v-6da7fe88],
59
+ .lp-cmd-pane-leave-active[data-v-6da7fe88] {
60
60
  transition: none;
61
61
  }
62
- .lp-cmd-para[data-v-bb9a3f4c] {
62
+ .lp-cmd-para[data-v-6da7fe88] {
63
63
  animation: none;
64
64
  }
65
65
  }
66
- .lp-cmd-excerpt[data-v-bb9a3f4c] {
66
+ .lp-cmd-excerpt[data-v-6da7fe88] {
67
67
  display: -webkit-box;
68
68
  -webkit-box-orient: vertical;
69
69
  overflow: hidden;
70
70
  }
71
71
  /* Each result eases in; honours reduced motion. */
72
- .lp-cmd-item[data-v-bb9a3f4c] {
73
- animation: lp-cmd-in-bb9a3f4c 140ms ease-out both;
72
+ .lp-cmd-item[data-v-6da7fe88] {
73
+ animation: lp-cmd-in-6da7fe88 140ms ease-out both;
74
74
  }
75
- @keyframes lp-cmd-in-bb9a3f4c {
75
+ @keyframes lp-cmd-in-6da7fe88 {
76
76
  from {
77
77
  opacity: 0;
78
78
  transform: translateY(3px);
79
79
  }
80
80
  }
81
81
  @media (prefers-reduced-motion: reduce) {
82
- .lp-cmd-item[data-v-bb9a3f4c] {
82
+ .lp-cmd-item[data-v-6da7fe88] {
83
83
  animation: none;
84
84
  }
85
85
  }
@@ -1,9 +1,9 @@
1
1
 
2
- .lp-dropzone__frame rect[data-v-6f6d375e] {
2
+ .lp-dropzone__frame rect[data-v-8f39f653] {
3
3
  stroke: var(--color-line);
4
4
  transition: stroke var(--duration-fast) linear;
5
5
  }
6
- .lp-dropzone:hover .lp-dropzone__frame rect[data-v-6f6d375e] {
6
+ .lp-dropzone:hover .lp-dropzone__frame rect[data-v-8f39f653] {
7
7
  stroke: var(--color-line-strong);
8
8
  }
9
9
 
@@ -12,33 +12,33 @@
12
12
  with every other thing on it; under a drag it is the answer to "can I let go
13
13
  here". One dash period per cycle, so the travel is continuous rather than
14
14
  jumping back at the seam. */
15
- .lp-dropzone--over .lp-dropzone__frame rect[data-v-6f6d375e] {
15
+ .lp-dropzone--over .lp-dropzone__frame rect[data-v-8f39f653] {
16
16
  stroke: var(--color-brand);
17
- animation: lp-dropzone-ants-6f6d375e 500ms linear infinite;
17
+ animation: lp-dropzone-ants-8f39f653 500ms linear infinite;
18
18
  }
19
- @keyframes lp-dropzone-ants-6f6d375e {
19
+ @keyframes lp-dropzone-ants-8f39f653 {
20
20
  to {
21
21
  stroke-dashoffset: -11;
22
22
  }
23
23
  }
24
24
 
25
25
  /* The dashes fade in and the block settles up a few pixels. */
26
- .lp-dropzone[data-v-6f6d375e] {
27
- animation: lp-dropzone-in-6f6d375e var(--duration-slow) var(--ease-settle) both;
26
+ .lp-dropzone[data-v-8f39f653] {
27
+ animation: lp-dropzone-in-8f39f653 var(--duration-slow) var(--ease-settle) both;
28
28
  }
29
- .lp-dropzone--waiting[data-v-6f6d375e] {
29
+ .lp-dropzone--waiting[data-v-8f39f653] {
30
30
  opacity: 0;
31
31
  animation: none;
32
32
  }
33
- @keyframes lp-dropzone-in-6f6d375e {
33
+ @keyframes lp-dropzone-in-8f39f653 {
34
34
  from {
35
35
  opacity: 0;
36
36
  transform: translateY(6px);
37
37
  }
38
38
  }
39
39
  @media (prefers-reduced-motion: reduce) {
40
- .lp-dropzone[data-v-6f6d375e],
41
- .lp-dropzone--waiting[data-v-6f6d375e] {
40
+ .lp-dropzone[data-v-8f39f653],
41
+ .lp-dropzone--waiting[data-v-8f39f653] {
42
42
  opacity: 1;
43
43
  transform: none;
44
44
  animation: none;
@@ -46,7 +46,7 @@ from {
46
46
 
47
47
  /* The ants stop, the colour stays: the brand stroke is what says "drop
48
48
  here", and it says it standing still. */
49
- .lp-dropzone--over .lp-dropzone__frame rect[data-v-6f6d375e] {
49
+ .lp-dropzone--over .lp-dropzone__frame rect[data-v-8f39f653] {
50
50
  animation: none;
51
51
  }
52
52
  }
@@ -0,0 +1,36 @@
1
+
2
+ .lp-keys[data-v-5c6ae8ec] {
3
+ display: inline-flex;
4
+ flex-wrap: wrap;
5
+ align-items: center;
6
+ gap: 3px;
7
+ color: var(--color-muted);
8
+ }
9
+ .lp-keys__then[data-v-5c6ae8ec] {
10
+ padding: 0 2px;
11
+ font-size: 0.68rem;
12
+ }
13
+ .lp-keys__label[data-v-5c6ae8ec] {
14
+ margin-left: 5px;
15
+ font-size: 0.75rem;
16
+ }
17
+ kbd[data-v-5c6ae8ec] {
18
+ display: inline-flex;
19
+ min-width: 20px;
20
+ align-items: center;
21
+ justify-content: center;
22
+ padding: 2px 6px;
23
+ border: 1px solid var(--color-line-strong);
24
+ border-bottom-width: 2px;
25
+ border-radius: 5px;
26
+ background: color-mix(in srgb, var(--color-ink) 6%, transparent);
27
+ color: var(--color-muted-strong);
28
+ font-family: inherit;
29
+ font-size: 0.7rem;
30
+ line-height: 1.5;
31
+ }
32
+ .lp-keys--sm kbd[data-v-5c6ae8ec] {
33
+ min-width: 16px;
34
+ padding: 0 4px;
35
+ font-size: 0.65rem;
36
+ }
@@ -0,0 +1,93 @@
1
+
2
+ .lp-palette-facts[data-v-f1ab3788] {
3
+ min-width: 0;
4
+ }
5
+ .lp-palette-facts__title[data-v-f1ab3788] {
6
+ margin: 0 0 0.4rem;
7
+ color: var(--color-muted);
8
+ font-size: 11px;
9
+ font-weight: 600;
10
+ letter-spacing: 0.08em;
11
+ text-transform: uppercase;
12
+ }
13
+ .lp-palette-facts__list[data-v-f1ab3788] {
14
+ display: grid;
15
+ gap: 2px;
16
+ margin: 0;
17
+ padding: 0;
18
+ list-style: none;
19
+ }
20
+ .lp-palette-facts__row[data-v-f1ab3788] {
21
+ display: flex;
22
+ min-width: 0;
23
+ align-items: center;
24
+ gap: 0.6rem;
25
+ padding: 0.4rem 0.6rem;
26
+ border-radius: var(--radius-control);
27
+ background: color-mix(in srgb, var(--color-ink) 3%, transparent);
28
+ color: var(--color-ink);
29
+ font-size: 0.8125rem;
30
+ transition: background-color var(--duration-fast, 150ms) ease;
31
+ }
32
+ .lp-palette-facts--plain .lp-palette-facts__row[data-v-f1ab3788] {
33
+ padding: 0.15rem 0;
34
+ background: transparent;
35
+ }
36
+ .lp-palette-facts__row.is-current[data-v-f1ab3788] {
37
+ background: var(--color-brand-soft);
38
+ }
39
+ .lp-palette-facts--plain .lp-palette-facts__row.is-current[data-v-f1ab3788] {
40
+ background: transparent;
41
+ color: var(--color-brand);
42
+ }
43
+ .lp-palette-facts__icon[data-v-f1ab3788] {
44
+ flex-shrink: 0;
45
+ color: var(--color-muted);
46
+ transition: color var(--duration-fast, 150ms) ease;
47
+ }
48
+ .is-current .lp-palette-facts__icon[data-v-f1ab3788] {
49
+ color: var(--color-brand);
50
+ }
51
+ .lp-palette-facts__dot[data-v-f1ab3788] {
52
+ width: 0.55rem;
53
+ height: 0.55rem;
54
+ flex-shrink: 0;
55
+ margin: 0 0.15rem;
56
+ border-radius: 9999px;
57
+ box-shadow: 0 0 0 1px var(--color-line);
58
+ }
59
+ .lp-palette-facts__label[data-v-f1ab3788] {
60
+ display: flex;
61
+ min-width: 0;
62
+ flex: 1;
63
+ flex-direction: column;
64
+ }
65
+ .lp-palette-facts__name[data-v-f1ab3788] {
66
+ overflow: hidden;
67
+ text-overflow: ellipsis;
68
+ white-space: nowrap;
69
+ }
70
+ .lp-palette-facts__hint[data-v-f1ab3788] {
71
+ margin-top: 1px;
72
+ color: var(--color-muted);
73
+ font-size: 0.75rem;
74
+ line-height: 1.45;
75
+ }
76
+ .lp-palette-facts__value[data-v-f1ab3788] {
77
+ display: inline-flex;
78
+ min-width: 0;
79
+ max-width: 55%;
80
+ flex-shrink: 0;
81
+ justify-content: flex-end;
82
+ overflow: hidden;
83
+ color: var(--color-muted);
84
+ font-size: 0.75rem;
85
+ font-variant-numeric: tabular-nums;
86
+ white-space: nowrap;
87
+ }
88
+ .lp-palette-facts__value[data-v-f1ab3788] .lp-roll {
89
+ max-width: 100%;
90
+ }
91
+ .lp-palette-facts__value--mono[data-v-f1ab3788] {
92
+ font-family: var(--font-mono, ui-monospace, monospace);
93
+ }
@@ -0,0 +1,70 @@
1
+
2
+ .lp-palette-header[data-v-68065cf8] {
3
+ display: flex;
4
+ min-width: 0;
5
+ flex-direction: column;
6
+ gap: 0.6rem;
7
+ }
8
+ .lp-palette-header__row[data-v-68065cf8] {
9
+ display: flex;
10
+ min-width: 0;
11
+ align-items: center;
12
+ gap: 0.75rem;
13
+ }
14
+ .lp-palette-header__media[data-v-68065cf8] {
15
+ flex-shrink: 0;
16
+ }
17
+ .lp-palette-header__tile[data-v-68065cf8] {
18
+ display: grid;
19
+ width: 2.25rem;
20
+ height: 2.25rem;
21
+ flex-shrink: 0;
22
+ place-items: center;
23
+ border-radius: var(--radius-control);
24
+ background: var(--color-brand-soft);
25
+ color: var(--color-brand);
26
+ }
27
+ .lp-palette-header__text[data-v-68065cf8] {
28
+ min-width: 0;
29
+ flex: 1;
30
+ }
31
+ .lp-palette-header__eyebrow[data-v-68065cf8] {
32
+ margin: 0 0 2px;
33
+ color: var(--color-muted);
34
+ font-size: 11px;
35
+ font-weight: 600;
36
+ letter-spacing: 0.08em;
37
+ text-transform: uppercase;
38
+ }
39
+ .lp-palette-header__title[data-v-68065cf8] {
40
+ display: -webkit-box;
41
+ margin: 0;
42
+ overflow: hidden;
43
+ -webkit-box-orient: vertical;
44
+ -webkit-line-clamp: 2;
45
+ color: var(--color-ink);
46
+ font-size: 1rem;
47
+ font-weight: 600;
48
+ line-height: 1.3;
49
+ overflow-wrap: anywhere;
50
+ }
51
+ .lp-palette-header__subtitle[data-v-68065cf8] {
52
+ margin: 2px 0 0;
53
+ overflow: hidden;
54
+ color: var(--color-muted);
55
+ font-size: 0.75rem;
56
+ text-overflow: ellipsis;
57
+ white-space: nowrap;
58
+ }
59
+ .lp-palette-header__extra[data-v-68065cf8] {
60
+ display: flex;
61
+ flex-wrap: wrap;
62
+ gap: 0.375rem;
63
+ }
64
+ .lp-palette-header__lead[data-v-68065cf8] {
65
+ margin: 0;
66
+ color: var(--color-muted-strong);
67
+ font-size: 0.8125rem;
68
+ line-height: 1.55;
69
+ white-space: pre-line;
70
+ }
@@ -0,0 +1,43 @@
1
+
2
+ .lp-palette-preview {
3
+ display: flex;
4
+ min-width: 0;
5
+ flex-direction: column;
6
+ color: var(--color-ink);
7
+ }
8
+ .lp-palette-preview--sm {
9
+ gap: 0.6rem;
10
+ }
11
+ .lp-palette-preview--md {
12
+ gap: 0.9rem;
13
+ }
14
+ .lp-palette-preview--lg {
15
+ gap: 1.25rem;
16
+ }
17
+ .lp-palette-preview > * {
18
+ min-width: 0;
19
+ animation: lp-palette-in 260ms var(--ease-emphasized, ease-out) both;
20
+ }
21
+ .lp-palette-preview > :nth-child(2) {
22
+ animation-delay: 40ms;
23
+ }
24
+ .lp-palette-preview > :nth-child(3) {
25
+ animation-delay: 80ms;
26
+ }
27
+ .lp-palette-preview > :nth-child(4) {
28
+ animation-delay: 120ms;
29
+ }
30
+ .lp-palette-preview > :nth-child(n + 5) {
31
+ animation-delay: 160ms;
32
+ }
33
+ @keyframes lp-palette-in {
34
+ from {
35
+ opacity: 0;
36
+ transform: translateY(4px);
37
+ }
38
+ }
39
+ @media (prefers-reduced-motion: reduce) {
40
+ .lp-palette-preview > * {
41
+ animation: none;
42
+ }
43
+ }
@@ -0,0 +1,33 @@
1
+
2
+ .lp-palette-stats[data-v-dc30a10e] {
3
+ display: grid;
4
+ gap: 0.5rem;
5
+ margin: 0;
6
+ }
7
+ .lp-palette-stats__tile[data-v-dc30a10e] {
8
+ min-width: 0;
9
+ padding: 0.5rem 0.65rem;
10
+ border: 1px solid var(--color-line);
11
+ border-radius: var(--radius-control);
12
+ background: color-mix(in srgb, var(--color-surface-soft) 55%, transparent);
13
+ }
14
+ dt[data-v-dc30a10e] {
15
+ overflow: hidden;
16
+ color: var(--color-muted);
17
+ font-size: 11px;
18
+ text-overflow: ellipsis;
19
+ white-space: nowrap;
20
+ }
21
+ dd[data-v-dc30a10e] {
22
+ display: flex;
23
+ min-width: 0;
24
+ margin: 2px 0 0;
25
+ color: var(--color-ink);
26
+ font-size: 1.125rem;
27
+ font-weight: 650;
28
+ font-variant-numeric: tabular-nums;
29
+ line-height: 1.3;
30
+ }
31
+ dd[data-v-dc30a10e] .lp-roll {
32
+ max-width: 100%;
33
+ }
@@ -0,0 +1,21 @@
1
+
2
+ .lp-palette-swatches[data-v-7c6934b1] {
3
+ display: grid;
4
+ gap: 0.4rem;
5
+ padding: 0.7rem;
6
+ border: 1px solid var(--color-line);
7
+ border-radius: var(--radius-card);
8
+ transition: background-color var(--duration-medium, 240ms) ease;
9
+ }
10
+ .lp-palette-swatches span[data-v-7c6934b1] {
11
+ height: 2rem;
12
+ border-radius: var(--radius-control);
13
+ box-shadow: inset 0 0 0 1px rgb(128 128 128 / 0.25);
14
+ transition: background-color var(--duration-medium, 240ms) ease;
15
+ }
16
+ @media (prefers-reduced-motion: reduce) {
17
+ .lp-palette-swatches[data-v-7c6934b1],
18
+ .lp-palette-swatches span[data-v-7c6934b1] {
19
+ transition: none;
20
+ }
21
+ }
@@ -1,12 +1,12 @@
1
1
 
2
2
  /* Two columns where there is room: the list is long enough that one column
3
3
  pushes the last group off a laptop screen. */
4
- .shortcut-groups[data-v-1c4cf3fa] {
4
+ .shortcut-groups[data-v-611c415f] {
5
5
  display: grid;
6
6
  gap: 18px;
7
7
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
8
8
  }
9
- .shortcut-group h3[data-v-1c4cf3fa] {
9
+ .shortcut-group h3[data-v-611c415f] {
10
10
  margin: 0 0 6px;
11
11
  color: var(--color-muted);
12
12
  font-size: 0.7rem;
@@ -14,25 +14,25 @@
14
14
  letter-spacing: 0.06em;
15
15
  text-transform: uppercase;
16
16
  }
17
- .shortcut-group dl[data-v-1c4cf3fa] {
17
+ .shortcut-group dl[data-v-611c415f] {
18
18
  display: flex;
19
19
  flex-direction: column;
20
20
  gap: 1px;
21
21
  margin: 0;
22
22
  }
23
- .shortcut-row[data-v-1c4cf3fa] {
23
+ .shortcut-row[data-v-611c415f] {
24
24
  display: flex;
25
25
  align-items: center;
26
26
  justify-content: space-between;
27
27
  gap: 12px;
28
28
  padding: 5px 0;
29
29
  }
30
- .shortcut-row dt[data-v-1c4cf3fa] {
30
+ .shortcut-row dt[data-v-611c415f] {
31
31
  color: var(--color-ink);
32
32
  font-size: 0.82rem;
33
33
  min-width: 0;
34
34
  }
35
- .shortcut-conflict[data-v-1c4cf3fa] {
35
+ .shortcut-conflict[data-v-611c415f] {
36
36
  display: inline-flex;
37
37
  width: 14px;
38
38
  height: 14px;
@@ -47,30 +47,9 @@
47
47
  vertical-align: middle;
48
48
  cursor: help;
49
49
  }
50
- .shortcut-then[data-v-1c4cf3fa] {
51
- align-self: center;
52
- padding: 0 2px;
53
- color: var(--color-muted);
54
- font-size: 0.68rem;
55
- }
56
- .shortcut-row dd[data-v-1c4cf3fa] {
50
+ .shortcut-row dd[data-v-611c415f] {
57
51
  display: flex;
58
52
  flex-shrink: 0;
59
53
  gap: 3px;
60
54
  margin: 0;
61
55
  }
62
- kbd[data-v-1c4cf3fa] {
63
- display: inline-flex;
64
- min-width: 20px;
65
- align-items: center;
66
- justify-content: center;
67
- padding: 2px 6px;
68
- border: 1px solid var(--color-line-strong);
69
- border-bottom-width: 2px;
70
- border-radius: 5px;
71
- background: color-mix(in srgb, var(--color-ink) 6%, transparent);
72
- color: var(--color-muted-strong);
73
- font-family: inherit;
74
- font-size: 0.7rem;
75
- line-height: 1.5;
76
- }
@@ -11,17 +11,17 @@
11
11
  * fade before closing the gap and the whole list lurches at the end instead of
12
12
  * gliding.
13
13
  */
14
- .lp-row-enter-active[data-v-fff7ed10],
15
- .lp-row-leave-active[data-v-fff7ed10] {
14
+ .lp-row-enter-active[data-v-4fa70e89],
15
+ .lp-row-leave-active[data-v-4fa70e89] {
16
16
  transition:
17
17
  opacity var(--duration-fast) var(--ease-emphasized),
18
18
  transform var(--duration-fast) var(--ease-emphasized);
19
19
  }
20
- .lp-row-move[data-v-fff7ed10] {
20
+ .lp-row-move[data-v-4fa70e89] {
21
21
  transition: transform var(--duration-medium) var(--ease-emphasized);
22
22
  }
23
- .lp-row-enter-from[data-v-fff7ed10],
24
- .lp-row-leave-to[data-v-fff7ed10] {
23
+ .lp-row-enter-from[data-v-4fa70e89],
24
+ .lp-row-leave-to[data-v-4fa70e89] {
25
25
  opacity: 0;
26
26
  transform: translateX(-0.5rem);
27
27
  }
@@ -35,7 +35,7 @@
35
35
  * drops out of the table layout entirely. Nothing sits below this row to be
36
36
  * dragged around, so simply not animating its exit costs nothing.
37
37
  */
38
- .lp-row-empty.lp-row-leave-active[data-v-fff7ed10] {
38
+ .lp-row-empty.lp-row-leave-active[data-v-4fa70e89] {
39
39
  display: none;
40
40
  }
41
41
 
@@ -54,7 +54,7 @@
54
54
  * once anything is selected. An earlier version collapsed the column to nothing
55
55
  * and floated the hover box over the first cell, where it sat on the text.
56
56
  */
57
- .lp-tick[data-v-fff7ed10] {
57
+ .lp-tick[data-v-4fa70e89] {
58
58
  display: flex;
59
59
  align-items: center;
60
60
  max-width: 0;
@@ -66,17 +66,17 @@
66
66
  padding var(--duration-medium) var(--ease-emphasized),
67
67
  opacity var(--duration-fast) ease;
68
68
  }
69
- .lp-tick-open[data-v-fff7ed10] {
69
+ .lp-tick-open[data-v-4fa70e89] {
70
70
  max-width: 3.25rem;
71
71
  padding-inline: 1rem;
72
72
  opacity: 1;
73
73
  }
74
- .lp-tick-hidden[data-v-fff7ed10],
75
- .lp-tick-cue[data-v-fff7ed10] {
74
+ .lp-tick-hidden[data-v-4fa70e89],
75
+ .lp-tick-cue[data-v-4fa70e89] {
76
76
  opacity: 0;
77
77
  }
78
- tr:hover .lp-tick-cue[data-v-fff7ed10],
79
- .lp-tick-cue[data-v-fff7ed10]:focus-within {
78
+ tr:hover .lp-tick-cue[data-v-4fa70e89],
79
+ .lp-tick-cue[data-v-4fa70e89]:focus-within {
80
80
  opacity: 1;
81
81
  }
82
82
 
@@ -84,15 +84,15 @@ tr:hover .lp-tick-cue[data-v-fff7ed10],
84
84
  turned down the rows change without animating rather than not changing. */
85
85
  /* Only where there is a hover to reveal it; a finger long-presses instead. */
86
86
  @media (hover: none) {
87
- tr:hover .lp-tick-cue[data-v-fff7ed10] {
87
+ tr:hover .lp-tick-cue[data-v-4fa70e89] {
88
88
  opacity: 0;
89
89
  }
90
90
  }
91
91
  @media (prefers-reduced-motion: reduce) {
92
- .lp-row-enter-active[data-v-fff7ed10],
93
- .lp-row-leave-active[data-v-fff7ed10],
94
- .lp-row-move[data-v-fff7ed10],
95
- .lp-tick[data-v-fff7ed10] {
92
+ .lp-row-enter-active[data-v-4fa70e89],
93
+ .lp-row-leave-active[data-v-4fa70e89],
94
+ .lp-row-move[data-v-4fa70e89],
95
+ .lp-tick[data-v-4fa70e89] {
96
96
  transition: none;
97
97
  }
98
98
  }
@@ -0,0 +1,27 @@
1
+ import { defineComponent, openBlock, createElementBlock, Fragment, createTextVNode, toDisplayString, renderList } from "vue";
2
+ import '../assets/HighlightText-BwC5xbqn.css';const _hoisted_1 = {
3
+ key: 0,
4
+ class: "lp-highlight"
5
+ };
6
+ const _sfc_main = /* @__PURE__ */ defineComponent({
7
+ __name: "HighlightText",
8
+ props: {
9
+ text: {}
10
+ },
11
+ setup(__props) {
12
+ return (_ctx, _cache) => {
13
+ return typeof __props.text === "string" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
14
+ createTextVNode(toDisplayString(__props.text), 1)
15
+ ], 64)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(__props.text, (part, index) => {
16
+ return openBlock(), createElementBlock(Fragment, { key: index }, [
17
+ part.hit ? (openBlock(), createElementBlock("mark", _hoisted_1, toDisplayString(part.text), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
18
+ createTextVNode(toDisplayString(part.text), 1)
19
+ ], 64))
20
+ ], 64);
21
+ }), 128));
22
+ };
23
+ }
24
+ });
25
+ export {
26
+ _sfc_main as _
27
+ };
@@ -7,7 +7,7 @@ import { _ as _sfc_main$3 } from "./LpButton-CKSwC6Mu.js";
7
7
  import { _ as _sfc_main$1 } from "./LpFormField-CtVYj6tO.js";
8
8
  import { _ as _sfc_main$4 } from "./LpIcon-DYtaid0K.js";
9
9
  import { _ as _sfc_main$5 } from "./LpInput-D-YGQbEv.js";
10
- import { _ as _sfc_main$7 } from "./LpModal-BzTVeNqe.js";
10
+ import { _ as _sfc_main$7 } from "./LpModal-JNa3B_Lr.js";
11
11
  import { _ as _sfc_main$6 } from "./LpSelect-DNIL6MB9.js";
12
12
  import { useMergedAttrs } from "../composables/useMergedClass.js";
13
13
  const _hoisted_1 = { class: "flex items-stretch gap-2" };
@@ -2,9 +2,9 @@ import { defineComponent, computed, ref, useId, watch, openBlock, createElementB
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { _ as _sfc_main$2 } from "./LpButton-CKSwC6Mu.js";
4
4
  import { _ as _sfc_main$3 } from "./LpIcon-DYtaid0K.js";
5
- import { _ as _sfc_main$5 } from "./LpScrollArea-Bry1fdOM.js";
5
+ import { _ as _sfc_main$5 } from "./LpScrollArea-Hz3-JWUG.js";
6
6
  import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
7
- import { _ as _sfc_main$1 } from "./LpSidebar-Bwws_X29.js";
7
+ import { _ as _sfc_main$1 } from "./LpSidebar-DpEiGi8L.js";
8
8
  import { useMergedAttrs } from "../composables/useMergedClass.js";
9
9
  const _hoisted_1 = ["href"];
10
10
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };