@crewlethq/ui 0.17.1 → 0.19.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/README.md +55 -3
- package/dist/AccessDeniedCard/AccessDeniedCard.d.ts +39 -0
- package/dist/AccessDeniedCard/index.d.ts +3 -0
- package/dist/AccessDeniedCard/index.js +8 -0
- package/dist/AccessDeniedCard-WXM5DBDZ.css +8 -0
- package/dist/AppShell/index.js +2 -2
- package/dist/ArrangeBoard/ArrangeBoard.d.ts +32 -0
- package/dist/ArrangeBoard/index.d.ts +3 -0
- package/dist/ArrangeBoard/index.js +2 -0
- package/dist/ArrangeBoard-MQE35P6Z.css +80 -0
- package/dist/ArrangeFrame/ArrangeFrame.d.ts +82 -0
- package/dist/ArrangeFrame/index.d.ts +5 -0
- package/dist/ArrangeFrame/index.js +5 -0
- package/dist/ArrangeFrame/useGridResize.d.ts +66 -0
- package/dist/ArrangeFrame-3PLZAG22.css +329 -0
- package/dist/ArrangeGroup/ArrangeGroup.d.ts +42 -0
- package/dist/ArrangeGroup/index.d.ts +3 -0
- package/dist/ArrangeGroup/index.js +4 -0
- package/dist/ArrangeGroup-SHFHA7BE.css +170 -0
- package/dist/ArrangeList/ArrangeList.d.ts +64 -0
- package/dist/ArrangeList/index.d.ts +3 -0
- package/dist/ArrangeList/index.js +10 -0
- package/dist/ArrangeList-NNRTDFI5.css +94 -0
- package/dist/ArtifactCard/ArtifactCard.d.ts +61 -0
- package/dist/ArtifactCard/index.d.ts +3 -0
- package/dist/ArtifactCard/index.js +12 -0
- package/dist/ArtifactCard-EXVAEBV6.css +109 -0
- package/dist/AuthLayout/index.js +2 -2
- package/dist/AvatarPicker/index.js +5 -5
- package/dist/Canvas/index.js +2 -2
- package/dist/Card/index.js +1 -1
- package/dist/ChangeMark/ChangeMark.d.ts +26 -0
- package/dist/ChangeMark/index.d.ts +3 -0
- package/dist/ChangeMark/index.js +8 -0
- package/dist/ChangeMark-3VMTW7MT.css +22 -0
- package/dist/Checkbox/index.js +3 -3
- package/dist/Combobox/index.js +3 -3
- package/dist/CommandPalette/index.js +5 -5
- package/dist/Composer/index.js +3 -3
- package/dist/ConfirmField/index.js +3 -3
- package/dist/CursorFlag/CursorFlag.d.ts +34 -0
- package/dist/CursorFlag/index.d.ts +3 -0
- package/dist/CursorFlag/index.js +3 -0
- package/dist/CursorFlag-AJQJBUGY.css +61 -0
- package/dist/DataTable/index.js +7 -7
- package/dist/DataView/index.js +13 -13
- package/dist/DateTimePicker/index.js +2 -2
- package/dist/Divider/Divider.d.ts +15 -0
- package/dist/Divider/index.d.ts +3 -0
- package/dist/Divider/index.js +2 -0
- package/dist/Divider-3Z77ZAJH.css +37 -0
- package/dist/FollowBanner/FollowBanner.d.ts +35 -0
- package/dist/FollowBanner/index.d.ts +2 -0
- package/dist/FollowBanner/index.js +7 -0
- package/dist/FrameProtocol/index.d.ts +2 -0
- package/dist/FrameProtocol/index.js +2 -0
- package/dist/FrameProtocol/protocol.d.ts +164 -0
- package/dist/HuePicker/HuePicker.d.ts +16 -4
- package/dist/HuePicker/index.js +3 -3
- package/dist/{HuePicker-5QIUR6L7.css → HuePicker-PAIGH6LR.css} +6 -0
- package/dist/IconTile/IconTile.d.ts +23 -0
- package/dist/IconTile/index.d.ts +3 -0
- package/dist/IconTile/index.js +2 -0
- package/dist/IconTile-4GNWTLAW.css +30 -0
- package/dist/Input/index.js +2 -2
- package/dist/LinkInterstitial/LinkInterstitial.d.ts +41 -0
- package/dist/LinkInterstitial/index.d.ts +3 -0
- package/dist/LinkInterstitial/index.js +11 -0
- package/dist/LinkInterstitial-ET4MSVSV.css +34 -0
- package/dist/ListInput/index.js +4 -4
- package/dist/LiveCursor/LiveCursor.d.ts +34 -0
- package/dist/LiveCursor/index.d.ts +3 -0
- package/dist/LiveCursor/index.js +4 -0
- package/dist/LiveCursor-DZHGIYWE.css +47 -0
- package/dist/MarkdownEditor/index.js +3 -3
- package/dist/Menu/index.js +2 -2
- package/dist/Modal/Modal.d.ts +20 -0
- package/dist/Modal/index.js +2 -2
- package/dist/{Modal-RQAYGG4L.css → Modal-XOSV6FAH.css} +14 -0
- package/dist/Note/Note.d.ts +23 -0
- package/dist/Note/index.d.ts +3 -0
- package/dist/Note/index.js +2 -0
- package/dist/Note-RT4L6VUT.css +58 -0
- package/dist/OrgTable/index.js +5 -5
- package/dist/PinTile/PinTile.d.ts +37 -0
- package/dist/PinTile/index.d.ts +3 -0
- package/dist/PinTile/index.js +4 -0
- package/dist/PinTile-IIA25MNZ.css +141 -0
- package/dist/PresenceModel/index.d.ts +2 -0
- package/dist/PresenceModel/index.js +3 -0
- package/dist/PresenceModel/presence.d.ts +80 -0
- package/dist/PresenceRing/PresenceRing.d.ts +31 -0
- package/dist/PresenceRing/index.d.ts +3 -0
- package/dist/PresenceRing/index.js +2 -0
- package/dist/PresenceRing-M4C22Q6U.css +68 -0
- package/dist/PresenceStack/PresenceStack.d.ts +36 -0
- package/dist/PresenceStack/index.d.ts +3 -0
- package/dist/PresenceStack/index.js +9 -0
- package/dist/PresenceStack-QSXQJND5.css +59 -0
- package/dist/PricingCard/index.js +2 -2
- package/dist/Principal/Principal.d.ts +35 -0
- package/dist/Principal/index.d.ts +2 -0
- package/dist/Principal/index.js +4 -0
- package/dist/PrincipalPicker/PrincipalPicker.d.ts +45 -0
- package/dist/PrincipalPicker/index.d.ts +3 -0
- package/dist/PrincipalPicker/index.js +12 -0
- package/dist/PrincipalPicker-7NNZTGUP.css +41 -0
- package/dist/Reorder/index.d.ts +2 -0
- package/dist/Reorder/index.js +4 -0
- package/dist/Reorder/useReorder.d.ts +138 -0
- package/dist/SandboxedFrame/SandboxedFrame.d.ts +142 -0
- package/dist/SandboxedFrame/index.d.ts +3 -0
- package/dist/SandboxedFrame/index.js +8 -0
- package/dist/SandboxedFrame-L6HBQZCD.css +50 -0
- package/dist/ShareDialog/ShareDialog.d.ts +101 -0
- package/dist/ShareDialog/index.d.ts +5 -0
- package/dist/ShareDialog/index.js +19 -0
- package/dist/ShareDialog/roles.d.ts +10 -0
- package/dist/ShareDialog-YZ4F37MW.css +146 -0
- package/dist/SheetGrid/SheetGrid.d.ts +78 -0
- package/dist/SheetGrid/cells.d.ts +117 -0
- package/dist/SheetGrid/index.d.ts +5 -0
- package/dist/SheetGrid/index.js +18 -0
- package/dist/SheetGrid-4HOXDVIB.css +595 -0
- package/dist/SheetModel/clipboard.d.ts +37 -0
- package/dist/SheetModel/edits.d.ts +68 -0
- package/dist/SheetModel/index.d.ts +14 -0
- package/dist/SheetModel/index.js +3 -0
- package/dist/SheetModel/labels.d.ts +71 -0
- package/dist/SheetModel/navigation.d.ts +79 -0
- package/dist/SheetModel/options.d.ts +28 -0
- package/dist/SheetModel/types.d.ts +126 -0
- package/dist/SheetModel/values.d.ts +76 -0
- package/dist/SheetModel/view.d.ts +32 -0
- package/dist/StatGroup/StatGroup.d.ts +7 -1
- package/dist/StatGroup/index.js +1 -1
- package/dist/{StatGroup-HVG6O62W.css → StatGroup-PADTJCUQ.css} +7 -0
- package/dist/Switcher/index.js +8 -8
- package/dist/Tag/Tag.d.ts +13 -0
- package/dist/Tag/index.js +1 -1
- package/dist/{Tag-4BRQS6GN.css → Tag-SRGTK5KI.css} +42 -0
- package/dist/TagsInput/index.js +4 -4
- package/dist/ThemeSwitcher/apply.d.ts +43 -0
- package/dist/ThemeSwitcher/index.d.ts +4 -2
- package/dist/ThemeSwitcher/index.js +3 -2
- package/dist/ThemeSwitcher/preferences.d.ts +2 -19
- package/dist/ThemeToggle/index.js +3 -2
- package/dist/TimeWindowPicker/index.js +4 -4
- package/dist/Timeline/Timeline.d.ts +7 -2
- package/dist/Timeline/index.js +1 -1
- package/dist/TreeCanvas/index.js +3 -3
- package/dist/TreeGrid/index.js +2 -2
- package/dist/VersionTimeline/VersionTimeline.d.ts +76 -0
- package/dist/VersionTimeline/index.d.ts +3 -0
- package/dist/VersionTimeline/index.js +10 -0
- package/dist/VersionTimeline-EBJ6MIPJ.css +108 -0
- package/dist/{chunk-SBRE7IML.js → chunk-2ONWEDQT.js} +1 -1
- package/dist/chunk-35XVR5JQ.js +81 -0
- package/dist/chunk-3BYIWOTV.js +29 -0
- package/dist/chunk-4KP4RC3O.js +25 -0
- package/dist/chunk-5XACKNYR.js +53 -0
- package/dist/chunk-63WJLRB2.js +24 -0
- package/dist/{chunk-L4ZLXYPO.js → chunk-6A7P6II6.js} +1 -1
- package/dist/chunk-6KWNXIDE.js +18 -0
- package/dist/chunk-6MIXD6IW.js +49 -0
- package/dist/{chunk-FA2V2VT6.js → chunk-7FQEUNHX.js} +4 -4
- package/dist/{chunk-DEEVA6TV.js → chunk-7IJARUIF.js} +17 -4
- package/dist/{chunk-JCO3SIST.js → chunk-7ZNKEPLN.js} +2 -2
- package/dist/chunk-AIVZVKYZ.js +126 -0
- package/dist/{chunk-FSKTOIYC.js → chunk-AJESMWJS.js} +5 -5
- package/dist/{chunk-O67VF5MS.js → chunk-AUQPBL4O.js} +2 -2
- package/dist/chunk-CENOOTAV.js +1 -0
- package/dist/chunk-DEJHAOC5.js +279 -0
- package/dist/{chunk-UCYIRDND.js → chunk-DQSXWQMJ.js} +1 -1
- package/dist/{chunk-JF7X673Z.js → chunk-EIGEIT4O.js} +2 -2
- package/dist/chunk-F6V2PTN6.js +142 -0
- package/dist/chunk-FFMCMSJB.js +1 -0
- package/dist/chunk-FW7HN6AP.js +40 -0
- package/dist/chunk-G3EEUNZQ.js +46 -0
- package/dist/{chunk-LOECRMHA.js → chunk-GFV4LJHH.js} +4 -3
- package/dist/chunk-HTCJSUIZ.js +216 -0
- package/dist/{chunk-75CLJNDQ.js → chunk-I6NZKJGK.js} +1 -1
- package/dist/chunk-I6POAB4V.js +20 -0
- package/dist/chunk-IXJHTFXG.js +17 -0
- package/dist/chunk-JEDWC3GI.js +98 -0
- package/dist/{chunk-QVAFL2LE.js → chunk-JXRI5YD2.js} +3 -3
- package/dist/{chunk-ZFH7H7GS.js → chunk-LOLELDBW.js} +1 -1
- package/dist/{chunk-6TSZCBID.js → chunk-NP2C4Y4E.js} +1 -1
- package/dist/{chunk-6NN2F7GM.js → chunk-OIMAK5AE.js} +6 -6
- package/dist/chunk-PPAQFGS2.js +12 -0
- package/dist/chunk-PUQY4WXR.js +1235 -0
- package/dist/chunk-QO7QEQKV.js +24 -0
- package/dist/chunk-RT323I4I.js +49 -0
- package/dist/chunk-S35G6PNC.js +80 -0
- package/dist/{chunk-HENOTGUV.js → chunk-T7ICFXEC.js} +2 -2
- package/dist/{chunk-2OLCUNG7.js → chunk-TBIZSQHB.js} +1 -1
- package/dist/chunk-TODND5AD.js +99 -0
- package/dist/{chunk-PQ63NLFC.js → chunk-UXELEORU.js} +3 -3
- package/dist/{chunk-6NIMZ5XC.js → chunk-VJLYGPPE.js} +1 -1
- package/dist/chunk-VYDFB6PJ.js +243 -0
- package/dist/{chunk-7QFAORCY.js → chunk-WHZFDS62.js} +1 -1
- package/dist/chunk-WXAULPBH.js +135 -0
- package/dist/chunk-XJ2QEBMM.js +277 -0
- package/dist/{chunk-NXDEPUVG.js → chunk-XU4ZUGLE.js} +20 -5
- package/dist/chunk-YM3GJHGW.js +69 -0
- package/dist/{chunk-T3ZWBZ65.js → chunk-YSJYWQSP.js} +2 -2
- package/dist/{chunk-CXBAIVYZ.js → chunk-YSY6UJ4F.js} +1 -1
- package/dist/chunk-YYZRLLLY.js +822 -0
- package/dist/{chunk-EG6NYWVK.js → chunk-YZCJ63JF.js} +1 -1
- package/dist/{chunk-K3OWD7BJ.js → chunk-Z24ZUSTX.js} +4 -19
- package/dist/chunk-ZXXDZJQN.js +36 -0
- package/dist/generated/index.d.ts +27 -0
- package/dist/generated/index.js +98 -69
- package/dist/index.js +98 -69
- package/dist/styles.css +13625 -11206
- package/dist/utils/index.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-EXHQ2QVW.js +0 -1
- package/dist/{chunk-CRVETI5L.js → chunk-4Z7PW3L6.js} +0 -0
- package/dist/{chunk-OYOQU7O5.js → chunk-EDGCPVVD.js} +1 -1
- package/dist/{chunk-NS7BVLL3.js → chunk-JULMZNGT.js} +1 -1
- package/dist/{chunk-2UU5IGZI.js → chunk-L4H7SSWF.js} +1 -1
- package/dist/{chunk-4GB57WIT.js → chunk-Q55TXPA3.js} +1 -1
- package/dist/{chunk-77IEHFY4.js → chunk-QQGWES46.js} +1 -1
- package/dist/{chunk-B2Z2CDM5.js → chunk-T5TFZ2JB.js} +1 -1
- package/dist/{chunk-AMH67MLM.js → chunk-TXAFKH2A.js} +1 -1
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export type
|
|
3
|
-
/** How much room the interface gives itself. `normal` is the unscaled step. */
|
|
4
|
-
export type DensityPreference = 'normal' | 'compact' | 'comfortable';
|
|
5
|
-
/**
|
|
6
|
-
* Puts the theme on the root element.
|
|
7
|
-
*
|
|
8
|
-
* `system` REMOVES the attribute rather than writing a third value, because
|
|
9
|
-
* following the system IS the absence of a choice, and the stylesheet's own
|
|
10
|
-
* default is the system's: a document with no attribute is dark, or light
|
|
11
|
-
* where the platform asks for light. What beats the system is an explicit
|
|
12
|
-
* value, in both directions: `light` by a block of its own, `dark` by keeping
|
|
13
|
-
* the light media block from matching. A `data-theme="system"` names no
|
|
14
|
-
* palette, so it would be a choice only to the code that asks whether the
|
|
15
|
-
* attribute is there at all, which is the wrong answer to give it.
|
|
16
|
-
*/
|
|
17
|
-
export declare function applyTheme(theme: ThemePreference): void;
|
|
18
|
-
/** Puts the density on the root element. `normal` removes the attribute. */
|
|
19
|
-
export declare function applyDensity(density: DensityPreference): void;
|
|
1
|
+
import { type DensityPreference, type ThemePreference } from './apply.js';
|
|
2
|
+
export type { DensityPreference, ThemePreference } from './apply.js';
|
|
20
3
|
export interface PreferenceOptions {
|
|
21
4
|
/** Where the choice is kept. An application picks its own name. */
|
|
22
5
|
storageKey: string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { ThemeToggle } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { ThemeToggle } from '../chunk-NP2C4Y4E.js';
|
|
2
|
+
import '../chunk-Z24ZUSTX.js';
|
|
3
|
+
import '../chunk-ZXXDZJQN.js';
|
|
3
4
|
import '../chunk-4FQT6ZAY.js';
|
|
4
5
|
import '../chunk-BZFWDIV6.js';
|
|
5
6
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-
|
|
1
|
+
export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-EIGEIT4O.js';
|
|
2
2
|
import '../chunk-FC4YTTFJ.js';
|
|
3
3
|
import '../chunk-F73MC7EZ.js';
|
|
4
|
-
import '../chunk-4GB57WIT.js';
|
|
5
4
|
import '../chunk-GXQ3B46I.js';
|
|
6
5
|
import '../chunk-OG6CL3EB.js';
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-PQADV6P6.js';
|
|
6
|
+
import '../chunk-Q55TXPA3.js';
|
|
9
7
|
import '../chunk-BWRGFKJP.js';
|
|
8
|
+
import '../chunk-PQADV6P6.js';
|
|
10
9
|
import '../chunk-HMPFGIWM.js';
|
|
11
10
|
import '../chunk-R25RGPUB.js';
|
|
11
|
+
import '../chunk-4FQT6ZAY.js';
|
|
12
12
|
import '../chunk-BZFWDIV6.js';
|
|
13
13
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -38,8 +38,13 @@ export interface TimelineItemProps extends LiHTMLAttributes<HTMLLIElement> {
|
|
|
38
38
|
* numbered ledger wants; a glyph where the step has an identity of its own.
|
|
39
39
|
*/
|
|
40
40
|
marker?: ReactNode;
|
|
41
|
-
/**
|
|
42
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Overrides the hidden label, for a step whose name is not its number.
|
|
43
|
+
* `false` draws no hidden label at all, for an item whose own content
|
|
44
|
+
* already says what it is: a hidden "Version 12" in front of a visible
|
|
45
|
+
* "Version 12" is read twice.
|
|
46
|
+
*/
|
|
47
|
+
label?: string | false | undefined;
|
|
43
48
|
}
|
|
44
49
|
/**
|
|
45
50
|
* One step.
|
package/dist/Timeline/index.js
CHANGED
package/dist/TreeCanvas/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { TreeCanvas } from '../chunk-
|
|
1
|
+
export { TreeCanvas } from '../chunk-TBIZSQHB.js';
|
|
2
2
|
import '../chunk-MY374UUD.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-TXAFKH2A.js';
|
|
4
4
|
import '../chunk-VYOKRN2I.js';
|
|
5
5
|
import '../chunk-OG6CL3EB.js';
|
|
6
|
-
import '../chunk-4FQT6ZAY.js';
|
|
7
6
|
import '../chunk-HMPFGIWM.js';
|
|
8
7
|
import '../chunk-R25RGPUB.js';
|
|
8
|
+
import '../chunk-4FQT6ZAY.js';
|
|
9
9
|
import '../chunk-BZFWDIV6.js';
|
|
10
10
|
import '../chunk-ODEQTPFM.js';
|
package/dist/TreeGrid/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { TreeGrid } from '../chunk-
|
|
1
|
+
export { TreeGrid } from '../chunk-T5TFZ2JB.js';
|
|
2
2
|
import '../chunk-MY374UUD.js';
|
|
3
3
|
import '../chunk-VYOKRN2I.js';
|
|
4
|
-
import '../chunk-4FQT6ZAY.js';
|
|
5
4
|
import '../chunk-HMPFGIWM.js';
|
|
6
5
|
import '../chunk-R25RGPUB.js';
|
|
6
|
+
import '../chunk-4FQT6ZAY.js';
|
|
7
7
|
import '../chunk-BZFWDIV6.js';
|
|
8
8
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { type Principal } from '../Principal/index.js';
|
|
3
|
+
import { type TimeValue } from '../RelativeTime/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* What made a version.
|
|
6
|
+
*
|
|
7
|
+
* A schema or a capability change has a row of its own, because it changes
|
|
8
|
+
* what the page CAN DO rather than what it shows. A restore is a publish of an
|
|
9
|
+
* old version as a new one, never a rewrite of history, so it names the
|
|
10
|
+
* version it brought back.
|
|
11
|
+
*/
|
|
12
|
+
export type VersionKind = 'publish' | 'restore' | 'schema' | 'capabilities';
|
|
13
|
+
export interface VersionItem {
|
|
14
|
+
version: number;
|
|
15
|
+
kind?: VersionKind | undefined;
|
|
16
|
+
/** A name somebody gave this version ("Review draft"). */
|
|
17
|
+
label?: string | undefined;
|
|
18
|
+
/** What changed, in the author's words or the engine's ("Added totals row"). */
|
|
19
|
+
summary?: string | undefined;
|
|
20
|
+
author: Principal;
|
|
21
|
+
at: TimeValue;
|
|
22
|
+
/** Where it came from: a task and a turn, as a link or as words. */
|
|
23
|
+
source?: ReactNode;
|
|
24
|
+
/** For a restore: the version it brought back. */
|
|
25
|
+
restoredFrom?: number | undefined;
|
|
26
|
+
}
|
|
27
|
+
export interface VersionTimelineLabels {
|
|
28
|
+
list: string;
|
|
29
|
+
version: (version: number) => string;
|
|
30
|
+
latest: string;
|
|
31
|
+
publish: string;
|
|
32
|
+
restore: (from: number | undefined) => string;
|
|
33
|
+
schema: string;
|
|
34
|
+
capabilities: string;
|
|
35
|
+
compare: string;
|
|
36
|
+
/** The compare control's accessible name; it is a toggle, pressed while this version is compared. */
|
|
37
|
+
compareWith: (version: number) => string;
|
|
38
|
+
restoreAction: string;
|
|
39
|
+
restoreVersion: (version: number) => string;
|
|
40
|
+
labelAction: string;
|
|
41
|
+
labelVersion: (version: number) => string;
|
|
42
|
+
/** The line for versions the engine no longer keeps, given the oldest it does. */
|
|
43
|
+
retention: (oldestKept: number) => string;
|
|
44
|
+
}
|
|
45
|
+
export interface VersionTimelineProps extends Omit<HTMLAttributes<HTMLElement>, 'onSelect'> {
|
|
46
|
+
/** Newest first. */
|
|
47
|
+
versions: readonly VersionItem[];
|
|
48
|
+
/** The newest version. The highest one listed when left out. */
|
|
49
|
+
latest?: number | undefined;
|
|
50
|
+
/** The version on show. */
|
|
51
|
+
selected: number;
|
|
52
|
+
/** The version the one on show is compared with, if any. */
|
|
53
|
+
against?: number | undefined;
|
|
54
|
+
onSelect: (version: number) => void;
|
|
55
|
+
/** Compares the version on show with this one; `null` stops comparing. Without it there is no compare control. */
|
|
56
|
+
onCompare?: ((version: number | null) => void) | undefined;
|
|
57
|
+
/** Publishes this version again as a new one. Without it there is no restore control. */
|
|
58
|
+
onRestore?: ((version: number) => void) | undefined;
|
|
59
|
+
/** Names this version. Without it there is no name control. */
|
|
60
|
+
onLabel?: ((version: number) => void) | undefined;
|
|
61
|
+
/** The oldest version the engine still keeps; anything below it is said to be past retention. */
|
|
62
|
+
oldestKept?: number | undefined;
|
|
63
|
+
/** Overrides the shared clock, for a story or a suite. */
|
|
64
|
+
now?: number | undefined;
|
|
65
|
+
labels?: Partial<VersionTimelineLabels> | undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* An artifact's versions, newest first, with the one on show and the one it is
|
|
69
|
+
* compared with marked.
|
|
70
|
+
*
|
|
71
|
+
* SELECTING IS NOT RESTORING. Choosing a row shows that version; Restore is a
|
|
72
|
+
* separate control, and it publishes the old version as a new one, so nothing
|
|
73
|
+
* a reader does here rewrites history. The newest version offers no Restore,
|
|
74
|
+
* because it is already what everybody sees.
|
|
75
|
+
*/
|
|
76
|
+
export declare function VersionTimeline({ versions, latest, selected, against, onSelect, onCompare, onRestore, onLabel, oldestKept, now, labels, className, ...rest }: VersionTimelineProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { VersionTimeline } from '../chunk-WXAULPBH.js';
|
|
2
|
+
import '../chunk-AUQPBL4O.js';
|
|
3
|
+
import '../chunk-OG6CL3EB.js';
|
|
4
|
+
import '../chunk-4KP4RC3O.js';
|
|
5
|
+
import '../chunk-3CZ7XAVY.js';
|
|
6
|
+
import '../chunk-EUCC37WY.js';
|
|
7
|
+
import '../chunk-UAN5NE7M.js';
|
|
8
|
+
import '../chunk-5OM447RW.js';
|
|
9
|
+
import '../chunk-BZFWDIV6.js';
|
|
10
|
+
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A version list beside the version on show. The row's main line is the
|
|
3
|
+
* button that shows it; the controls sit under the facts, so a reader scanning
|
|
4
|
+
* the list reads numbers and names rather than a column of buttons.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
.crewlet-version-timeline {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: var(--spacing-2);
|
|
11
|
+
min-width: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.crewlet-version-timeline__select {
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
align-items: flex-start;
|
|
18
|
+
gap: var(--spacing-1);
|
|
19
|
+
width: 100%;
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
22
|
+
border: 0;
|
|
23
|
+
border-radius: var(--radius-sm);
|
|
24
|
+
background: transparent;
|
|
25
|
+
color: var(--color-text-primary);
|
|
26
|
+
font: inherit;
|
|
27
|
+
text-align: start;
|
|
28
|
+
cursor: pointer;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.crewlet-version-timeline__select:hover {
|
|
32
|
+
background: var(--color-surface-hover);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* The version on show. The accent means "where the reader is", which is
|
|
36
|
+
exactly what this row is. */
|
|
37
|
+
.crewlet-version-timeline__select[aria-current='true'] {
|
|
38
|
+
background: var(--color-brand-accent-soft);
|
|
39
|
+
box-shadow: inset 2px 0 0 var(--color-brand-accent);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.crewlet-version-timeline__head {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex-wrap: wrap;
|
|
45
|
+
align-items: baseline;
|
|
46
|
+
gap: var(--spacing-2);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.crewlet-version-timeline__number {
|
|
50
|
+
font-weight: var(--font-weight-semibold);
|
|
51
|
+
font-variant-numeric: tabular-nums;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.crewlet-version-timeline__latest,
|
|
55
|
+
.crewlet-version-timeline__label {
|
|
56
|
+
padding: 0 var(--spacing-1);
|
|
57
|
+
border-radius: var(--radius-xs);
|
|
58
|
+
font-size: var(--font-size-xs);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.crewlet-version-timeline__latest {
|
|
62
|
+
background: var(--color-surface-inset);
|
|
63
|
+
color: var(--color-text-secondary);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.crewlet-version-timeline__label {
|
|
67
|
+
border: 1px solid var(--color-border-default);
|
|
68
|
+
color: var(--color-text-primary);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.crewlet-version-timeline__summary {
|
|
72
|
+
color: var(--color-text-secondary);
|
|
73
|
+
overflow-wrap: anywhere;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.crewlet-version-timeline__meta,
|
|
77
|
+
.crewlet-version-timeline__source {
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-wrap: wrap;
|
|
80
|
+
align-items: center;
|
|
81
|
+
gap: var(--spacing-1);
|
|
82
|
+
padding-inline: var(--spacing-2);
|
|
83
|
+
color: var(--color-text-tertiary);
|
|
84
|
+
font-size: var(--font-size-xs);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.crewlet-version-timeline__actions {
|
|
88
|
+
display: flex;
|
|
89
|
+
flex-wrap: wrap;
|
|
90
|
+
gap: var(--spacing-1);
|
|
91
|
+
padding-inline: var(--spacing-1);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* The version compared against carries the same edge in the strong neutral:
|
|
95
|
+
it is the other side of the comparison, not where the reader is, so it does
|
|
96
|
+
not take the accent. */
|
|
97
|
+
.is-compared > .crewlet-timeline__body > .crewlet-version-timeline__select {
|
|
98
|
+
box-shadow: inset 2px 0 0 var(--color-border-strong);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.crewlet-version-timeline__gap {
|
|
102
|
+
margin: 0;
|
|
103
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
104
|
+
border: 1px dashed var(--color-border-default);
|
|
105
|
+
border-radius: var(--radius-md);
|
|
106
|
+
color: var(--color-text-tertiary);
|
|
107
|
+
font-size: var(--font-size-xs);
|
|
108
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useThemePreference, useDensityPreference } from './chunk-
|
|
1
|
+
import { useThemePreference, useDensityPreference } from './chunk-Z24ZUSTX.js';
|
|
2
2
|
import { SegmentedControl } from './chunk-26PEPONN.js';
|
|
3
3
|
import { SunGlyph, MonitorGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Count } from './chunk-BHHIIK3M.js';
|
|
2
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
+
import './ArrangeGroup-SHFHA7BE.css';
|
|
4
|
+
import { useId } from 'react';
|
|
5
|
+
import { ChevronDownGlyph } from '@crewlethq/icons/glyphs';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var PLACEHOLDER = "Name this group";
|
|
9
|
+
function ArrangeGroup({
|
|
10
|
+
title,
|
|
11
|
+
tone = "none",
|
|
12
|
+
collapsed,
|
|
13
|
+
onCollapsedChange,
|
|
14
|
+
count,
|
|
15
|
+
onTitleChange,
|
|
16
|
+
bodyProps,
|
|
17
|
+
empty,
|
|
18
|
+
columns = 12,
|
|
19
|
+
actions,
|
|
20
|
+
className,
|
|
21
|
+
children,
|
|
22
|
+
...rest
|
|
23
|
+
}) {
|
|
24
|
+
const bodyId = `${useId()}-body`;
|
|
25
|
+
const { className: bodyClass, style: bodyStyle, ...body } = bodyProps ?? {};
|
|
26
|
+
const hasChildren = Array.isArray(children) ? children.some(Boolean) : Boolean(children);
|
|
27
|
+
return /* @__PURE__ */ jsxs(
|
|
28
|
+
"section",
|
|
29
|
+
{
|
|
30
|
+
className: cx("crewlet-arrange-group", `crewlet-arrange-group--${tone}`, collapsed && "is-collapsed", className),
|
|
31
|
+
"aria-label": title || "Untitled group",
|
|
32
|
+
...rest,
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ jsxs("header", { className: "crewlet-arrange-group__head", children: [
|
|
35
|
+
/* @__PURE__ */ jsxs(
|
|
36
|
+
"button",
|
|
37
|
+
{
|
|
38
|
+
type: "button",
|
|
39
|
+
className: cx("crewlet-arrange-group__toggle", onTitleChange && "is-icon"),
|
|
40
|
+
"aria-expanded": !collapsed,
|
|
41
|
+
"aria-controls": bodyId,
|
|
42
|
+
"aria-label": onTitleChange ? `${collapsed ? "Expand" : "Collapse"} ${title || "group"}` : void 0,
|
|
43
|
+
onClick: () => onCollapsedChange(!collapsed),
|
|
44
|
+
children: [
|
|
45
|
+
/* @__PURE__ */ jsx(ChevronDownGlyph, { size: "sm", className: "crewlet-arrange-group__chevron" }),
|
|
46
|
+
onTitleChange ? null : /* @__PURE__ */ jsx("span", { className: "crewlet-arrange-group__title", children: title || "Untitled group" })
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
onTitleChange ? /* @__PURE__ */ jsx(
|
|
51
|
+
"input",
|
|
52
|
+
{
|
|
53
|
+
className: "crewlet-arrange-group__title-field",
|
|
54
|
+
"aria-label": "Group name",
|
|
55
|
+
value: title,
|
|
56
|
+
maxLength: 60,
|
|
57
|
+
placeholder: PLACEHOLDER,
|
|
58
|
+
size: Math.max(3, (title || PLACEHOLDER).length),
|
|
59
|
+
onChange: (e) => onTitleChange(e.target.value)
|
|
60
|
+
}
|
|
61
|
+
) : null,
|
|
62
|
+
count !== void 0 ? /* @__PURE__ */ jsx(Count, { value: count, className: "crewlet-arrange-group__count" }) : null,
|
|
63
|
+
actions ? /* @__PURE__ */ jsx("span", { className: "crewlet-arrange-group__actions", children: actions }) : null
|
|
64
|
+
] }),
|
|
65
|
+
/* @__PURE__ */ jsx(
|
|
66
|
+
"div",
|
|
67
|
+
{
|
|
68
|
+
id: bodyId,
|
|
69
|
+
className: cx("crewlet-arrange-group__body", bodyClass),
|
|
70
|
+
style: { ...bodyStyle, ["--crewlet-arrange-columns"]: columns },
|
|
71
|
+
hidden: collapsed,
|
|
72
|
+
...body,
|
|
73
|
+
children: hasChildren ? children : empty ? /* @__PURE__ */ jsx("div", { className: "crewlet-arrange-group__empty", children: empty }) : null
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { ArrangeGroup };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { presenceHueClass } from './chunk-I6POAB4V.js';
|
|
2
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
+
import './CursorFlag-AJQJBUGY.css';
|
|
4
|
+
import { PencilGlyph } from '@crewlethq/icons/glyphs';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function CursorFlag({ name, hue, kind = "human", editing = false, placement = "top-end", className, ...rest }) {
|
|
8
|
+
const text = typeof name === "string" ? name : name.join(", ");
|
|
9
|
+
return /* @__PURE__ */ jsxs(
|
|
10
|
+
"span",
|
|
11
|
+
{
|
|
12
|
+
...rest,
|
|
13
|
+
"aria-hidden": "true",
|
|
14
|
+
className: cx(
|
|
15
|
+
"crewlet-cursor-flag",
|
|
16
|
+
presenceHueClass(hue),
|
|
17
|
+
`crewlet-cursor-flag--${kind}`,
|
|
18
|
+
`crewlet-cursor-flag--${placement}`,
|
|
19
|
+
className
|
|
20
|
+
),
|
|
21
|
+
children: [
|
|
22
|
+
editing ? /* @__PURE__ */ jsx(PencilGlyph, { size: "xs", className: "crewlet-cursor-flag__glyph" }) : null,
|
|
23
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-cursor-flag__name", children: text })
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { CursorFlag };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Avatar } from './chunk-5OM447RW.js';
|
|
2
|
+
import { UsersGlyph } from '@crewlethq/icons/glyphs';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var PRINCIPAL_KINDS = ["person", "agent", "team"];
|
|
6
|
+
function PrincipalAvatar({ principal, size = "sm", decorative = true }) {
|
|
7
|
+
const { kind, name, character, hue, src } = principal;
|
|
8
|
+
if (kind === "team") {
|
|
9
|
+
return /* @__PURE__ */ jsx(Avatar, { name, size, kind: "agent", icon: /* @__PURE__ */ jsx(UsersGlyph, {}), decorative });
|
|
10
|
+
}
|
|
11
|
+
return /* @__PURE__ */ jsx(
|
|
12
|
+
Avatar,
|
|
13
|
+
{
|
|
14
|
+
name,
|
|
15
|
+
size,
|
|
16
|
+
kind: kind === "person" ? "human" : "agent",
|
|
17
|
+
character: kind === "agent" ? character : void 0,
|
|
18
|
+
hue: kind === "agent" ? hue : void 0,
|
|
19
|
+
src,
|
|
20
|
+
decorative
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { PRINCIPAL_KINDS, PrincipalAvatar };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CursorFlag } from './chunk-3BYIWOTV.js';
|
|
2
|
+
import { presenceHueClass } from './chunk-I6POAB4V.js';
|
|
3
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
4
|
+
import './LiveCursor-DZHGIYWE.css';
|
|
5
|
+
import { useState, useEffect } from 'react';
|
|
6
|
+
import { MousePointer2Glyph } from '@crewlethq/icons/glyphs';
|
|
7
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var LIVE_CURSOR_REST_MS = 5e3;
|
|
10
|
+
var LIVE_CURSOR_HIDE_MS = 3e4;
|
|
11
|
+
function LiveCursor({
|
|
12
|
+
x,
|
|
13
|
+
y,
|
|
14
|
+
name,
|
|
15
|
+
hue,
|
|
16
|
+
kind = "human",
|
|
17
|
+
idleAfterMs = LIVE_CURSOR_REST_MS,
|
|
18
|
+
hideAfterMs = LIVE_CURSOR_HIDE_MS,
|
|
19
|
+
interpolate = true,
|
|
20
|
+
className
|
|
21
|
+
}) {
|
|
22
|
+
const [phase, setPhase] = useState("live");
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
setPhase("live");
|
|
25
|
+
const rest = setTimeout(() => setPhase("resting"), idleAfterMs);
|
|
26
|
+
const hide = setTimeout(() => setPhase("gone"), hideAfterMs);
|
|
27
|
+
return () => {
|
|
28
|
+
clearTimeout(rest);
|
|
29
|
+
clearTimeout(hide);
|
|
30
|
+
};
|
|
31
|
+
}, [x, y, idleAfterMs, hideAfterMs]);
|
|
32
|
+
return /* @__PURE__ */ jsxs(
|
|
33
|
+
"span",
|
|
34
|
+
{
|
|
35
|
+
"aria-hidden": "true",
|
|
36
|
+
"data-phase": phase,
|
|
37
|
+
className: cx(
|
|
38
|
+
"crewlet-live-cursor",
|
|
39
|
+
presenceHueClass(hue),
|
|
40
|
+
interpolate && "crewlet-live-cursor--glide",
|
|
41
|
+
phase !== "live" && `crewlet-live-cursor--${phase}`,
|
|
42
|
+
className
|
|
43
|
+
),
|
|
44
|
+
style: { transform: `translate(${x}px, ${y}px)` },
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ jsx(MousePointer2Glyph, { size: "lg", filled: true, className: "crewlet-live-cursor__pointer" }),
|
|
47
|
+
/* @__PURE__ */ jsx(CursorFlag, { name, hue, kind, placement: "inline", className: "crewlet-live-cursor__flag" })
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { LIVE_CURSOR_HIDE_MS, LIVE_CURSOR_REST_MS, LiveCursor };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
2
|
+
import './Note-RT4L6VUT.css';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var Note = forwardRef(function Note2({ tone = "amber", align = "start", size = "md", className, children, ...rest }, ref) {
|
|
7
|
+
return /* @__PURE__ */ jsx(
|
|
8
|
+
"div",
|
|
9
|
+
{
|
|
10
|
+
ref,
|
|
11
|
+
className: cx(
|
|
12
|
+
"crewlet-note",
|
|
13
|
+
`crewlet-note--${tone}`,
|
|
14
|
+
align === "center" && "crewlet-note--center",
|
|
15
|
+
size === "lg" && "crewlet-note--lg",
|
|
16
|
+
className
|
|
17
|
+
),
|
|
18
|
+
...rest,
|
|
19
|
+
children
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export { Note };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
2
|
+
import './Divider-3Z77ZAJH.css';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
function Divider({ label, align = "start", className, ...rest }) {
|
|
6
|
+
return /* @__PURE__ */ jsx(
|
|
7
|
+
"div",
|
|
8
|
+
{
|
|
9
|
+
role: "separator",
|
|
10
|
+
"aria-label": label || void 0,
|
|
11
|
+
className: cx("crewlet-divider", label && "crewlet-divider--labelled", label && align === "center" && "crewlet-divider--center", className),
|
|
12
|
+
...rest,
|
|
13
|
+
children: label ? /* @__PURE__ */ jsx("span", { className: "crewlet-divider__label", children: label }) : null
|
|
14
|
+
}
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { Divider };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
2
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
+
import './PinTile-IIA25MNZ.css';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import { GripVerticalGlyph, PinGlyph } from '@crewlethq/icons/glyphs';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var PinTile = forwardRef(function PinTile2({ title, href, kind, meta, leading, status, figure, onUnpin, handle, className, ...rest }, ref) {
|
|
9
|
+
const { "aria-label": handleName, ...handleRest } = handle ?? { "aria-label": "" };
|
|
10
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cx("crewlet-pin-tile", className), ...rest, children: [
|
|
11
|
+
handle ? /* @__PURE__ */ jsx(
|
|
12
|
+
IconButton,
|
|
13
|
+
{
|
|
14
|
+
size: "sm",
|
|
15
|
+
variant: "ghost",
|
|
16
|
+
className: "crewlet-pin-tile__handle",
|
|
17
|
+
label: handleName,
|
|
18
|
+
icon: /* @__PURE__ */ jsx(GripVerticalGlyph, { size: "sm" }),
|
|
19
|
+
...handleRest
|
|
20
|
+
}
|
|
21
|
+
) : null,
|
|
22
|
+
leading ? /* @__PURE__ */ jsx("span", { className: "crewlet-pin-tile__leading", "aria-hidden": "true", children: leading }) : null,
|
|
23
|
+
/* @__PURE__ */ jsxs("span", { className: "crewlet-pin-tile__body", children: [
|
|
24
|
+
/* @__PURE__ */ jsxs("span", { className: "crewlet-pin-tile__head", children: [
|
|
25
|
+
/* @__PURE__ */ jsx("a", { className: "crewlet-pin-tile__link", href, children: title }),
|
|
26
|
+
status ? /* @__PURE__ */ jsx("span", { className: "crewlet-pin-tile__status", children: status }) : null
|
|
27
|
+
] }),
|
|
28
|
+
kind || meta ? /* @__PURE__ */ jsxs("span", { className: "crewlet-pin-tile__meta", children: [
|
|
29
|
+
kind ? /* @__PURE__ */ jsx("span", { className: "crewlet-pin-tile__kind", children: kind }) : null,
|
|
30
|
+
kind && meta ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }) : null,
|
|
31
|
+
meta
|
|
32
|
+
] }) : null
|
|
33
|
+
] }),
|
|
34
|
+
figure !== void 0 && figure !== null ? /* @__PURE__ */ jsx("span", { className: "crewlet-pin-tile__figure", children: figure }) : null,
|
|
35
|
+
onUnpin ? /* @__PURE__ */ jsx(
|
|
36
|
+
IconButton,
|
|
37
|
+
{
|
|
38
|
+
size: "sm",
|
|
39
|
+
variant: "ghost",
|
|
40
|
+
className: "crewlet-pin-tile__unpin",
|
|
41
|
+
label: `Unpin ${title}`,
|
|
42
|
+
icon: /* @__PURE__ */ jsx(PinGlyph, { size: "sm" }),
|
|
43
|
+
onClick: onUnpin
|
|
44
|
+
}
|
|
45
|
+
) : null
|
|
46
|
+
] });
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export { PinTile };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Skeleton } from './chunk-W5J7R5EB.js';
|
|
2
|
-
import { Modal } from './chunk-
|
|
2
|
+
import { Modal } from './chunk-7IJARUIF.js';
|
|
3
3
|
import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
|
|
4
|
-
import { Input } from './chunk-
|
|
4
|
+
import { Input } from './chunk-Q55TXPA3.js';
|
|
5
|
+
import { Popover } from './chunk-BWRGFKJP.js';
|
|
5
6
|
import { KeyChip, highlightMatch } from './chunk-FYTIJM2T.js';
|
|
6
|
-
import { announce } from './chunk-RSAQOKH3.js';
|
|
7
7
|
import { useMediaMatch } from './chunk-IG75YMUN.js';
|
|
8
|
-
import { Popover } from './chunk-BWRGFKJP.js';
|
|
9
8
|
import { focusables, isComposing } from './chunk-R25RGPUB.js';
|
|
9
|
+
import { announce } from './chunk-RSAQOKH3.js';
|
|
10
10
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
11
11
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
12
12
|
import './Switcher-B44Q4WF4.css';
|