@crewlethq/ui 0.48.2 → 0.49.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 (190) hide show
  1. package/README.md +60 -0
  2. package/dist/AgentHandoffPanel/index.js +4 -4
  3. package/dist/AppShell/index.js +4 -4
  4. package/dist/{AppShell-5P575KYA.css → AppShell-BIUFNT3J.css} +30 -11
  5. package/dist/ArrangeList/index.js +4 -4
  6. package/dist/ArtifactBar/index.js +9 -9
  7. package/dist/{ArtifactBar-6PGWGKN2.css → ArtifactBar-UMZCTARR.css} +9 -0
  8. package/dist/ArtifactCard/ArtifactCard.d.ts +30 -1
  9. package/dist/ArtifactCard/index.js +12 -5
  10. package/dist/{ArtifactCard-OGTMO2KI.css → ArtifactCard-SOB63NV5.css} +72 -1
  11. package/dist/ArtifactCover/index.js +2 -2
  12. package/dist/ArtifactIcon/index.js +2 -2
  13. package/dist/ArtifactKindGlyph/ArtifactKindGlyph.d.ts +7 -3
  14. package/dist/ArtifactKindGlyph/index.js +1 -1
  15. package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +4 -3
  16. package/dist/ArtifactKindIllustration/index.js +1 -1
  17. package/dist/{ArtifactKinds-CVD3FCYO.css → ArtifactKinds-O3CALPVX.css} +1 -0
  18. package/dist/ArtifactMakeRow/index.js +2 -2
  19. package/dist/ArtifactNameCell/ArtifactNameCell.d.ts +14 -1
  20. package/dist/ArtifactNameCell/index.d.ts +1 -1
  21. package/dist/ArtifactNameCell/index.js +2 -2
  22. package/dist/{ArtifactNameCell-RTVP4LO4.css → ArtifactNameCell-3AHLUSE5.css} +12 -0
  23. package/dist/AvatarPicker/index.js +7 -7
  24. package/dist/BrandChip/BrandChip.d.ts +26 -0
  25. package/dist/BrandChip/index.d.ts +3 -0
  26. package/dist/BrandChip/index.js +2 -0
  27. package/dist/BrandChip-SQWBC2WU.css +81 -0
  28. package/dist/BrandSample/BrandSample.d.ts +75 -0
  29. package/dist/BrandSample/index.d.ts +3 -0
  30. package/dist/BrandSample/index.js +5 -0
  31. package/dist/BrandSample-G5V7GKR2.css +185 -0
  32. package/dist/BrandScope/BrandScope.d.ts +61 -0
  33. package/dist/BrandScope/index.d.ts +4 -0
  34. package/dist/BrandScope/index.js +4 -0
  35. package/dist/BrandScope-H2KZHGT7.css +29 -0
  36. package/dist/Canvas/index.js +2 -2
  37. package/dist/CanvasBoard/index.js +4 -4
  38. package/dist/CanvasToolbar/index.js +3 -3
  39. package/dist/Checkbox/Checkbox.d.ts +8 -0
  40. package/dist/Checkbox/index.js +3 -3
  41. package/dist/{Checkbox-ALWG3WV2.css → Checkbox-MB22OW6P.css} +18 -0
  42. package/dist/ColorField/ColorField.d.ts +63 -0
  43. package/dist/ColorField/index.d.ts +3 -0
  44. package/dist/ColorField/index.js +11 -0
  45. package/dist/ColorField-2OIOWT3Z.css +68 -0
  46. package/dist/ColorSwatch/ColorSwatch.d.ts +43 -0
  47. package/dist/ColorSwatch/index.d.ts +3 -0
  48. package/dist/ColorSwatch/index.js +9 -0
  49. package/dist/ColorSwatch-DNMUFHNS.css +83 -0
  50. package/dist/Combobox/Combobox.d.ts +45 -4
  51. package/dist/Combobox/index.d.ts +1 -1
  52. package/dist/Combobox/index.js +3 -3
  53. package/dist/Combobox-GBCWXWEB.css +163 -0
  54. package/dist/CommandPalette/index.js +5 -5
  55. package/dist/CommentThread/index.js +5 -5
  56. package/dist/Composer/index.js +3 -3
  57. package/dist/ConfirmField/index.js +3 -3
  58. package/dist/ContrastBadge/ContrastBadge.d.ts +63 -0
  59. package/dist/ContrastBadge/index.d.ts +3 -0
  60. package/dist/ContrastBadge/index.js +6 -0
  61. package/dist/ContrastBadge-CBZPGG3G.css +47 -0
  62. package/dist/DataGrid/DataGrid.d.ts +28 -1
  63. package/dist/DataGrid/index.js +8 -1
  64. package/dist/{DataGrid-AQKPJD7W.css → DataGrid-VNGQESJA.css} +15 -0
  65. package/dist/DataTable/index.js +6 -6
  66. package/dist/DataView/index.js +10 -10
  67. package/dist/DateTimePicker/index.js +3 -3
  68. package/dist/DocTabsEditor/index.js +4 -4
  69. package/dist/{Editor-6U4BJ25W.js → Editor-MLGK3KOG.js} +3 -3
  70. package/dist/FolderTile/FolderTile.d.ts +91 -0
  71. package/dist/FolderTile/index.d.ts +3 -0
  72. package/dist/FolderTile/index.js +7 -0
  73. package/dist/FolderTile-FDT5Y63Z.css +231 -0
  74. package/dist/HuePicker/index.js +6 -6
  75. package/dist/Input/index.js +2 -2
  76. package/dist/LinkInterstitial/index.js +3 -3
  77. package/dist/ListInput/index.js +3 -3
  78. package/dist/LogoSlot/LogoSlot.d.ts +84 -0
  79. package/dist/LogoSlot/index.d.ts +3 -0
  80. package/dist/LogoSlot/index.js +9 -0
  81. package/dist/LogoSlot-T2UFOJXU.css +159 -0
  82. package/dist/MarkdownEditor/index.js +6 -6
  83. package/dist/Menu/index.js +2 -2
  84. package/dist/MergeConflicts/index.js +6 -6
  85. package/dist/Modal/Modal.d.ts +13 -0
  86. package/dist/Modal/index.js +2 -2
  87. package/dist/{Modal-TOEWHDCQ.css → Modal-3HMP7WAZ.css} +30 -0
  88. package/dist/OrgTable/index.js +1 -1
  89. package/dist/PresenterView/index.js +3 -3
  90. package/dist/PrincipalPicker/index.js +4 -4
  91. package/dist/RichEditor/index.js +1 -1
  92. package/dist/SegmentedControl/index.js +5 -5
  93. package/dist/Select/index.js +2 -2
  94. package/dist/SelectionBar/SelectionBar.d.ts +50 -0
  95. package/dist/SelectionBar/index.d.ts +3 -0
  96. package/dist/SelectionBar/index.js +9 -0
  97. package/dist/SelectionBar-XPWKUOSC.css +61 -0
  98. package/dist/ShareDialog/index.js +6 -6
  99. package/dist/SheetColumnEditor/index.js +10 -10
  100. package/dist/SheetGrid/index.js +4 -4
  101. package/dist/SlideFilmstrip/index.js +3 -3
  102. package/dist/Switcher/index.js +4 -4
  103. package/dist/Tabs/index.js +4 -4
  104. package/dist/TagsInput/index.js +2 -2
  105. package/dist/ThemeGallery/ThemeGallery.d.ts +13 -2
  106. package/dist/ThemeGallery/index.js +3 -1
  107. package/dist/{ThemeGallery-X35Y25EX.css → ThemeGallery-UEFZRT6W.css} +21 -0
  108. package/dist/ThemeSwitcher/index.js +6 -6
  109. package/dist/TimeWindowPicker/index.js +6 -6
  110. package/dist/TreeCanvas/index.js +3 -3
  111. package/dist/TreeGrid/index.js +1 -1
  112. package/dist/TypeSpecimen/TypeSpecimen.d.ts +49 -0
  113. package/dist/TypeSpecimen/index.d.ts +3 -0
  114. package/dist/TypeSpecimen/index.js +3 -0
  115. package/dist/TypeSpecimen-WK6YNHL7.css +96 -0
  116. package/dist/VersionCompare/index.js +6 -6
  117. package/dist/{chunk-RBUA7ZNK.js → chunk-34RMTXDZ.js} +1 -1
  118. package/dist/{chunk-YFUG6ARA.js → chunk-3QSKDZR5.js} +1 -1
  119. package/dist/chunk-5SGHW42B.js +23 -0
  120. package/dist/{chunk-R2EOET5Q.js → chunk-627KFRON.js} +2 -2
  121. package/dist/{chunk-SMVWDO72.js → chunk-6FVGSWLS.js} +1 -1
  122. package/dist/{chunk-ILDNJHRU.js → chunk-AVL52EME.js} +1 -1
  123. package/dist/chunk-B235ANDO.js +66 -0
  124. package/dist/{chunk-MZ3QFQDL.js → chunk-CAVWDJF4.js} +1 -1
  125. package/dist/{chunk-BLQRC7QR.js → chunk-D6MTBXAJ.js} +2 -2
  126. package/dist/{chunk-2MYSESZF.js → chunk-FB5CFQTG.js} +82 -12
  127. package/dist/{chunk-KNMQS3JY.js → chunk-GHY63X4C.js} +1 -1
  128. package/dist/{chunk-DY4DQ7EB.js → chunk-GP4YWZFO.js} +1 -1
  129. package/dist/{chunk-NRWJUGNA.js → chunk-H55D66IK.js} +1 -1
  130. package/dist/{chunk-JNFTFAPN.js → chunk-H7NMJ5AI.js} +2 -2
  131. package/dist/{chunk-GKRPPSWY.js → chunk-ILFEWRLG.js} +1 -1
  132. package/dist/chunk-ITI2Z44C.js +139 -0
  133. package/dist/{chunk-P5VGSVWG.js → chunk-J24Q4HTD.js} +17 -8
  134. package/dist/{chunk-2FDTSARB.js → chunk-JFDIMO3A.js} +2 -2
  135. package/dist/chunk-JKAFEFFC.js +44 -0
  136. package/dist/{chunk-6HYPQ5PY.js → chunk-JWNYI7UD.js} +1 -1
  137. package/dist/{chunk-WT5UPL6P.js → chunk-KHZYAEGZ.js} +1 -1
  138. package/dist/chunk-M4QM477B.js +80 -0
  139. package/dist/{chunk-YUDUYMZB.js → chunk-MIEBOO7Y.js} +2 -2
  140. package/dist/{chunk-IVA7ZWDS.js → chunk-NAWUXCBC.js} +5 -5
  141. package/dist/{chunk-YUAQSWNW.js → chunk-NCHKKYPQ.js} +6 -3
  142. package/dist/chunk-OCRVY42T.js +50 -0
  143. package/dist/chunk-OEEYL2CM.js +73 -0
  144. package/dist/chunk-P3OIM6OC.js +38 -0
  145. package/dist/{chunk-FWBKMPNR.js → chunk-P3QWT5VR.js} +1 -1
  146. package/dist/chunk-P5JBDHWC.js +206 -0
  147. package/dist/{chunk-WQJSOTEO.js → chunk-PGR2PKH6.js} +1 -1
  148. package/dist/{chunk-U2XAJONO.js → chunk-Q44X36QC.js} +80 -36
  149. package/dist/{chunk-R2IBCEU6.js → chunk-R3BA3C4Y.js} +2 -2
  150. package/dist/{chunk-HDMLHJFI.js → chunk-R6R2UHVG.js} +4 -4
  151. package/dist/{chunk-VBEMIZIJ.js → chunk-RFPCHMSX.js} +1 -1
  152. package/dist/{chunk-CE2THTQR.js → chunk-RSKW25Y5.js} +4 -3
  153. package/dist/{chunk-UBZDYOCA.js → chunk-RV6XB5UV.js} +12 -1
  154. package/dist/{chunk-LXCRHVMZ.js → chunk-SEPSXOGJ.js} +1 -1
  155. package/dist/{chunk-K2FNW3MK.js → chunk-SQ4JFHO7.js} +1 -1
  156. package/dist/{chunk-F45VSK2M.js → chunk-SS4XCUUJ.js} +2 -2
  157. package/dist/{chunk-E4BOVKNJ.js → chunk-UTESMBPL.js} +5 -3
  158. package/dist/chunk-UZMNR366.js +9 -0
  159. package/dist/{chunk-GQXVLFQB.js → chunk-V7GOOXPK.js} +1 -1
  160. package/dist/{chunk-KMNY3KEB.js → chunk-VBIM6HFC.js} +2 -2
  161. package/dist/{chunk-Z5RZXVQ7.js → chunk-VN47PYUF.js} +7 -7
  162. package/dist/{chunk-CNTBUK24.js → chunk-VP2ODUCC.js} +2 -2
  163. package/dist/{chunk-VIAQW6RK.js → chunk-VTSJMDGP.js} +5 -5
  164. package/dist/chunk-W6FOEBIL.js +119 -0
  165. package/dist/chunk-WLSEAIVC.js +48 -0
  166. package/dist/{chunk-DETVVKAH.js → chunk-WQ7S7CKZ.js} +3 -3
  167. package/dist/{chunk-OKUULQ22.js → chunk-WXOYHVWG.js} +2 -2
  168. package/dist/{chunk-NILOJV62.js → chunk-X4NIE7CI.js} +1 -1
  169. package/dist/{chunk-PZZHO6OS.js → chunk-XS2FJVMT.js} +1 -1
  170. package/dist/{chunk-6AKG2VLR.js → chunk-YCC2S7DF.js} +4 -1
  171. package/dist/{chunk-5CLWBPB5.js → chunk-ZCIL5IHU.js} +1 -1
  172. package/dist/chunk-ZH77BXMA.js +14 -0
  173. package/dist/generated/index.d.ts +10 -0
  174. package/dist/generated/index.js +101 -89
  175. package/dist/index.js +101 -89
  176. package/dist/styles.css +1370 -22
  177. package/dist/utils/fontFamily.d.ts +29 -0
  178. package/dist/utils/hexColour.d.ts +12 -0
  179. package/package.json +3 -3
  180. package/scripts/check-css-variables.mjs +18 -2
  181. package/dist/Combobox-YDONYDTM.css +0 -81
  182. package/dist/chunk-LOBV4QON.js +0 -137
  183. package/dist/{chunk-245IXG5P.js → chunk-3WMOEGEL.js} +0 -0
  184. package/dist/{chunk-ICPQIAD6.js → chunk-D7Q5MQRF.js} +1 -1
  185. package/dist/{chunk-ISDEXIXH.js → chunk-E6HXFFWO.js} +1 -1
  186. package/dist/{chunk-D4EOPIFL.js → chunk-EXRRTKWT.js} +1 -1
  187. package/dist/{chunk-S6J3EWDP.js → chunk-SXBJMBSV.js} +1 -1
  188. package/dist/{chunk-3JIZ2A6K.js → chunk-TMM32U7D.js} +1 -1
  189. package/dist/{chunk-LD3GEVQU.js → chunk-XQZ6EWOE.js} +1 -1
  190. package/dist/{chunk-K77LKW3X.js → chunk-ZFM5L7M4.js} +2 -2
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Whether one colour reads on another: a sample of the pair, the ratio and
3
+ * the level. The sample's two colours are the only values here that are not
4
+ * tokens, and they arrive through `--crewlet-contrast-badge-ink` and
5
+ * `--crewlet-contrast-badge-ground` only once both have passed `#rrggbb`.
6
+ */
7
+ .crewlet-contrast-badge {
8
+ display: inline-flex;
9
+ flex-wrap: wrap;
10
+ align-items: center;
11
+ gap: var(--spacing-2);
12
+ min-width: 0;
13
+ font-size: var(--font-size-xs);
14
+ }
15
+
16
+ /* THE SAMPLE HAS AN EDGE OF ITS OWN, so a ground that matches the page is
17
+ still a sample. */
18
+ .crewlet-contrast-badge__sample {
19
+ display: inline-flex;
20
+ flex: none;
21
+ align-items: center;
22
+ justify-content: center;
23
+ width: var(--size-control-sm);
24
+ height: var(--size-control-sm);
25
+ box-sizing: border-box;
26
+ border-radius: var(--radius-sm);
27
+ background: var(--crewlet-contrast-badge-ground, var(--color-surface-inset));
28
+ box-shadow: inset 0 0 0 1px var(--color-border-hover);
29
+ color: var(--crewlet-contrast-badge-ink, var(--color-text-tertiary));
30
+ font-size: var(--font-size-xs);
31
+ font-weight: var(--font-weight-semibold);
32
+ line-height: 1;
33
+ }
34
+
35
+ .crewlet-contrast-badge__label {
36
+ color: var(--color-text-secondary);
37
+ }
38
+
39
+ .crewlet-contrast-badge__ratio {
40
+ color: var(--color-text-primary);
41
+ font-family: var(--font-family-mono);
42
+ font-variant-numeric: tabular-nums;
43
+ }
44
+
45
+ .crewlet-contrast-badge__unmeasured {
46
+ color: var(--color-text-tertiary);
47
+ }
@@ -123,6 +123,20 @@ export interface DataGridBand<T> {
123
123
  /** A per-band aggregate line, or the way to what the band did not fit. */
124
124
  footer?: ReactNode;
125
125
  }
126
+ /**
127
+ * Rows a reader picks for a bulk action, by their `rowKey`: a column of boxes
128
+ * before the first, with a box over them in the head.
129
+ */
130
+ export interface DataGridSelection<T> {
131
+ /** The keys of the rows picked. Controlled, and kept across pages and sorts by the host. */
132
+ selected: ReadonlySet<string>;
133
+ /** The keys as they should be now. */
134
+ onChange: (selected: ReadonlySet<string>) => void;
135
+ /** A row's box, said: "Select Q3 plan". The row's own words are its name, so this says what ticking it does. */
136
+ rowLabel: (row: T) => string;
137
+ /** A row that cannot be picked (the reader may not act on it): its box is drawn and disabled. */
138
+ isSelectable?: ((row: T) => boolean) | undefined;
139
+ }
126
140
  /** The words a grid says, for an application that says them otherwise. */
127
141
  export interface DataGridLabels {
128
142
  /** "Hidden to fit: Due and Updated". */
@@ -131,6 +145,8 @@ export interface DataGridLabels {
131
145
  showEveryColumn: string;
132
146
  /** Joins the last two names of a list: "Due and Updated". */
133
147
  and: string;
148
+ /** The head's box, over every row the grid draws. */
149
+ selectAll: string;
134
150
  }
135
151
  /**
136
152
  * What an application drives a grid's cursor with. The grid binds no keys of
@@ -156,6 +172,17 @@ export interface DataGridProps<T> {
156
172
  rowHref?: ((row: T) => string) | undefined;
157
173
  /** The row the reader is on (the object a page or a side panel shows): tinted and announced as current. */
158
174
  isSelected?: ((row: T) => boolean) | undefined;
175
+ /**
176
+ * Rows picked for a bulk action: a box on every row before the first
177
+ * column, and one in the head over every row drawn (ticked, clear, or mixed
178
+ * when some are). Shift with a box picks or clears every row between it and
179
+ * the box pressed before it, in the order the grid draws them.
180
+ *
181
+ * NOT `isSelected`, which is the one row the reader is ON. A picked row is
182
+ * tinted in the selected fill and its box says it; the current row keeps
183
+ * its own mark.
184
+ */
185
+ selection?: DataGridSelection<T> | undefined;
159
186
  isFailed?: ((row: T) => boolean) | undefined;
160
187
  /**
161
188
  * The sort as `key` or `-key` (descending), empty for the rows' own order.
@@ -264,4 +291,4 @@ export declare function fitGridColumns({ fit, width, overflows, visible, }: {
264
291
  * lets its head stick against the page's scroller; an application whose
265
292
  * scroller carries a sticky bar sets `--crewlet-data-grid-sticky-top`.
266
293
  */
267
- export declare function DataGrid<T>({ rows, bands, columns, rowKey, onRowActivate, rowHref, isSelected, isFailed, sort: sortRaw, onSortChange, serverSorted, cols: colsRaw, onColsChange, empty, footer, onLoadMore, loadedNote, phoneRows, flush, handleRef, onPointerDown, labels, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, className, }: DataGridProps<T>): import("react").JSX.Element;
294
+ export declare function DataGrid<T>({ rows, bands, columns, rowKey, onRowActivate, rowHref, isSelected, selection, isFailed, sort: sortRaw, onSortChange, serverSorted, cols: colsRaw, onColsChange, empty, footer, onLoadMore, loadedNote, phoneRows, flush, handleRef, onPointerDown, labels, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, className, }: DataGridProps<T>): import("react").JSX.Element;
@@ -1,7 +1,14 @@
1
- export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from '../chunk-2MYSESZF.js';
1
+ export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from '../chunk-FB5CFQTG.js';
2
+ import '../chunk-NCHKKYPQ.js';
2
3
  import '../chunk-PPUR46MK.js';
4
+ import '../chunk-EXRRTKWT.js';
5
+ import '../chunk-XCUUI7E7.js';
3
6
  import '../chunk-PQADV6P6.js';
7
+ import '../chunk-RSAQOKH3.js';
4
8
  import '../chunk-RTPQDNW3.js';
5
9
  import '../chunk-OG6CL3EB.js';
10
+ import '../chunk-H5XTJ7GJ.js';
11
+ import '../chunk-LACA4JGC.js';
12
+ import '../chunk-NUZHC6MM.js';
6
13
  import '../chunk-BZFWDIV6.js';
7
14
  import '../chunk-ODEQTPFM.js';
@@ -195,6 +195,21 @@ button.crewlet-data-grid__row-link {
195
195
  background: var(--color-brand-accent-soft);
196
196
  }
197
197
 
198
+ /*
199
+ * PICKED FOR A BULK ACTION (`selection`), as every chosen option is drawn:
200
+ * the selected fill, never the accent. One fill, so the hover overlay does not
201
+ * stack on it, and its box says it as well.
202
+ */
203
+ .crewlet-data-grid__row--picked,
204
+ .crewlet-data-grid__row--picked:hover {
205
+ background: var(--color-surface-selected);
206
+ }
207
+
208
+ /* The selection box, centred in its track and standing above the row's link. */
209
+ .crewlet-data-grid__select {
210
+ display: inline-flex;
211
+ }
212
+
198
213
  .crewlet-data-grid__row--cursor {
199
214
  box-shadow: inset 2px 0 0 var(--color-brand-accent);
200
215
  }
@@ -1,19 +1,19 @@
1
- export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-DETVVKAH.js';
1
+ export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-WQ7S7CKZ.js';
2
+ import '../chunk-YCC2S7DF.js';
2
3
  import '../chunk-STJ7QBC3.js';
3
4
  import '../chunk-DTIW4CHZ.js';
4
- import '../chunk-6AKG2VLR.js';
5
- import '../chunk-YUAQSWNW.js';
6
5
  import '../chunk-EUCC37WY.js';
7
6
  import '../chunk-AV2DXAEL.js';
8
- import '../chunk-D4EOPIFL.js';
7
+ import '../chunk-NCHKKYPQ.js';
8
+ import '../chunk-EXRRTKWT.js';
9
9
  import '../chunk-XCUUI7E7.js';
10
10
  import '../chunk-PQADV6P6.js';
11
11
  import '../chunk-RSAQOKH3.js';
12
- import '../chunk-3JIZ2A6K.js';
12
+ import '../chunk-TMM32U7D.js';
13
13
  import '../chunk-OMV5W53A.js';
14
14
  import '../chunk-OG6CL3EB.js';
15
15
  import '../chunk-H5XTJ7GJ.js';
16
- import '../chunk-NUZHC6MM.js';
17
16
  import '../chunk-LACA4JGC.js';
17
+ import '../chunk-NUZHC6MM.js';
18
18
  import '../chunk-BZFWDIV6.js';
19
19
  import '../chunk-ODEQTPFM.js';
@@ -1,29 +1,29 @@
1
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-IVA7ZWDS.js';
1
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-NAWUXCBC.js';
2
2
  import '../chunk-DKB73KZI.js';
3
- import '../chunk-DETVVKAH.js';
4
- import '../chunk-K77LKW3X.js';
3
+ import '../chunk-ZFM5L7M4.js';
4
+ import '../chunk-WQ7S7CKZ.js';
5
+ import '../chunk-YCC2S7DF.js';
6
+ import '../chunk-7KHM2FZH.js';
5
7
  import '../chunk-STJ7QBC3.js';
6
8
  import '../chunk-DTIW4CHZ.js';
7
- import '../chunk-6AKG2VLR.js';
8
- import '../chunk-7KHM2FZH.js';
9
- import '../chunk-KHJIEPZV.js';
10
9
  import '../chunk-GXQ3B46I.js';
11
10
  import '../chunk-NR4CPM4T.js';
12
- import '../chunk-YUAQSWNW.js';
11
+ import '../chunk-KHJIEPZV.js';
13
12
  import '../chunk-3CZ7XAVY.js';
14
13
  import '../chunk-EUCC37WY.js';
15
14
  import '../chunk-AV2DXAEL.js';
15
+ import '../chunk-NCHKKYPQ.js';
16
16
  import '../chunk-SMBKXWML.js';
17
- import '../chunk-D4EOPIFL.js';
17
+ import '../chunk-EXRRTKWT.js';
18
18
  import '../chunk-XCUUI7E7.js';
19
19
  import '../chunk-BHHIIK3M.js';
20
20
  import '../chunk-PQADV6P6.js';
21
21
  import '../chunk-RSAQOKH3.js';
22
- import '../chunk-3JIZ2A6K.js';
22
+ import '../chunk-TMM32U7D.js';
23
23
  import '../chunk-OMV5W53A.js';
24
24
  import '../chunk-OG6CL3EB.js';
25
25
  import '../chunk-H5XTJ7GJ.js';
26
- import '../chunk-NUZHC6MM.js';
27
26
  import '../chunk-LACA4JGC.js';
27
+ import '../chunk-NUZHC6MM.js';
28
28
  import '../chunk-BZFWDIV6.js';
29
29
  import '../chunk-ODEQTPFM.js';
@@ -1,10 +1,10 @@
1
- export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-K77LKW3X.js';
2
- import '../chunk-KHJIEPZV.js';
1
+ export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-ZFM5L7M4.js';
3
2
  import '../chunk-GXQ3B46I.js';
3
+ import '../chunk-KHJIEPZV.js';
4
4
  import '../chunk-OMV5W53A.js';
5
5
  import '../chunk-OG6CL3EB.js';
6
6
  import '../chunk-H5XTJ7GJ.js';
7
- import '../chunk-NUZHC6MM.js';
8
7
  import '../chunk-LACA4JGC.js';
8
+ import '../chunk-NUZHC6MM.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -1,14 +1,14 @@
1
- export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-R2EOET5Q.js';
1
+ export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-627KFRON.js';
2
2
  import '../chunk-XJ2QEBMM.js';
3
- import '../chunk-D4EOPIFL.js';
3
+ import '../chunk-EXRRTKWT.js';
4
4
  import '../chunk-XCUUI7E7.js';
5
5
  import '../chunk-PQADV6P6.js';
6
6
  import '../chunk-RSAQOKH3.js';
7
- import '../chunk-3JIZ2A6K.js';
7
+ import '../chunk-TMM32U7D.js';
8
8
  import '../chunk-OMV5W53A.js';
9
9
  import '../chunk-OG6CL3EB.js';
10
10
  import '../chunk-H5XTJ7GJ.js';
11
- import '../chunk-NUZHC6MM.js';
12
11
  import '../chunk-LACA4JGC.js';
12
+ import '../chunk-NUZHC6MM.js';
13
13
  import '../chunk-BZFWDIV6.js';
14
14
  import '../chunk-ODEQTPFM.js';
@@ -2,16 +2,16 @@ import { richEditorLabels } from './chunk-CSQTDGTS.js';
2
2
  import { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
3
3
  import { safeHref, MARKDOWN_CALLOUT_TONES } from './chunk-BAKPMH3S.js';
4
4
  import { Toolbar } from './chunk-NR4CPM4T.js';
5
- import { FormField, Input } from './chunk-D4EOPIFL.js';
5
+ import { FormField, Input } from './chunk-EXRRTKWT.js';
6
6
  import './chunk-XCUUI7E7.js';
7
7
  import './chunk-PQADV6P6.js';
8
8
  import './chunk-RSAQOKH3.js';
9
- import { Menu } from './chunk-3JIZ2A6K.js';
9
+ import { Menu } from './chunk-TMM32U7D.js';
10
10
  import { placePopup, viewportBounds } from './chunk-OMV5W53A.js';
11
11
  import { Button } from './chunk-OG6CL3EB.js';
12
12
  import { usePopupLayer } from './chunk-H5XTJ7GJ.js';
13
- import './chunk-NUZHC6MM.js';
14
13
  import { IconButton } from './chunk-LACA4JGC.js';
14
+ import './chunk-NUZHC6MM.js';
15
15
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
16
16
  import { cx } from './chunk-ODEQTPFM.js';
17
17
  import { forwardRef, useMemo, useRef, useState, useId, useSyncExternalStore, useCallback, useLayoutEffect, useEffect, useImperativeHandle } from 'react';
@@ -0,0 +1,91 @@
1
+ import { type ReactNode } from 'react';
2
+ /**
3
+ * What a folder holds that the reader can open: its direct children only,
4
+ * counted from the reader's own view of them. A folder grants nothing, so a
5
+ * reader who can open nothing inside is told so rather than told it is empty.
6
+ */
7
+ export interface FolderContents {
8
+ artifacts: number;
9
+ folders: number;
10
+ }
11
+ export interface FolderContentsLabels {
12
+ /** "12 artifacts", "1 artifact". */
13
+ artifacts: (count: number) => string;
14
+ /** "2 folders", "1 folder". */
15
+ folders: (count: number) => string;
16
+ /** Said when the reader can open nothing inside, which is never "Empty". */
17
+ nothing: string;
18
+ }
19
+ /**
20
+ * The line a folder's tile and its list row say about what is inside: "12
21
+ * artifacts · 2 folders", one part alone when the other is none, and "Nothing
22
+ * you can open yet" for neither.
23
+ *
24
+ * ONE PHRASING, EXPORTED, so the grid's tile and the list's name cell
25
+ * (`ArtifactNameCell kind="folder"`, whose `detail` takes this) never say the
26
+ * same count two ways.
27
+ */
28
+ export declare function describeFolderContents(contents: FolderContents, labels?: Partial<FolderContentsLabels>): string;
29
+ export type FolderTileSize = 'tile' | 'row';
30
+ export interface FolderTileLabels extends FolderContentsLabels {
31
+ /** What it is, said after its name: the tile draws a folder rather than printing the word. */
32
+ folder: string;
33
+ /** Said when the tile is chosen, since the chosen edge is a picture of it. */
34
+ selected: string;
35
+ }
36
+ export interface FolderTileProps {
37
+ name: string;
38
+ /** The folder's page. The whole tile is one real link. */
39
+ href: string;
40
+ /**
41
+ * Who can see the folder, as a glyph and a short word: an
42
+ * `ArtifactAccessLabel` with the folder's own word ("Everyone", "Only you").
43
+ * Read as part of the tile's description.
44
+ */
45
+ visibility?: ReactNode;
46
+ /** What is inside that the reader can open. Left out (still loading), no line is drawn. */
47
+ contents?: FolderContents | undefined;
48
+ /**
49
+ * The tile's own controls (a More menu), drawn OUTSIDE its link at its
50
+ * trailing edge and shown on hover and while focus is inside the tile, so a
51
+ * keyboard reaches them after the link and they are never nested in it.
52
+ */
53
+ actions?: ReactNode;
54
+ /** It is chosen (a selection the host keeps): the selected edge and fill. */
55
+ selected?: boolean | undefined;
56
+ /**
57
+ * Something held over it would land in it: the drop target's edge and fill.
58
+ * Reserved for dragging onto a folder, which the host drives.
59
+ */
60
+ dropTarget?: boolean | undefined;
61
+ /**
62
+ * `tile` is a gallery's (a grid of them, a few across); `row` is the full
63
+ * width, 44px row a phone takes. A tile takes the row's shape on its own
64
+ * under the phone breakpoint.
65
+ */
66
+ size?: FolderTileSize | undefined;
67
+ className?: string | undefined;
68
+ labels?: Partial<FolderTileLabels> | undefined;
69
+ }
70
+ /**
71
+ * A folder in a gallery: the folder glyph on a neutral tint, the name on one
72
+ * line, who can see it and what is inside, and a More menu.
73
+ *
74
+ * SHORTER THAN AN ARTIFACT'S CARD AND WITH NO PREVIEW, so a folder and an
75
+ * artifact never look alike and the kind's badge keeps its meaning. The tint
76
+ * is neutral for the same reason: a folder is not a kind.
77
+ *
78
+ * THE FACTS ARE NEVER CUT. Who can see the folder and what is inside wrap
79
+ * onto a second line where the tile is narrow; only the name, which carries
80
+ * its whole self on hover, is cut to one line.
81
+ *
82
+ * THE WHOLE TILE IS ONE LINK, named by the folder's name alone and described
83
+ * by the rest, so a reader moving by link hears "Q3 launch" and then, if they
84
+ * wait, "Folder, Everyone, 12 artifacts · 2 folders". The More menu sits
85
+ * beside the link rather than inside it.
86
+ *
87
+ * ITS COUNT IS THE READER'S OWN. A folder grants nothing on what it holds, so
88
+ * the count is of what this reader can open, and a folder holding only things
89
+ * they cannot open says "Nothing you can open yet", never "Empty".
90
+ */
91
+ export declare function FolderTile({ name, href, visibility, contents, actions, selected, dropTarget, size, className, labels, }: FolderTileProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './FolderTile.css';
2
+ export { FolderTile, describeFolderContents } from './FolderTile.js';
3
+ export type { FolderContents, FolderContentsLabels, FolderTileLabels, FolderTileProps, FolderTileSize } from './FolderTile.js';
@@ -0,0 +1,7 @@
1
+ export { FolderTile, describeFolderContents } from '../chunk-M4QM477B.js';
2
+ import '../chunk-INHXF2CL.js';
3
+ import '../chunk-AV2DXAEL.js';
4
+ import '../chunk-BHHIIK3M.js';
5
+ import '../chunk-PQADV6P6.js';
6
+ import '../chunk-BZFWDIV6.js';
7
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,231 @@
1
+ /*
2
+ * A folder in a gallery: a short tile on Card (no preview), the folder glyph
3
+ * on a neutral tint over the name and one quiet line, and a More menu in the
4
+ * top corner outside the link. `row` is the full width, 44px row a phone
5
+ * takes, and a tile becomes one under the phone breakpoint.
6
+ *
7
+ * ON TOP OF CARD, so every rule that changes Card's own layout carries Card's
8
+ * class too: the two sheets meet at equal weight and the bundle orders them by
9
+ * file name, which puts Card's after this one.
10
+ */
11
+
12
+ /*
13
+ * THE ARTIFACT CARD'S CORNER, so a folder tile and the cards below it read as
14
+ * one gallery, and Card's own hover step (the hairline darkens, nothing
15
+ * lifts). The chosen state is Card's (`selected`): the selected edge over the
16
+ * selected fill.
17
+ */
18
+ .crewlet-card.crewlet-folder-tile {
19
+ /*
20
+ * THE TWO SHAPES ARE ONE LAYOUT AT TWO SIZES, so the row (and a tile under
21
+ * the phone breakpoint) restates these and nothing else.
22
+ */
23
+ --crewlet-folder-tile-radius: var(--radius-xl);
24
+ --crewlet-folder-tile-gap: var(--spacing-3);
25
+ --crewlet-folder-tile-pad-block: var(--spacing-4);
26
+ --crewlet-folder-tile-pad-inline: var(--spacing-4);
27
+ --crewlet-folder-tile-floor: auto;
28
+ --crewlet-folder-tile-glyph: 40px;
29
+ --crewlet-folder-tile-glyph-radius: var(--radius-md);
30
+ --crewlet-folder-tile-name: var(--font-size-md);
31
+ --crewlet-folder-tile-facts: var(--font-size-sm);
32
+ --crewlet-folder-tile-actions-inset: var(--spacing-3);
33
+ /*
34
+ * A TILE STACKS: the glyph on top with the More menu level with it in the
35
+ * other corner, then the name and the facts the full width of the tile,
36
+ * where a gallery four across has room for "Everyone · 12 artifacts · 2
37
+ * folders". A row is one line of glyph and words with the menu centred on
38
+ * it, and only the row gives the menu room.
39
+ */
40
+ --crewlet-folder-tile-direction: column;
41
+ --crewlet-folder-tile-align: flex-start;
42
+ --crewlet-folder-tile-actions-top: calc(
43
+ var(--crewlet-folder-tile-pad-block) + (var(--crewlet-folder-tile-glyph) - var(--size-control-sm)) / 2
44
+ );
45
+ --crewlet-folder-tile-actions-shift: 0;
46
+ --crewlet-folder-tile-reserve-link: 0px;
47
+
48
+ flex-direction: row;
49
+ align-items: stretch;
50
+ min-width: 0;
51
+ border-radius: var(--crewlet-folder-tile-radius);
52
+ }
53
+
54
+ /* ---- the row: a phone's, full width at 44px ---- */
55
+
56
+ .crewlet-card.crewlet-folder-tile--row {
57
+ --crewlet-folder-tile-radius: var(--radius-lg);
58
+ --crewlet-folder-tile-gap: var(--spacing-2);
59
+ --crewlet-folder-tile-pad-block: var(--spacing-1);
60
+ --crewlet-folder-tile-pad-inline: var(--spacing-3);
61
+ --crewlet-folder-tile-floor: var(--size-control-lg);
62
+ --crewlet-folder-tile-glyph: 28px;
63
+ --crewlet-folder-tile-glyph-radius: var(--radius-sm);
64
+ --crewlet-folder-tile-name: var(--font-size-sm);
65
+ --crewlet-folder-tile-facts: var(--font-size-xs);
66
+ --crewlet-folder-tile-actions-inset: var(--spacing-2);
67
+ --crewlet-folder-tile-direction: row;
68
+ --crewlet-folder-tile-align: center;
69
+ --crewlet-folder-tile-actions-top: 50%;
70
+ --crewlet-folder-tile-actions-shift: -50%;
71
+ --crewlet-folder-tile-reserve-link: calc(var(--size-control-sm) + var(--spacing-1));
72
+ }
73
+
74
+ /* UNDER THE PHONE BREAKPOINT A TILE IS THE ROW, strictly under, as the
75
+ package switches there everywhere else. */
76
+ @media (width < 640px) {
77
+ .crewlet-card.crewlet-folder-tile--tile {
78
+ --crewlet-folder-tile-radius: var(--radius-lg);
79
+ --crewlet-folder-tile-gap: var(--spacing-2);
80
+ --crewlet-folder-tile-pad-block: var(--spacing-1);
81
+ --crewlet-folder-tile-pad-inline: var(--spacing-3);
82
+ --crewlet-folder-tile-floor: var(--size-control-lg);
83
+ --crewlet-folder-tile-glyph: 28px;
84
+ --crewlet-folder-tile-glyph-radius: var(--radius-sm);
85
+ --crewlet-folder-tile-name: var(--font-size-sm);
86
+ --crewlet-folder-tile-facts: var(--font-size-xs);
87
+ --crewlet-folder-tile-actions-inset: var(--spacing-2);
88
+ --crewlet-folder-tile-direction: row;
89
+ --crewlet-folder-tile-align: center;
90
+ --crewlet-folder-tile-actions-top: 50%;
91
+ --crewlet-folder-tile-actions-shift: -50%;
92
+ --crewlet-folder-tile-reserve-link: calc(var(--size-control-sm) + var(--spacing-1));
93
+ }
94
+ }
95
+
96
+ /*
97
+ * SOMETHING HELD OVER IT WOULD LAND IN IT: the accent edge over the accent's
98
+ * soft fill, the same pair a file drop target takes while files are over it,
99
+ * so "let go here" reads one way across the package.
100
+ */
101
+ .crewlet-card.crewlet-folder-tile.is-drop-target {
102
+ border-color: var(--color-brand-accent);
103
+ background-color: var(--color-brand-accent-soft);
104
+ }
105
+
106
+ .crewlet-card.crewlet-folder-tile:has(.crewlet-folder-tile__link:focus-visible) {
107
+ outline: 2px solid var(--color-focus);
108
+ outline-offset: var(--size-focus-ring-inset-offset);
109
+ }
110
+
111
+ /* THE LINK IS THE TILE: it fills it, and the ring is drawn on the tile. */
112
+ .crewlet-folder-tile__link,
113
+ .crewlet-folder-tile__link:hover {
114
+ text-decoration: none;
115
+ }
116
+
117
+ .crewlet-folder-tile__link {
118
+ display: flex;
119
+ flex: 1 1 auto;
120
+ flex-direction: var(--crewlet-folder-tile-direction);
121
+ align-items: var(--crewlet-folder-tile-align);
122
+ gap: var(--crewlet-folder-tile-gap);
123
+ min-width: 0;
124
+ min-height: var(--crewlet-folder-tile-floor);
125
+ padding: var(--crewlet-folder-tile-pad-block) var(--crewlet-folder-tile-pad-inline);
126
+ border-radius: inherit;
127
+ color: inherit;
128
+ outline: none;
129
+ }
130
+
131
+ /* Room for the More menu on a row, where it sits beside the words. */
132
+ .crewlet-folder-tile--with-actions .crewlet-folder-tile__link {
133
+ padding-inline-end: calc(var(--crewlet-folder-tile-pad-inline) + var(--crewlet-folder-tile-reserve-link));
134
+ }
135
+
136
+ /* A NEUTRAL TINT, never a kind's: a folder is not a kind. */
137
+ .crewlet-folder-tile__glyph {
138
+ display: inline-flex;
139
+ flex: none;
140
+ align-items: center;
141
+ justify-content: center;
142
+ width: var(--crewlet-folder-tile-glyph);
143
+ height: var(--crewlet-folder-tile-glyph);
144
+ box-sizing: border-box;
145
+ border-radius: var(--crewlet-folder-tile-glyph-radius);
146
+ background: var(--color-surface-inset);
147
+ box-shadow: inset 0 0 0 1px var(--color-border-default);
148
+ color: var(--color-text-secondary);
149
+ }
150
+
151
+ .crewlet-folder-tile__body {
152
+ display: flex;
153
+ flex-direction: column;
154
+ gap: 2px;
155
+ min-width: 0;
156
+ max-width: 100%;
157
+ }
158
+
159
+ .crewlet-folder-tile__name {
160
+ overflow: hidden;
161
+ color: var(--color-text-primary);
162
+ font-size: var(--crewlet-folder-tile-name);
163
+ font-weight: var(--font-weight-medium);
164
+ line-height: 1.35;
165
+ text-overflow: ellipsis;
166
+ white-space: nowrap;
167
+ }
168
+
169
+ /*
170
+ * THE FACTS WRAP, NEVER CUT. "Everyone" and "Nothing you can open yet" are
171
+ * both things a reader has to read, and four tiles across a laptop's page do
172
+ * not have room for them on one line: the count moves under who can see the
173
+ * folder rather than losing its end to an ellipsis. The two are told apart by
174
+ * the visibility glyph and the gap between them, not by a separator, so a
175
+ * line that breaks never opens on a stray dot.
176
+ */
177
+ .crewlet-folder-tile__facts {
178
+ display: flex;
179
+ flex-wrap: wrap;
180
+ align-items: center;
181
+ gap: 2px var(--spacing-3);
182
+ min-width: 0;
183
+ color: var(--color-text-tertiary);
184
+ font-size: var(--crewlet-folder-tile-facts);
185
+ line-height: 1.35;
186
+ }
187
+
188
+ .crewlet-folder-tile__visibility {
189
+ display: inline-flex;
190
+ flex: none;
191
+ align-items: center;
192
+ }
193
+
194
+ .crewlet-folder-tile__contents {
195
+ min-width: 0;
196
+ overflow-wrap: anywhere;
197
+ }
198
+
199
+ /*
200
+ * THE TILE'S OWN CONTROLS, at its trailing edge and outside the link: hidden
201
+ * until the tile is hovered or holds focus, so a gallery rests as names, and
202
+ * always there on a screen with no hover or while their menu is open.
203
+ */
204
+ .crewlet-folder-tile__actions {
205
+ position: absolute;
206
+ top: var(--crewlet-folder-tile-actions-top);
207
+ right: var(--crewlet-folder-tile-actions-inset);
208
+ display: inline-flex;
209
+ gap: var(--spacing-1);
210
+ transform: translateY(var(--crewlet-folder-tile-actions-shift));
211
+ opacity: 0;
212
+ transition: opacity var(--motion-duration-fast) var(--motion-easing-out);
213
+ }
214
+
215
+ .crewlet-folder-tile:hover .crewlet-folder-tile__actions,
216
+ .crewlet-folder-tile:focus-within .crewlet-folder-tile__actions,
217
+ .crewlet-folder-tile__actions:has([aria-expanded='true']) {
218
+ opacity: 1;
219
+ }
220
+
221
+ @media (hover: none) {
222
+ .crewlet-folder-tile__actions {
223
+ opacity: 1;
224
+ }
225
+ }
226
+
227
+ @media (prefers-reduced-motion: reduce) {
228
+ .crewlet-folder-tile__actions {
229
+ transition: none;
230
+ }
231
+ }
@@ -1,17 +1,17 @@
1
1
  import '../chunk-FFMCMSJB.js';
2
- export { HuePicker, HueSwatch } from '../chunk-RBUA7ZNK.js';
2
+ export { HuePicker, HueSwatch } from '../chunk-34RMTXDZ.js';
3
3
  import '../chunk-AYKXMIOR.js';
4
- import '../chunk-SMVWDO72.js';
5
- import '../chunk-GKRPPSWY.js';
4
+ import '../chunk-6FVGSWLS.js';
5
+ import '../chunk-ILFEWRLG.js';
6
6
  import '../chunk-WIATRXEJ.js';
7
7
  import '../chunk-EGMQURBR.js';
8
8
  import '../chunk-BHHIIK3M.js';
9
- import '../chunk-3JIZ2A6K.js';
10
- import '../chunk-2YTOOH3A.js';
9
+ import '../chunk-TMM32U7D.js';
11
10
  import '../chunk-OMV5W53A.js';
11
+ import '../chunk-2YTOOH3A.js';
12
12
  import '../chunk-OG6CL3EB.js';
13
13
  import '../chunk-H5XTJ7GJ.js';
14
- import '../chunk-NUZHC6MM.js';
15
14
  import '../chunk-LACA4JGC.js';
15
+ import '../chunk-NUZHC6MM.js';
16
16
  import '../chunk-BZFWDIV6.js';
17
17
  import '../chunk-ODEQTPFM.js';
@@ -1,9 +1,9 @@
1
- export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea, foldLineBreaks } from '../chunk-D4EOPIFL.js';
1
+ export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea, foldLineBreaks } from '../chunk-EXRRTKWT.js';
2
2
  import '../chunk-XCUUI7E7.js';
3
3
  import '../chunk-PQADV6P6.js';
4
4
  import '../chunk-RSAQOKH3.js';
5
5
  import '../chunk-H5XTJ7GJ.js';
6
- import '../chunk-NUZHC6MM.js';
7
6
  import '../chunk-LACA4JGC.js';
7
+ import '../chunk-NUZHC6MM.js';
8
8
  import '../chunk-BZFWDIV6.js';
9
9
  import '../chunk-ODEQTPFM.js';
@@ -1,12 +1,12 @@
1
- export { LinkInterstitial, openExternal } from '../chunk-DY4DQ7EB.js';
1
+ export { LinkInterstitial, openExternal } from '../chunk-GP4YWZFO.js';
2
+ import '../chunk-YCC2S7DF.js';
2
3
  import '../chunk-5CLW2CXT.js';
3
- import '../chunk-6AKG2VLR.js';
4
4
  import '../chunk-SZZRIHGT.js';
5
5
  import '../chunk-PQADV6P6.js';
6
6
  import '../chunk-OMV5W53A.js';
7
7
  import '../chunk-OG6CL3EB.js';
8
8
  import '../chunk-H5XTJ7GJ.js';
9
- import '../chunk-NUZHC6MM.js';
10
9
  import '../chunk-LACA4JGC.js';
10
+ import '../chunk-NUZHC6MM.js';
11
11
  import '../chunk-BZFWDIV6.js';
12
12
  import '../chunk-ODEQTPFM.js';