@crewlethq/ui 0.76.1 → 0.77.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 (115) hide show
  1. package/README.md +8 -0
  2. package/dist/AgentHandoffPanel/index.js +4 -4
  3. package/dist/AppShell/index.js +3 -3
  4. package/dist/ArrangeList/index.js +4 -4
  5. package/dist/ArtifactBar/index.js +6 -6
  6. package/dist/ArtifactCard/index.js +4 -4
  7. package/dist/ArtifactPanel/index.js +1 -1
  8. package/dist/AvatarPicker/index.js +6 -6
  9. package/dist/Canvas/index.js +2 -2
  10. package/dist/CanvasBoard/index.js +4 -4
  11. package/dist/CanvasToolbar/index.js +3 -3
  12. package/dist/CheckGrid/CheckGrid.d.ts +62 -0
  13. package/dist/CheckGrid/index.d.ts +3 -0
  14. package/dist/CheckGrid/index.js +11 -0
  15. package/dist/CheckGrid-B3SRTHOJ.css +287 -0
  16. package/dist/Checkbox/index.js +3 -3
  17. package/dist/ChoiceCards/ChoiceCards.d.ts +20 -6
  18. package/dist/ChoiceCards/index.d.ts +1 -1
  19. package/dist/ChoiceCards/index.js +1 -1
  20. package/dist/{ChoiceCards-HAGJMK6Q.css → ChoiceCards-TVMBO3HZ.css} +60 -5
  21. package/dist/ColorField/index.js +3 -3
  22. package/dist/Combobox/index.js +3 -3
  23. package/dist/CommandPalette/index.js +3 -3
  24. package/dist/CommentThread/index.js +5 -5
  25. package/dist/Composer/index.js +3 -3
  26. package/dist/ConfirmField/index.js +3 -3
  27. package/dist/ContrastHelp/index.js +1 -1
  28. package/dist/DataGrid/index.js +4 -4
  29. package/dist/DataTable/index.js +5 -5
  30. package/dist/DataView/index.js +7 -7
  31. package/dist/DateTimePicker/index.js +2 -2
  32. package/dist/DocTabsEditor/index.js +4 -4
  33. package/dist/{Editor-BXOWAV46.js → Editor-MPNGVAWD.js} +3 -3
  34. package/dist/HuePicker/index.js +5 -5
  35. package/dist/Input/index.js +2 -2
  36. package/dist/LinkInterstitial/index.js +1 -1
  37. package/dist/ListInput/index.js +3 -3
  38. package/dist/MarkdownEditor/index.js +5 -5
  39. package/dist/Menu/index.js +2 -2
  40. package/dist/MergeConflicts/index.js +5 -5
  41. package/dist/Modal/index.js +1 -1
  42. package/dist/OrgTable/index.js +1 -1
  43. package/dist/PresenterView/index.js +1 -1
  44. package/dist/PrincipalPicker/index.js +4 -4
  45. package/dist/ProposalCard/index.js +4 -4
  46. package/dist/RichEditor/index.js +1 -1
  47. package/dist/SegmentedControl/index.js +4 -4
  48. package/dist/SetupWizard/index.js +2 -2
  49. package/dist/ShareDialog/index.js +1 -1
  50. package/dist/SheetColumnEditor/index.js +8 -8
  51. package/dist/SheetGrid/index.js +3 -3
  52. package/dist/SidePanel/index.js +1 -1
  53. package/dist/SlideFilmstrip/index.js +3 -3
  54. package/dist/Switcher/index.js +3 -3
  55. package/dist/Tabs/index.js +3 -3
  56. package/dist/TagsInput/index.js +2 -2
  57. package/dist/ThemeSwitcher/index.js +5 -5
  58. package/dist/TimeRangePicker/index.js +6 -6
  59. package/dist/TimeWindowPicker/index.js +3 -3
  60. package/dist/TreeCanvas/index.js +3 -3
  61. package/dist/TreeGrid/index.js +1 -1
  62. package/dist/ValueField/index.js +4 -4
  63. package/dist/VersionCompare/index.js +5 -5
  64. package/dist/{chunk-TKUAGWNR.js → chunk-2GBG7KPK.js} +1 -1
  65. package/dist/{chunk-IPBSCJIZ.js → chunk-2LIGIIE2.js} +3 -3
  66. package/dist/{chunk-5CEQ3HLH.js → chunk-3NYVPLPW.js} +1 -1
  67. package/dist/{chunk-SK5SLGZH.js → chunk-4HO3NX3B.js} +1 -1
  68. package/dist/{chunk-45M73G5A.js → chunk-4Y7PLU4I.js} +1 -1
  69. package/dist/{chunk-YQDRJZ5J.js → chunk-62GVKZJI.js} +1 -1
  70. package/dist/{chunk-RIAPCEB5.js → chunk-72Y5DBSY.js} +2 -2
  71. package/dist/{chunk-ZW5SRQ5M.js → chunk-A5HENOP2.js} +1 -1
  72. package/dist/{chunk-57AKYFML.js → chunk-A6NUAQFW.js} +1 -1
  73. package/dist/{chunk-MKFEVHSR.js → chunk-B7NX425Z.js} +16 -3
  74. package/dist/{chunk-GHQG4VZA.js → chunk-BRFIUUXX.js} +2 -2
  75. package/dist/{chunk-E35HYQMK.js → chunk-CZUIPICC.js} +1 -1
  76. package/dist/{chunk-DSMQTED5.js → chunk-DCAT5OAX.js} +1 -1
  77. package/dist/{chunk-HWPP22XG.js → chunk-E6ETTJWX.js} +4 -4
  78. package/dist/{chunk-ZMIVQGAB.js → chunk-ELNUZDFK.js} +4 -4
  79. package/dist/{chunk-TJIBTHWJ.js → chunk-EVOGHRFN.js} +2 -2
  80. package/dist/{chunk-6EWNMSS4.js → chunk-FRLUJAFK.js} +1 -1
  81. package/dist/{chunk-LMQG3VPG.js → chunk-GKWZTTFV.js} +1 -1
  82. package/dist/{chunk-UY3FWQWG.js → chunk-HDLUG3MA.js} +2 -2
  83. package/dist/{chunk-TPCBPGSB.js → chunk-HMOGLAXY.js} +1 -1
  84. package/dist/chunk-HUIYSNBS.js +65 -0
  85. package/dist/{chunk-2STOSJT3.js → chunk-HYGCGN37.js} +1 -1
  86. package/dist/{chunk-6THG44LI.js → chunk-KQQWGWCC.js} +1 -1
  87. package/dist/{chunk-OCGIQGYJ.js → chunk-KXYZ5XS2.js} +2 -2
  88. package/dist/{chunk-TPIMOGOZ.js → chunk-LJSQT5NJ.js} +1 -1
  89. package/dist/{chunk-HZDI2CCS.js → chunk-LXB4CABM.js} +2 -2
  90. package/dist/{chunk-LCZULGMB.js → chunk-MKWURHR5.js} +1 -1
  91. package/dist/{chunk-FQI62PIZ.js → chunk-ODAZIKZF.js} +2 -2
  92. package/dist/{chunk-I3G5FJ54.js → chunk-P34YWECQ.js} +1 -1
  93. package/dist/{chunk-OOLMTUCO.js → chunk-SOERZJVJ.js} +1 -1
  94. package/dist/{chunk-KL6A7JGH.js → chunk-SQ7GYC4K.js} +1 -1
  95. package/dist/{chunk-T24HBEU6.js → chunk-TL74TBDR.js} +1 -1
  96. package/dist/{chunk-ADGNISEI.js → chunk-U4ICCJJP.js} +2 -2
  97. package/dist/{chunk-IQMWMT4V.js → chunk-UEEWK7SO.js} +2 -2
  98. package/dist/{chunk-JQEXAH7G.js → chunk-VDIKDCNE.js} +1 -1
  99. package/dist/{chunk-MP7DGKB6.js → chunk-VJ6SSEMG.js} +1 -1
  100. package/dist/{chunk-CFTBESST.js → chunk-WM3U4ARK.js} +1 -1
  101. package/dist/{chunk-BKXUZCZX.js → chunk-WOTGQVHZ.js} +1 -1
  102. package/dist/{chunk-ZKLEAK7M.js → chunk-XL2RXAPT.js} +1 -1
  103. package/dist/{chunk-PMBJMNBX.js → chunk-YLYIVN72.js} +1 -1
  104. package/dist/generated/index.d.ts +1 -0
  105. package/dist/generated/index.js +76 -75
  106. package/dist/index.js +76 -75
  107. package/dist/styles.css +351 -6
  108. package/package.json +3 -3
  109. package/dist/{chunk-FB3TCNQP.js → chunk-6Q7RW2JJ.js} +1 -1
  110. package/dist/{chunk-PCBPDMNU.js → chunk-CDFQ7MQK.js} +0 -0
  111. package/dist/{chunk-OBPINJNO.js → chunk-EMCVX5FY.js} +1 -1
  112. package/dist/{chunk-OQG4P5KU.js → chunk-KNAHKQD4.js} +1 -1
  113. package/dist/{chunk-5EFLA6BW.js → chunk-PD2GOJ5V.js} +1 -1
  114. package/dist/{chunk-HPI5J6AR.js → chunk-SWLVR54P.js} +1 -1
  115. package/dist/{chunk-WK4FQPYW.js → chunk-TD6LHL7M.js} +1 -1
package/README.md CHANGED
@@ -205,6 +205,14 @@ places:
205
205
  - A surface that pans or zooms dispatches `LAYER_REPOSITION_EVENT` on its host
206
206
  when the content beneath it moves, and every panel anchored inside follows.
207
207
 
208
+ ## Changes in 0.77.0
209
+
210
+ **`CheckGrid`, checkboxes where rows meet columns**: which seats run which jobs, which people hold which access. Each box is a native checkbox named by its row and its column ("Backend Engineer Coding"), each row a group named by its row, and a box can be on, off or partly on (`mixed`). Where every column fits, a header names the columns once and the boxes stand under them; where they do not (a phone, a narrow column), each row stacks with its column's name beside every box, so no column is cut off behind a sideways scroll. Which applies is the grid's own width, by a container query, and a grid of more than six columns always stacks. A column can refuse new ticks with `disabledReason`, drawn once under the grid and read with each refused box; a box already on stays free to take off. The types are `CheckGridProps`, `CheckGridRow`, `CheckGridColumn` and `CheckGridState`.
211
+
212
+ **`ChoiceCards` stands three across a form's wide column.** `minCardWidth` takes `sm`, 15rem, beside `md` (20rem, still the default) and `lg` (24rem). The new `density` prop takes `compact` (the default stays `comfortable`): the card's padding and the gap between cards step down from `--spacing-3` to `--spacing-2`, a picture is capped at 1.25rem (the icons package's `lg` glyph step, `GLYPH_SIZES.lg`) whatever size the caller drew it at, and the description takes the facts' size. Every line stays: the description, each fact and a disabled card's whole reason wrap in full, and nothing is clamped or dropped. The radios, their names and descriptions, the subgrid rows and the forced-colours treatment are unchanged. The new type is `ChoiceCardsDensity`.
213
+
214
+ **A `ChoiceCards` name stays whole beside its tag.** Where the name and its `tag` do not fit on one line, the tag moves to a line of its own rather than breaking the name mid-phrase, and the title's lines stand at the top of their row, so a name stays level with its radio when a card beside it takes two. The name is at least the title step tall, its words centred in it, so its line is centred on the radio at both densities whether or not the tag wraps.
215
+
208
216
  ## Changes in 0.76.1
209
217
 
210
218
  **`SetupWizard`'s row of steps on a phone has a name of its own.** While the row hides steps it takes the keyboard to scroll, as a group named by the new `labels.stepsRow` ("All steps, scrolls sideways"), rather than by `stepsLabel` again, which already names the navigation around it and the list inside it.
@@ -1,12 +1,12 @@
1
- export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-57AKYFML.js';
1
+ export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-A6NUAQFW.js';
2
2
  import '../chunk-4MJN2KN6.js';
3
3
  import '../chunk-WFCWPXJN.js';
4
- import '../chunk-E35HYQMK.js';
4
+ import '../chunk-CZUIPICC.js';
5
5
  import '../chunk-222VILSP.js';
6
6
  import '../chunk-FFGEJUAP.js';
7
7
  import '../chunk-CLJGFOTV.js';
8
8
  import '../chunk-ANTAQAR4.js';
9
- import '../chunk-FB3TCNQP.js';
9
+ import '../chunk-6Q7RW2JJ.js';
10
10
  import '../chunk-PGCLHYVP.js';
11
11
  import '../chunk-IVTQWOXV.js';
12
12
  import '../chunk-MLDTLZAO.js';
@@ -18,7 +18,7 @@ import '../chunk-OMV5W53A.js';
18
18
  import '../chunk-2YTOOH3A.js';
19
19
  import '../chunk-XSPCITPN.js';
20
20
  import '../chunk-H5XTJ7GJ.js';
21
- import '../chunk-UAUP6XGK.js';
22
21
  import '../chunk-NUZHC6MM.js';
22
+ import '../chunk-UAUP6XGK.js';
23
23
  import '../chunk-UT6CW3C7.js';
24
24
  import '../chunk-ODEQTPFM.js';
@@ -1,13 +1,13 @@
1
- export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from '../chunk-UY3FWQWG.js';
1
+ export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from '../chunk-HDLUG3MA.js';
2
2
  import '../chunk-RTPQDNW3.js';
3
- import '../chunk-OQG4P5KU.js';
3
+ import '../chunk-KNAHKQD4.js';
4
4
  export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from '../chunk-PIYJNCN7.js';
5
5
  import '../chunk-DGXZ635L.js';
6
6
  import '../chunk-OMV5W53A.js';
7
7
  import '../chunk-2YTOOH3A.js';
8
8
  import '../chunk-XSPCITPN.js';
9
9
  import '../chunk-H5XTJ7GJ.js';
10
- import '../chunk-UAUP6XGK.js';
11
10
  import '../chunk-NUZHC6MM.js';
11
+ import '../chunk-UAUP6XGK.js';
12
12
  import '../chunk-UT6CW3C7.js';
13
13
  import '../chunk-ODEQTPFM.js';
@@ -1,13 +1,13 @@
1
- export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-TKUAGWNR.js';
1
+ export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-2GBG7KPK.js';
2
2
  import '../chunk-3XDT5ZWL.js';
3
3
  import '../chunk-MPVMB2DV.js';
4
- import '../chunk-LMQG3VPG.js';
5
- import '../chunk-FB3TCNQP.js';
4
+ import '../chunk-GKWZTTFV.js';
5
+ import '../chunk-6Q7RW2JJ.js';
6
6
  import '../chunk-PGCLHYVP.js';
7
7
  import '../chunk-PQADV6P6.js';
8
8
  import '../chunk-2G355KDJ.js';
9
9
  import '../chunk-H5XTJ7GJ.js';
10
- import '../chunk-UAUP6XGK.js';
11
10
  import '../chunk-NUZHC6MM.js';
11
+ import '../chunk-UAUP6XGK.js';
12
12
  import '../chunk-UT6CW3C7.js';
13
13
  import '../chunk-ODEQTPFM.js';
@@ -1,21 +1,21 @@
1
- export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-IPBSCJIZ.js';
1
+ export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-2LIGIIE2.js';
2
2
  import '../chunk-25AZQ3GZ.js';
3
3
  import '../chunk-I33UIUZD.js';
4
- import '../chunk-BKXUZCZX.js';
5
- import '../chunk-6THG44LI.js';
4
+ import '../chunk-WOTGQVHZ.js';
5
+ import '../chunk-KQQWGWCC.js';
6
6
  import '../chunk-EGMQURBR.js';
7
- import '../chunk-AVL52EME.js';
8
7
  import '../chunk-CYQBDZ6M.js';
8
+ import '../chunk-AVL52EME.js';
9
9
  import '../chunk-RSKW25Y5.js';
10
10
  import '../chunk-ANTAQAR4.js';
11
11
  import '../chunk-MLDTLZAO.js';
12
- import '../chunk-OQG4P5KU.js';
12
+ import '../chunk-KNAHKQD4.js';
13
13
  import '../chunk-DGXZ635L.js';
14
14
  import '../chunk-OMV5W53A.js';
15
15
  import '../chunk-2YTOOH3A.js';
16
16
  import '../chunk-XSPCITPN.js';
17
17
  import '../chunk-H5XTJ7GJ.js';
18
- import '../chunk-UAUP6XGK.js';
19
18
  import '../chunk-NUZHC6MM.js';
19
+ import '../chunk-UAUP6XGK.js';
20
20
  import '../chunk-UT6CW3C7.js';
21
21
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-ZKLEAK7M.js';
1
+ export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-XL2RXAPT.js';
2
2
  import '../chunk-BRLZXYPA.js';
3
3
  import '../chunk-N2BF272H.js';
4
4
  import '../chunk-EJNJMHQG.js';
@@ -8,16 +8,16 @@ import '../chunk-AV2DXAEL.js';
8
8
  import '../chunk-BT3GB7HC.js';
9
9
  import '../chunk-KTIQSSME.js';
10
10
  import '../chunk-NHLNHH4J.js';
11
- import '../chunk-LMQG3VPG.js';
11
+ import '../chunk-GKWZTTFV.js';
12
12
  import '../chunk-DOY3KC6I.js';
13
13
  export { ARTIFACT_KINDS, ArtifactKindGlyph } from '../chunk-RSKW25Y5.js';
14
- import '../chunk-FB3TCNQP.js';
14
+ import '../chunk-6Q7RW2JJ.js';
15
15
  import '../chunk-PGCLHYVP.js';
16
16
  import '../chunk-MLDTLZAO.js';
17
17
  import '../chunk-PQADV6P6.js';
18
18
  import '../chunk-2G355KDJ.js';
19
19
  import '../chunk-H5XTJ7GJ.js';
20
- import '../chunk-UAUP6XGK.js';
21
20
  import '../chunk-NUZHC6MM.js';
21
+ import '../chunk-UAUP6XGK.js';
22
22
  import '../chunk-UT6CW3C7.js';
23
23
  import '../chunk-ODEQTPFM.js';
@@ -5,7 +5,7 @@ import '../chunk-PIYJNCN7.js';
5
5
  import '../chunk-OMV5W53A.js';
6
6
  import '../chunk-2YTOOH3A.js';
7
7
  import '../chunk-H5XTJ7GJ.js';
8
- import '../chunk-UAUP6XGK.js';
9
8
  import '../chunk-NUZHC6MM.js';
9
+ import '../chunk-UAUP6XGK.js';
10
10
  import '../chunk-UT6CW3C7.js';
11
11
  import '../chunk-ODEQTPFM.js';
@@ -1,21 +1,21 @@
1
- export { AvatarPicker } from '../chunk-ZW5SRQ5M.js';
2
- import '../chunk-SK5SLGZH.js';
1
+ export { AvatarPicker } from '../chunk-A5HENOP2.js';
2
+ import '../chunk-4HO3NX3B.js';
3
3
  import '../chunk-KHJIEPZV.js';
4
4
  import '../chunk-AYKXMIOR.js';
5
5
  import '../chunk-I22MUEG7.js';
6
- import '../chunk-BKXUZCZX.js';
7
- import '../chunk-6THG44LI.js';
6
+ import '../chunk-WOTGQVHZ.js';
7
+ import '../chunk-KQQWGWCC.js';
8
8
  import '../chunk-EGMQURBR.js';
9
9
  import '../chunk-CYQBDZ6M.js';
10
10
  import '../chunk-KTIQSSME.js';
11
11
  import '../chunk-MLDTLZAO.js';
12
- import '../chunk-OQG4P5KU.js';
12
+ import '../chunk-KNAHKQD4.js';
13
13
  import '../chunk-DGXZ635L.js';
14
14
  import '../chunk-OMV5W53A.js';
15
15
  import '../chunk-2YTOOH3A.js';
16
16
  import '../chunk-XSPCITPN.js';
17
17
  import '../chunk-H5XTJ7GJ.js';
18
- import '../chunk-UAUP6XGK.js';
19
18
  import '../chunk-NUZHC6MM.js';
19
+ import '../chunk-UAUP6XGK.js';
20
20
  import '../chunk-UT6CW3C7.js';
21
21
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-OBPINJNO.js';
1
+ export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-EMCVX5FY.js';
2
2
  import '../chunk-LM3ISVJA.js';
3
3
  import '../chunk-I33UIUZD.js';
4
4
  import '../chunk-ANTAQAR4.js';
@@ -6,7 +6,7 @@ import '../chunk-DGXZ635L.js';
6
6
  import '../chunk-OMV5W53A.js';
7
7
  import '../chunk-XSPCITPN.js';
8
8
  import '../chunk-H5XTJ7GJ.js';
9
- import '../chunk-UAUP6XGK.js';
10
9
  import '../chunk-NUZHC6MM.js';
10
+ import '../chunk-UAUP6XGK.js';
11
11
  import '../chunk-UT6CW3C7.js';
12
12
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
- export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from '../chunk-FQI62PIZ.js';
1
+ export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from '../chunk-ODAZIKZF.js';
2
2
  import '../chunk-5SZGKSGL.js';
3
- import '../chunk-KL6A7JGH.js';
3
+ import '../chunk-SQ7GYC4K.js';
4
4
  import '../chunk-NR4CPM4T.js';
5
- import '../chunk-OBPINJNO.js';
5
+ import '../chunk-EMCVX5FY.js';
6
6
  import '../chunk-LM3ISVJA.js';
7
7
  import '../chunk-I33UIUZD.js';
8
8
  import '../chunk-ANTAQAR4.js';
@@ -10,7 +10,7 @@ import '../chunk-DGXZ635L.js';
10
10
  import '../chunk-OMV5W53A.js';
11
11
  import '../chunk-XSPCITPN.js';
12
12
  import '../chunk-H5XTJ7GJ.js';
13
- import '../chunk-UAUP6XGK.js';
14
13
  import '../chunk-NUZHC6MM.js';
14
+ import '../chunk-UAUP6XGK.js';
15
15
  import '../chunk-UT6CW3C7.js';
16
16
  import '../chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
- export { CanvasToolbar, toolForKey } from '../chunk-KL6A7JGH.js';
1
+ export { CanvasToolbar, toolForKey } from '../chunk-SQ7GYC4K.js';
2
2
  import '../chunk-NR4CPM4T.js';
3
- import '../chunk-OBPINJNO.js';
3
+ import '../chunk-EMCVX5FY.js';
4
4
  import '../chunk-LM3ISVJA.js';
5
5
  import '../chunk-I33UIUZD.js';
6
6
  import '../chunk-ANTAQAR4.js';
@@ -8,7 +8,7 @@ import '../chunk-DGXZ635L.js';
8
8
  import '../chunk-OMV5W53A.js';
9
9
  import '../chunk-XSPCITPN.js';
10
10
  import '../chunk-H5XTJ7GJ.js';
11
- import '../chunk-UAUP6XGK.js';
12
11
  import '../chunk-NUZHC6MM.js';
12
+ import '../chunk-UAUP6XGK.js';
13
13
  import '../chunk-UT6CW3C7.js';
14
14
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,62 @@
1
+ import { type ReactNode } from 'react';
2
+ /** A row of the grid: who or what the boxes on it are about. */
3
+ export interface CheckGridRow {
4
+ value: string;
5
+ /** The row's name, drawn at its start and read as the first half of each box's name. */
6
+ label: string;
7
+ /** A picture before the name: an avatar, a glyph. Decorative; the name says it. */
8
+ media?: ReactNode;
9
+ }
10
+ /** A column of the grid: what a box in it switches on. */
11
+ export interface CheckGridColumn {
12
+ value: string;
13
+ /** The column's name, drawn over it (beside each box where the grid stacks) and read as the second half of each box's name. */
14
+ label: string;
15
+ /** A picture before the column's name in its header. Decorative; the name says it. */
16
+ media?: ReactNode;
17
+ /**
18
+ * Why a box in this column cannot be ticked, where it cannot. A box left
19
+ * unticked in it is disabled and described by this reason, which the grid
20
+ * draws once under itself; a box already ticked (or partly) stays enabled,
21
+ * so what is on can always be taken off.
22
+ */
23
+ disabledReason?: string | undefined;
24
+ }
25
+ /** What one box shows: on, off, or partly on (some of what it stands for). */
26
+ export type CheckGridState = 'checked' | 'unchecked' | 'mixed';
27
+ export interface CheckGridProps {
28
+ /** Names the whole grid for a screen reader: "Jobs per seat". */
29
+ label: string;
30
+ rows: readonly CheckGridRow[];
31
+ columns: readonly CheckGridColumn[];
32
+ /** The state of the box where `row` meets `column`. */
33
+ stateOf: (row: string, column: string) => CheckGridState;
34
+ /** A box pressed: `checked` is what it asks for. */
35
+ onChange: (row: string, column: string, checked: boolean) => void;
36
+ className?: string | undefined;
37
+ }
38
+ /**
39
+ * Checkboxes where rows meet columns: which seats run which jobs, which
40
+ * people hold which access.
41
+ *
42
+ * ONE MARKUP FOR EVERY WIDTH, laid out by the grid's own width (a container
43
+ * query), never the window's. Where every column fits, a header row names the
44
+ * columns and each row's boxes stand under them. Where they do not, each row
45
+ * stacks: its name, then its boxes, each with its column's name beside it. No
46
+ * column is ever cut off behind a scroll the reader cannot see.
47
+ *
48
+ * A TABLE TO ASSISTIVE TECHNOLOGY, by ARIA roles on the grid's own boxes: a
49
+ * `table` named by `label`, a `row` for the header and each row, a
50
+ * `columnheader` per column and a `rowheader` per row's name, and a `cell`
51
+ * round each box, so a screen reader moves down a column and hears where it
52
+ * is. Roles rather than table elements, because the stacked layout changes
53
+ * every box's `display`, which takes a native table's semantics away in some
54
+ * browsers.
55
+ *
56
+ * EVERY BOX IS NAMED BY ITS ROW AND ITS COLUMN ("Backend Engineer Coding"),
57
+ * read from the two labels drawn, so the name holds the words a reader sees
58
+ * whichever layout stands, the stacked one included, where the header row is
59
+ * gone. The boxes are native checkboxes in reading order: Tab moves row by
60
+ * row, Space ticks.
61
+ */
62
+ export declare function CheckGrid({ label, rows, columns, stateOf, onChange, className }: CheckGridProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './CheckGrid.css';
2
+ export { CheckGrid } from './CheckGrid.js';
3
+ export type { CheckGridColumn, CheckGridProps, CheckGridRow, CheckGridState } from './CheckGrid.js';
@@ -0,0 +1,11 @@
1
+ export { CheckGrid } from '../chunk-HUIYSNBS.js';
2
+ import '../chunk-GKWZTTFV.js';
3
+ import '../chunk-6Q7RW2JJ.js';
4
+ import '../chunk-PGCLHYVP.js';
5
+ import '../chunk-PQADV6P6.js';
6
+ import '../chunk-2G355KDJ.js';
7
+ import '../chunk-H5XTJ7GJ.js';
8
+ import '../chunk-NUZHC6MM.js';
9
+ import '../chunk-UAUP6XGK.js';
10
+ import '../chunk-UT6CW3C7.js';
11
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,287 @@
1
+ /*
2
+ * CheckGrid: checkboxes where rows meet columns.
3
+ *
4
+ * WIDE, every column stands side by side under a header row: the row names'
5
+ * track (at least 10rem) and one equal track per column (7.5rem), so the
6
+ * columns of every row line up without a subgrid. A column's name beside each
7
+ * box is said and not drawn, since the header draws it once.
8
+ *
9
+ * NARROW, each row stacks: its name on a line of its own, then its boxes
10
+ * wrapping, each with its column's name drawn beside it; the header row is
11
+ * gone. No column is cut off behind a sideways scroll. WHERE IS NARROW is the
12
+ * grid's own width, by a container query, so a narrow column on a wide screen
13
+ * stacks too: under the width every column needs, the name's track plus each
14
+ * column's track and gap. A container query cannot read a custom property in
15
+ * its condition, so that width is written once per column count below, up to
16
+ * the six the grid stands side by side for (`MOST_COLUMNS`); a grid of more
17
+ * always stacks.
18
+ */
19
+ .crewlet-check-grid {
20
+ --crewlet-check-grid-name: 10rem;
21
+ --crewlet-check-grid-column: 7.5rem;
22
+ container: crewlet-check-grid / inline-size;
23
+ display: flex;
24
+ flex-direction: column;
25
+ gap: var(--spacing-2);
26
+ min-width: 0;
27
+ }
28
+
29
+ .crewlet-check-grid__table {
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: var(--spacing-1);
33
+ }
34
+
35
+ .crewlet-check-grid__head,
36
+ .crewlet-check-grid__row {
37
+ display: grid;
38
+ grid-template-columns:
39
+ minmax(var(--crewlet-check-grid-name), 1fr)
40
+ repeat(var(--crewlet-check-grid-columns, 3), var(--crewlet-check-grid-column));
41
+ column-gap: var(--spacing-3);
42
+ align-items: center;
43
+ }
44
+
45
+ /* A column's name over its boxes: its glyph and its word, wrapping inside its track. */
46
+ .crewlet-check-grid__column {
47
+ display: inline-flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ gap: var(--spacing-1);
51
+ color: var(--color-text-secondary);
52
+ font-size: var(--font-size-xs);
53
+ text-align: center;
54
+ }
55
+
56
+ /* A row's name: its picture and its words, at the start. */
57
+ .crewlet-check-grid__name {
58
+ display: inline-flex;
59
+ align-items: center;
60
+ gap: var(--spacing-2);
61
+ min-width: 0;
62
+ color: var(--color-text-primary);
63
+ font-size: var(--font-size-sm);
64
+ }
65
+
66
+ .crewlet-check-grid__media {
67
+ display: inline-flex;
68
+ flex: none;
69
+ }
70
+
71
+ /* Each box's cell stands centred under its column's name. */
72
+ .crewlet-check-grid__row > .crewlet-check-grid__cell {
73
+ display: inline-flex;
74
+ justify-self: center;
75
+ }
76
+
77
+ /* WIDE: the column's name beside a box is said (it names the box) and not drawn. */
78
+ .crewlet-check-grid__box .crewlet-checkbox__text {
79
+ position: absolute;
80
+ width: 1px;
81
+ height: 1px;
82
+ margin: -1px;
83
+ overflow: hidden;
84
+ clip-path: inset(50%);
85
+ white-space: nowrap;
86
+ }
87
+
88
+ /* Why a column refuses a box, once, under the grid. */
89
+ .crewlet-check-grid__notes {
90
+ display: flex;
91
+ flex-direction: column;
92
+ gap: var(--spacing-1);
93
+ margin: 0;
94
+ padding: 0;
95
+ color: var(--color-text-secondary);
96
+ font-size: var(--font-size-xs);
97
+ list-style: none;
98
+ }
99
+
100
+ /* NARROW, by column count: under the name's track plus each column's track and gap. */
101
+ @container crewlet-check-grid (width < 18.25rem) {
102
+ .crewlet-check-grid--1 .crewlet-check-grid__head {
103
+ display: none;
104
+ }
105
+
106
+ .crewlet-check-grid--1 .crewlet-check-grid__row {
107
+ display: flex;
108
+ flex-wrap: wrap;
109
+ column-gap: var(--spacing-3);
110
+ padding-block: var(--spacing-1);
111
+ }
112
+
113
+ .crewlet-check-grid--1 .crewlet-check-grid__name {
114
+ flex-basis: 100%;
115
+ }
116
+
117
+ .crewlet-check-grid--1 .crewlet-check-grid__box .crewlet-checkbox__text {
118
+ position: static;
119
+ width: auto;
120
+ height: auto;
121
+ margin: 0;
122
+ overflow: visible;
123
+ clip-path: none;
124
+ white-space: normal;
125
+ }
126
+ }
127
+
128
+ @container crewlet-check-grid (width < 26.5rem) {
129
+ .crewlet-check-grid--2 .crewlet-check-grid__head {
130
+ display: none;
131
+ }
132
+
133
+ .crewlet-check-grid--2 .crewlet-check-grid__row {
134
+ display: flex;
135
+ flex-wrap: wrap;
136
+ column-gap: var(--spacing-3);
137
+ padding-block: var(--spacing-1);
138
+ }
139
+
140
+ .crewlet-check-grid--2 .crewlet-check-grid__name {
141
+ flex-basis: 100%;
142
+ }
143
+
144
+ .crewlet-check-grid--2 .crewlet-check-grid__box .crewlet-checkbox__text {
145
+ position: static;
146
+ width: auto;
147
+ height: auto;
148
+ margin: 0;
149
+ overflow: visible;
150
+ clip-path: none;
151
+ white-space: normal;
152
+ }
153
+ }
154
+
155
+ @container crewlet-check-grid (width < 34.75rem) {
156
+ .crewlet-check-grid--3 .crewlet-check-grid__head {
157
+ display: none;
158
+ }
159
+
160
+ .crewlet-check-grid--3 .crewlet-check-grid__row {
161
+ display: flex;
162
+ flex-wrap: wrap;
163
+ column-gap: var(--spacing-3);
164
+ padding-block: var(--spacing-1);
165
+ }
166
+
167
+ .crewlet-check-grid--3 .crewlet-check-grid__name {
168
+ flex-basis: 100%;
169
+ }
170
+
171
+ .crewlet-check-grid--3 .crewlet-check-grid__box .crewlet-checkbox__text {
172
+ position: static;
173
+ width: auto;
174
+ height: auto;
175
+ margin: 0;
176
+ overflow: visible;
177
+ clip-path: none;
178
+ white-space: normal;
179
+ }
180
+ }
181
+
182
+ @container crewlet-check-grid (width < 43rem) {
183
+ .crewlet-check-grid--4 .crewlet-check-grid__head {
184
+ display: none;
185
+ }
186
+
187
+ .crewlet-check-grid--4 .crewlet-check-grid__row {
188
+ display: flex;
189
+ flex-wrap: wrap;
190
+ column-gap: var(--spacing-3);
191
+ padding-block: var(--spacing-1);
192
+ }
193
+
194
+ .crewlet-check-grid--4 .crewlet-check-grid__name {
195
+ flex-basis: 100%;
196
+ }
197
+
198
+ .crewlet-check-grid--4 .crewlet-check-grid__box .crewlet-checkbox__text {
199
+ position: static;
200
+ width: auto;
201
+ height: auto;
202
+ margin: 0;
203
+ overflow: visible;
204
+ clip-path: none;
205
+ white-space: normal;
206
+ }
207
+ }
208
+
209
+ @container crewlet-check-grid (width < 51.25rem) {
210
+ .crewlet-check-grid--5 .crewlet-check-grid__head {
211
+ display: none;
212
+ }
213
+
214
+ .crewlet-check-grid--5 .crewlet-check-grid__row {
215
+ display: flex;
216
+ flex-wrap: wrap;
217
+ column-gap: var(--spacing-3);
218
+ padding-block: var(--spacing-1);
219
+ }
220
+
221
+ .crewlet-check-grid--5 .crewlet-check-grid__name {
222
+ flex-basis: 100%;
223
+ }
224
+
225
+ .crewlet-check-grid--5 .crewlet-check-grid__box .crewlet-checkbox__text {
226
+ position: static;
227
+ width: auto;
228
+ height: auto;
229
+ margin: 0;
230
+ overflow: visible;
231
+ clip-path: none;
232
+ white-space: normal;
233
+ }
234
+ }
235
+
236
+ @container crewlet-check-grid (width < 59.5rem) {
237
+ .crewlet-check-grid--6 .crewlet-check-grid__head {
238
+ display: none;
239
+ }
240
+
241
+ .crewlet-check-grid--6 .crewlet-check-grid__row {
242
+ display: flex;
243
+ flex-wrap: wrap;
244
+ column-gap: var(--spacing-3);
245
+ padding-block: var(--spacing-1);
246
+ }
247
+
248
+ .crewlet-check-grid--6 .crewlet-check-grid__name {
249
+ flex-basis: 100%;
250
+ }
251
+
252
+ .crewlet-check-grid--6 .crewlet-check-grid__box .crewlet-checkbox__text {
253
+ position: static;
254
+ width: auto;
255
+ height: auto;
256
+ margin: 0;
257
+ overflow: visible;
258
+ clip-path: none;
259
+ white-space: normal;
260
+ }
261
+ }
262
+
263
+ /* More columns than the grid stands side by side for: always stacked. */
264
+ .crewlet-check-grid--many .crewlet-check-grid__head {
265
+ display: none;
266
+ }
267
+
268
+ .crewlet-check-grid--many .crewlet-check-grid__row {
269
+ display: flex;
270
+ flex-wrap: wrap;
271
+ column-gap: var(--spacing-3);
272
+ padding-block: var(--spacing-1);
273
+ }
274
+
275
+ .crewlet-check-grid--many .crewlet-check-grid__name {
276
+ flex-basis: 100%;
277
+ }
278
+
279
+ .crewlet-check-grid--many .crewlet-check-grid__box .crewlet-checkbox__text {
280
+ position: static;
281
+ width: auto;
282
+ height: auto;
283
+ margin: 0;
284
+ overflow: visible;
285
+ clip-path: none;
286
+ white-space: normal;
287
+ }
@@ -1,10 +1,10 @@
1
- export { Checkbox, CheckboxGroup } from '../chunk-LMQG3VPG.js';
2
- import '../chunk-FB3TCNQP.js';
1
+ export { Checkbox, CheckboxGroup } from '../chunk-GKWZTTFV.js';
2
+ import '../chunk-6Q7RW2JJ.js';
3
3
  import '../chunk-PGCLHYVP.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-2G355KDJ.js';
6
6
  import '../chunk-H5XTJ7GJ.js';
7
- import '../chunk-UAUP6XGK.js';
8
7
  import '../chunk-NUZHC6MM.js';
8
+ import '../chunk-UAUP6XGK.js';
9
9
  import '../chunk-UT6CW3C7.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -38,8 +38,14 @@ export interface ChoiceCardOption {
38
38
  */
39
39
  disabledReasonAt?: number | undefined;
40
40
  }
41
- /** The narrowest a card stands: `md` 20rem, `lg` 24rem. */
42
- export type ChoiceCardsMinWidth = 'md' | 'lg';
41
+ /** The narrowest a card stands: `sm` 15rem, `md` 20rem, `lg` 24rem. */
42
+ export type ChoiceCardsMinWidth = 'sm' | 'md' | 'lg';
43
+ /**
44
+ * How much room a card's lines take: `comfortable`, the default, or
45
+ * `compact`, tighter padding and gaps and a smaller picture, for a set of
46
+ * three that has to stand side by side in a form's wide column.
47
+ */
48
+ export type ChoiceCardsDensity = 'comfortable' | 'compact';
43
49
  export interface ChoiceCardsProps {
44
50
  /** Names the group for a screen reader. */
45
51
  label: string;
@@ -48,11 +54,19 @@ export interface ChoiceCardsProps {
48
54
  value: string | null;
49
55
  onChange: (value: string) => void;
50
56
  /**
51
- * The narrowest a card stands, which decides how many share a row: `md`
52
- * (20rem) for a short name and facts, `lg` (24rem) for choices with more to
53
- * say. A form's column holds one to a row; a wider surface two or three.
57
+ * The narrowest a card stands, which decides how many share a row: `sm`
58
+ * (15rem) for three compact cards across a form's wide column, `md` (20rem)
59
+ * for a short name and facts, `lg` (24rem) for choices with more to say. A
60
+ * form's column holds one to a row; a wider surface two or three. Under any
61
+ * of them a phone's width stacks the cards, one to a row.
54
62
  */
55
63
  minCardWidth?: ChoiceCardsMinWidth | undefined;
64
+ /**
65
+ * How much room each card's lines take. `compact` keeps every line (the
66
+ * description, each fact, a disabled card's whole reason) and only takes
67
+ * less room around them; nothing is clamped or dropped.
68
+ */
69
+ density?: ChoiceCardsDensity | undefined;
56
70
  className?: string | undefined;
57
71
  }
58
72
  /**
@@ -77,4 +91,4 @@ export interface ChoiceCardsProps {
77
91
  * A FACT'S STATE IS NEVER ONLY A COLOUR: the dot sits beside words that say
78
92
  * it ("Docker 24.0.7 found", "E2B key not set").
79
93
  */
80
- export declare function ChoiceCards({ label, options, value, onChange, minCardWidth, className }: ChoiceCardsProps): import("react").JSX.Element;
94
+ export declare function ChoiceCards({ label, options, value, onChange, minCardWidth, density, className, }: ChoiceCardsProps): import("react").JSX.Element;
@@ -1,3 +1,3 @@
1
1
  import './ChoiceCards.css';
2
2
  export { ChoiceCards } from './ChoiceCards.js';
3
- export type { ChoiceCardFact, ChoiceCardOption, ChoiceCardsMinWidth, ChoiceCardsProps } from './ChoiceCards.js';
3
+ export type { ChoiceCardFact, ChoiceCardOption, ChoiceCardsDensity, ChoiceCardsMinWidth, ChoiceCardsProps } from './ChoiceCards.js';