@crewlethq/ui 0.10.0 → 0.12.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 (90) hide show
  1. package/README.md +27 -1
  2. package/dist/Accordion/index.js +3 -3
  3. package/dist/AppShell/index.js +2 -2
  4. package/dist/AvatarPicker/AvatarPicker.d.ts +32 -0
  5. package/dist/AvatarPicker/index.d.ts +3 -0
  6. package/dist/AvatarPicker/index.js +14 -0
  7. package/dist/AvatarPicker-PREY36MG.css +54 -0
  8. package/dist/Canvas/index.js +3 -3
  9. package/dist/Card/index.js +2 -2
  10. package/dist/CharacterPicker/index.js +2 -1
  11. package/dist/ChoiceList/ChoiceList.d.ts +45 -0
  12. package/dist/ChoiceList/index.d.ts +3 -0
  13. package/dist/ChoiceList/index.js +2 -0
  14. package/dist/ChoiceList-2PQJS4DX.css +109 -0
  15. package/dist/CodeBlock/index.js +3 -3
  16. package/dist/Combobox/index.js +3 -3
  17. package/dist/CommandPalette/index.js +7 -7
  18. package/dist/Composer/Composer.d.ts +27 -0
  19. package/dist/Composer/index.d.ts +3 -0
  20. package/dist/Composer/index.js +7 -0
  21. package/dist/Composer-ABGJIAIR.css +88 -0
  22. package/dist/Copyable/index.js +2 -2
  23. package/dist/DataTable/index.js +7 -7
  24. package/dist/DataView/index.js +14 -14
  25. package/dist/DateTimePicker/index.js +4 -4
  26. package/dist/Disclosure/index.js +3 -3
  27. package/dist/FactList/FactList.d.ts +33 -0
  28. package/dist/FactList/index.d.ts +3 -0
  29. package/dist/FactList/index.js +6 -0
  30. package/dist/FactList-G2H73NFR.css +57 -0
  31. package/dist/HuePicker/index.js +4 -3
  32. package/dist/Input/FormField.d.ts +8 -1
  33. package/dist/Input/index.js +1 -1
  34. package/dist/{Input-DRFNI26F.css → Input-RAKNQJCV.css} +7 -0
  35. package/dist/ListInput/ListInput.d.ts +3 -1
  36. package/dist/ListInput/index.js +3 -3
  37. package/dist/Menu/index.js +3 -3
  38. package/dist/Modal/index.js +3 -3
  39. package/dist/OrgTable/index.js +5 -5
  40. package/dist/SegmentedControl/index.js +3 -3
  41. package/dist/Tabs/Tabs.d.ts +18 -0
  42. package/dist/Tabs/index.d.ts +1 -1
  43. package/dist/Tabs/index.js +1 -1
  44. package/dist/{Tabs-BWFQSWY3.css → Tabs-5I5Q5KKM.css} +33 -0
  45. package/dist/TagsInput/index.js +2 -2
  46. package/dist/ThemeSwitcher/index.js +4 -4
  47. package/dist/TimeWindowPicker/index.js +5 -5
  48. package/dist/TreeCanvas/index.js +4 -4
  49. package/dist/TreeGrid/index.js +2 -2
  50. package/dist/chunk-3L5NHASN.js +1 -0
  51. package/dist/{chunk-L7THQMFB.js → chunk-5WEVLIB6.js} +1 -1
  52. package/dist/{chunk-LPHHDCN3.js → chunk-EBBAAQDY.js} +1 -1
  53. package/dist/chunk-EXHQ2QVW.js +1 -0
  54. package/dist/{chunk-ZGX2DP7F.js → chunk-FTEJPHBI.js} +8 -2
  55. package/dist/{chunk-RIAZM6L3.js → chunk-G2AVKPSL.js} +1 -1
  56. package/dist/{chunk-6HXH57BL.js → chunk-GARACZAH.js} +4 -2
  57. package/dist/{chunk-CVB7O3SZ.js → chunk-GOUKOXJK.js} +5 -5
  58. package/dist/{chunk-UYK72NOS.js → chunk-GXYNEDNA.js} +1 -1
  59. package/dist/{chunk-IZHN5I3H.js → chunk-HLBRPES3.js} +4 -4
  60. package/dist/chunk-HV6IZFBK.js +64 -0
  61. package/dist/{chunk-EUT7VBQG.js → chunk-IINFVK3W.js} +8 -8
  62. package/dist/{chunk-HEOVQZL7.js → chunk-JHQUT4WJ.js} +6 -2
  63. package/dist/{chunk-26TXVHN2.js → chunk-K5Q2DK3P.js} +1 -2
  64. package/dist/{chunk-MORLKUGM.js → chunk-KGTQ5CVD.js} +1 -1
  65. package/dist/chunk-QBXZLGK2.js +40 -0
  66. package/dist/chunk-QSLIN64M.js +47 -0
  67. package/dist/{chunk-MICH6QSJ.js → chunk-S4RCG44T.js} +1 -1
  68. package/dist/{chunk-UI6HWAWE.js → chunk-UAQIUSSK.js} +1 -1
  69. package/dist/chunk-URYDN2KA.js +25 -0
  70. package/dist/{chunk-X6K6OZ47.js → chunk-WEIINZPA.js} +1 -1
  71. package/dist/{chunk-IGWPZZIB.js → chunk-XV65NTIT.js} +3 -3
  72. package/dist/{chunk-UO5UK7V2.js → chunk-YXMCUKFI.js} +0 -1
  73. package/dist/{chunk-7FFDJQ23.js → chunk-ZMJHK7DR.js} +1 -1
  74. package/dist/generated/index.d.ts +4 -0
  75. package/dist/generated/index.js +66 -60
  76. package/dist/index.js +66 -60
  77. package/dist/styles.css +362 -2
  78. package/dist/utils/index.js +1 -1
  79. package/package.json +3 -3
  80. package/dist/{chunk-VE6LD3KM.js → chunk-2PZBIHRV.js} +2 -2
  81. package/dist/{chunk-YPTC4TX5.js → chunk-74OVQWA5.js} +0 -0
  82. package/dist/{chunk-OVLJEVQS.js → chunk-7LD6P32I.js} +1 -1
  83. package/dist/{chunk-CEOXFO3E.js → chunk-EG6NYWVK.js} +1 -1
  84. package/dist/{chunk-FZVJDJFN.js → chunk-ENJUPIND.js} +1 -1
  85. package/dist/{chunk-5I56UXBJ.js → chunk-JCNUQ3US.js} +2 -2
  86. package/dist/{chunk-SX2DFTQV.js → chunk-MCPKHYMC.js} +1 -1
  87. package/dist/{chunk-BTHX2FS3.js → chunk-TEEJSTFG.js} +2 -2
  88. package/dist/{chunk-LSB3EHBW.js → chunk-TFH6SYWB.js} +2 -2
  89. package/dist/{chunk-26SCUACK.js → chunk-YACKC3K2.js} +1 -1
  90. package/dist/{chunk-MPXI6FM6.js → chunk-ZHOM65MI.js} +1 -1
package/dist/styles.css CHANGED
@@ -1413,6 +1413,63 @@
1413
1413
  }
1414
1414
 
1415
1415
 
1416
+ /* AvatarPicker-PREY36MG.css */
1417
+ /*
1418
+ * The badge as a button, with a pencil pip on its corner saying it changes
1419
+ * the badge. No chrome of its own beyond the focus ring: the badge is the
1420
+ * control's face.
1421
+ */
1422
+ .crewlet-avatar-picker {
1423
+ position: relative;
1424
+ display: inline-flex;
1425
+ flex: none;
1426
+ padding: 0;
1427
+ border: 0;
1428
+ border-radius: var(--radius-lg);
1429
+ background: none;
1430
+ cursor: pointer;
1431
+ }
1432
+
1433
+ button.crewlet-avatar-picker:focus-visible {
1434
+ outline: 2px solid var(--color-focus);
1435
+ outline-offset: 2px;
1436
+ }
1437
+
1438
+ .crewlet-avatar-picker__pip {
1439
+ position: absolute;
1440
+ right: calc(var(--spacing-1) * -1);
1441
+ bottom: calc(var(--spacing-1) * -1);
1442
+ display: grid;
1443
+ place-items: center;
1444
+ width: 16px;
1445
+ height: 16px;
1446
+ border: 1px solid var(--color-border-strong);
1447
+ border-radius: var(--radius-circle);
1448
+ background: var(--color-surface-elevated);
1449
+ color: var(--color-text-secondary);
1450
+ }
1451
+
1452
+ button.crewlet-avatar-picker:hover .crewlet-avatar-picker__pip {
1453
+ color: var(--color-text-primary);
1454
+ }
1455
+
1456
+ .crewlet-avatar-picker__body {
1457
+ display: grid;
1458
+ gap: var(--spacing-2);
1459
+ width: max-content;
1460
+ max-width: 100%;
1461
+ padding: var(--spacing-3);
1462
+ }
1463
+
1464
+ .crewlet-avatar-picker__label {
1465
+ font-size: var(--font-size-2xs);
1466
+ font-weight: var(--font-weight-medium);
1467
+ letter-spacing: var(--font-letter-spacing-wide);
1468
+ text-transform: uppercase;
1469
+ color: var(--color-text-tertiary);
1470
+ }
1471
+
1472
+
1416
1473
  /* AvatarStack-GEJBNV7E.css */
1417
1474
  /*
1418
1475
  * Several badges as one mark (AvatarStack.tsx).
@@ -3996,6 +4053,118 @@
3996
4053
  }
3997
4054
 
3998
4055
 
4056
+ /* ChoiceList-2PQJS4DX.css */
4057
+ /*
4058
+ * A short list of answers in one bordered box: a radio, the label with a line
4059
+ * of detail under it, and a tag at the row's end. The selected row takes the
4060
+ * accent's soft fill, so the answer reads at a glance without the radio.
4061
+ */
4062
+ .crewlet-choice-list {
4063
+ display: grid;
4064
+ gap: var(--spacing-1);
4065
+ padding: var(--spacing-1);
4066
+ border: 1px solid var(--color-border-strong);
4067
+ border-radius: var(--radius-md);
4068
+ background: var(--color-surface-subtle);
4069
+ }
4070
+
4071
+ .crewlet-choice-list.is-disabled {
4072
+ opacity: 0.6;
4073
+ }
4074
+
4075
+ .crewlet-choice-list__group {
4076
+ display: grid;
4077
+ gap: var(--spacing-1);
4078
+ }
4079
+
4080
+ .crewlet-choice-list__item {
4081
+ display: grid;
4082
+ gap: var(--spacing-1);
4083
+ }
4084
+
4085
+ /* The "Something else" a list ends with, set apart by a dashed rule. */
4086
+ .crewlet-choice-list__item.is-separated {
4087
+ padding-top: var(--spacing-1);
4088
+ border-top: 1px dashed var(--color-border-strong);
4089
+ }
4090
+
4091
+ .crewlet-choice-list__row {
4092
+ display: grid;
4093
+ grid-template-columns: auto minmax(0, 1fr) auto;
4094
+ align-items: start;
4095
+ gap: var(--spacing-3);
4096
+ padding: var(--spacing-2);
4097
+ border-radius: var(--radius-sm);
4098
+ cursor: pointer;
4099
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-default);
4100
+ }
4101
+
4102
+ .crewlet-choice-list__row:hover {
4103
+ background: var(--color-surface-hover);
4104
+ }
4105
+
4106
+ .crewlet-choice-list__row.is-checked {
4107
+ background: var(--color-brand-accent-soft);
4108
+ }
4109
+
4110
+ .crewlet-choice-list.is-disabled .crewlet-choice-list__row {
4111
+ cursor: not-allowed;
4112
+ }
4113
+
4114
+ .crewlet-choice-list__radio {
4115
+ margin: 3px 0 0;
4116
+ accent-color: var(--color-brand-accent);
4117
+ cursor: inherit;
4118
+ }
4119
+
4120
+ /* A radio draws its own edge, so the ring sits on it, as a checkbox's does. */
4121
+ .crewlet-choice-list__radio:focus-visible {
4122
+ outline: 2px solid var(--color-focus);
4123
+ outline-offset: 0;
4124
+ }
4125
+
4126
+ .crewlet-choice-list__text {
4127
+ display: grid;
4128
+ min-width: 0;
4129
+ }
4130
+
4131
+ .crewlet-choice-list__label {
4132
+ font-size: var(--font-size-compact);
4133
+ font-weight: 500;
4134
+ color: var(--color-text-primary);
4135
+ overflow-wrap: anywhere;
4136
+ }
4137
+
4138
+ .crewlet-choice-list__detail {
4139
+ font-size: var(--font-size-xs);
4140
+ color: var(--color-text-tertiary);
4141
+ overflow-wrap: anywhere;
4142
+ }
4143
+
4144
+ .crewlet-choice-list__tag {
4145
+ padding-top: 2px;
4146
+ font-size: var(--font-size-2xs);
4147
+ font-weight: 500;
4148
+ letter-spacing: 0.05em;
4149
+ text-transform: uppercase;
4150
+ color: var(--color-brand-accent-ink);
4151
+ white-space: nowrap;
4152
+ }
4153
+
4154
+ .crewlet-choice-list__footer {
4155
+ display: flex;
4156
+ justify-content: flex-end;
4157
+ gap: var(--spacing-2);
4158
+ padding: var(--spacing-1);
4159
+ }
4160
+
4161
+ @media (prefers-reduced-motion: reduce) {
4162
+ .crewlet-choice-list__row {
4163
+ transition: none;
4164
+ }
4165
+ }
4166
+
4167
+
3999
4168
  /* CodeBlock-GYNJ2HI6.css */
4000
4169
  /*
4001
4170
  * CodeBlock, a monospace command, config or record surface. One step off the
@@ -4532,6 +4701,97 @@
4532
4701
  }
4533
4702
 
4534
4703
 
4704
+ /* Composer-ABGJIAIR.css */
4705
+ /*
4706
+ * A message written in place: the field and its footer strip in one box. The
4707
+ * BOX takes the focus ring, an accent border and a 2px soft halo, so the
4708
+ * field inside draws no border or outline of its own and the footer reads as
4709
+ * part of what is being written.
4710
+ */
4711
+ .crewlet-composer {
4712
+ display: grid;
4713
+ overflow: hidden;
4714
+ border: 1px solid var(--color-border-strong);
4715
+ border-radius: var(--radius-md);
4716
+ background: var(--color-surface-background);
4717
+ transition:
4718
+ border-color var(--motion-duration-fast) var(--motion-easing-default),
4719
+ box-shadow var(--motion-duration-fast) var(--motion-easing-default);
4720
+ }
4721
+
4722
+ .crewlet-composer:hover {
4723
+ border-color: var(--color-border-strong-hover);
4724
+ }
4725
+
4726
+ .crewlet-composer:focus-within {
4727
+ border-color: var(--color-brand-accent);
4728
+ box-shadow: 0 0 0 2px var(--color-brand-accent-soft);
4729
+ }
4730
+
4731
+ .crewlet-composer .crewlet-composer__field {
4732
+ min-height: 68px;
4733
+ max-height: 220px;
4734
+ padding: var(--spacing-2) var(--spacing-3);
4735
+ border: 0;
4736
+ border-radius: 0;
4737
+ background: transparent;
4738
+ resize: none;
4739
+ }
4740
+
4741
+ /* The ring is the box's, above. A transparent outline stays, because forced
4742
+ colors drops the box's shadow and paints an outline in its place. */
4743
+ .crewlet-composer .crewlet-composer__field:focus-visible {
4744
+ outline: 2px solid transparent;
4745
+ outline-offset: -2px;
4746
+ }
4747
+
4748
+ /* Past its cap the field scrolls rather than pushing the page. */
4749
+ .crewlet-composer .crewlet-composer__field.is-auto-resize {
4750
+ overflow-y: auto;
4751
+ }
4752
+
4753
+ .crewlet-composer__footer {
4754
+ display: flex;
4755
+ flex-wrap: wrap;
4756
+ align-items: center;
4757
+ gap: var(--spacing-2);
4758
+ padding: var(--spacing-1) var(--spacing-1) var(--spacing-1) var(--spacing-3);
4759
+ border-top: 1px solid var(--color-border-default);
4760
+ background: var(--color-surface-subtle);
4761
+ }
4762
+
4763
+ .crewlet-composer__hint {
4764
+ display: inline-flex;
4765
+ align-items: center;
4766
+ gap: var(--spacing-1);
4767
+ font-size: var(--font-size-2xs);
4768
+ color: var(--color-text-tertiary);
4769
+ }
4770
+
4771
+ .crewlet-composer__counter {
4772
+ font-family: var(--font-family-mono);
4773
+ font-size: var(--font-size-2xs);
4774
+ font-variant-numeric: tabular-nums;
4775
+ color: var(--color-feedback-warning-ink);
4776
+ }
4777
+
4778
+ .crewlet-composer__spacer {
4779
+ flex: 1;
4780
+ }
4781
+
4782
+ @media (width < 640px) {
4783
+ .crewlet-composer__hint {
4784
+ display: none;
4785
+ }
4786
+ }
4787
+
4788
+ @media (prefers-reduced-motion: reduce) {
4789
+ .crewlet-composer {
4790
+ transition: none;
4791
+ }
4792
+ }
4793
+
4794
+
4535
4795
  /* Container-3TSKMGNI.css */
4536
4796
  /*
4537
4797
  * Container, the centred content measure. One max-width scale shared by every
@@ -8032,6 +8292,66 @@ svg.crewlet-datetime__chevron {
8032
8292
  }
8033
8293
 
8034
8294
 
8295
+ /* FactList-G2H73NFR.css */
8296
+ /*
8297
+ * Read-only facts in one bordered box, a 32px row each: label and lock on the
8298
+ * left, the value on the right. The rows share the box's hairline between
8299
+ * them, so a list of six reads as one object rather than six cards.
8300
+ */
8301
+ .crewlet-fact-list {
8302
+ display: grid;
8303
+ margin: 0;
8304
+ border: 1px solid var(--color-border-default);
8305
+ border-radius: var(--radius-md);
8306
+ overflow: hidden;
8307
+ }
8308
+
8309
+ .crewlet-fact-list__row {
8310
+ display: flex;
8311
+ align-items: center;
8312
+ gap: var(--spacing-2);
8313
+ min-height: 32px;
8314
+ padding: var(--spacing-1) var(--spacing-3);
8315
+ font-size: var(--font-size-compact);
8316
+ }
8317
+
8318
+ .crewlet-fact-list__row + .crewlet-fact-list__row {
8319
+ border-top: 1px solid var(--color-border-default);
8320
+ }
8321
+
8322
+ .crewlet-fact-list__row.is-locked {
8323
+ cursor: help;
8324
+ }
8325
+
8326
+ .crewlet-fact-list__label {
8327
+ display: flex;
8328
+ flex: 1 1 auto;
8329
+ align-items: center;
8330
+ gap: var(--spacing-1);
8331
+ min-width: 0;
8332
+ margin: 0;
8333
+ color: var(--color-text-tertiary);
8334
+ }
8335
+
8336
+ .crewlet-fact-list__lock {
8337
+ flex: none;
8338
+ color: var(--color-text-tertiary);
8339
+ }
8340
+
8341
+ .crewlet-fact-list__value {
8342
+ display: flex;
8343
+ flex: 0 1 auto;
8344
+ align-items: center;
8345
+ justify-content: flex-end;
8346
+ gap: var(--spacing-2);
8347
+ min-width: 0;
8348
+ margin: 0;
8349
+ color: var(--color-text-secondary);
8350
+ text-align: right;
8351
+ overflow-wrap: anywhere;
8352
+ }
8353
+
8354
+
8035
8355
  /* FilterChip-EZ4QMW4E.css */
8036
8356
  /*
8037
8357
  * The filter chip: neutral until it is on, and then the accent.
@@ -8624,7 +8944,7 @@ svg.crewlet-datetime__chevron {
8624
8944
  }
8625
8945
 
8626
8946
 
8627
- /* Input-DRFNI26F.css */
8947
+ /* Input-RAKNQJCV.css */
8628
8948
  /*
8629
8949
  * The form row: Input, Textarea, Label, FormField, FormRow, FormSection and
8630
8950
  * ReadOnlyField.
@@ -9129,6 +9449,13 @@ svg.crewlet-datetime__chevron {
9129
9449
  color: var(--color-text-tertiary);
9130
9450
  }
9131
9451
 
9452
+ /* SHOWN ONLY WHILE THE FIELD HAS FOCUS (`helperOnFocus`): a dense form reads as
9453
+ labels and values at rest, and the sentence appears under the field the
9454
+ reader is in. Still described, so a screen reader hears it on entry. */
9455
+ .crewlet-form-field--helper-on-focus:not(:focus-within) .crewlet-form-field__helper {
9456
+ display: none;
9457
+ }
9458
+
9132
9459
  /*
9133
9460
  * The error line, on the danger INK. It stays BESIDE the help rather than
9134
9461
  * replacing it: a reader told they are wrong needs the line that says what
@@ -15492,7 +15819,7 @@ svg.crewlet-select__chevron {
15492
15819
  }
15493
15820
 
15494
15821
 
15495
- /* Tabs-BWFQSWY3.css */
15822
+ /* Tabs-5I5Q5KKM.css */
15496
15823
  /*
15497
15824
  * The pill register: Tabs and SegmentedControl.
15498
15825
  *
@@ -15833,6 +16160,39 @@ svg.crewlet-select__chevron {
15833
16160
  }
15834
16161
  }
15835
16162
 
16163
+ /* ── markers ──────────────────────────────────────────────────────────────
16164
+ What needs the reader behind a tab: a danger count for problems, a 6px
16165
+ dot for a warning or an unsaved change. One per tab, the most urgent. */
16166
+ .crewlet-tabs__marker {
16167
+ display: inline-flex;
16168
+ align-items: center;
16169
+ justify-content: center;
16170
+ flex: none;
16171
+ }
16172
+ .crewlet-tabs__marker--danger {
16173
+ min-width: 16px;
16174
+ height: 16px;
16175
+ padding: 0 var(--spacing-1);
16176
+ border-radius: var(--radius-circle);
16177
+ background: var(--color-feedback-danger-soft);
16178
+ color: var(--color-feedback-danger-ink);
16179
+ font-family: var(--font-family-mono);
16180
+ font-size: var(--font-size-2xs);
16181
+ line-height: 1;
16182
+ }
16183
+ .crewlet-tabs__marker--warning,
16184
+ .crewlet-tabs__marker--changed {
16185
+ width: 6px;
16186
+ height: 6px;
16187
+ border-radius: var(--radius-circle);
16188
+ }
16189
+ .crewlet-tabs__marker--warning {
16190
+ background: var(--color-feedback-warning);
16191
+ }
16192
+ .crewlet-tabs__marker--changed {
16193
+ background: var(--color-brand-accent);
16194
+ }
16195
+
15836
16196
 
15837
16197
  /* Tag-4BRQS6GN.css */
15838
16198
  /*
@@ -1,5 +1,5 @@
1
1
  import '../chunk-AER7UDD4.js';
2
- export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from '../chunk-AYKXMIOR.js';
3
2
  export { useClipboard, writeClipboard } from '../chunk-5VNUYO76.js';
4
3
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from '../chunk-PQADV6P6.js';
4
+ export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from '../chunk-AYKXMIOR.js';
5
5
  export { cx } from '../chunk-ODEQTPFM.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -42,8 +42,8 @@
42
42
  "clean": "rm -rf dist src/generated"
43
43
  },
44
44
  "dependencies": {
45
- "@crewlethq/icons": "0.10.0",
46
- "@crewlethq/tokens": "0.10.0"
45
+ "@crewlethq/icons": "0.12.0",
46
+ "@crewlethq/tokens": "0.12.0"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "react": ">=18",
@@ -1,7 +1,7 @@
1
1
  import { LayerNodeBridge } from './chunk-53DVJCVW.js';
2
- import { LAYER_REPOSITION_EVENT, LayerHost } from './chunk-7RPGY3JE.js';
3
- import { IconButton } from './chunk-4FQT6ZAY.js';
4
2
  import { Button } from './chunk-OG6CL3EB.js';
3
+ import { IconButton } from './chunk-4FQT6ZAY.js';
4
+ import { LAYER_REPOSITION_EVENT, LayerHost } from './chunk-7RPGY3JE.js';
5
5
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './Canvas-YVXHMWLN.css';
File without changes
@@ -1,5 +1,5 @@
1
- import { useModalLayer, focusables } from './chunk-R25RGPUB.js';
2
1
  import { IconButton } from './chunk-4FQT6ZAY.js';
2
+ import { useModalLayer, focusables } from './chunk-R25RGPUB.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './AppShell-CEVLW4QG.css';
5
5
  import { createContext, useContext, useId, useState, useRef, useCallback, useEffect, useLayoutEffect, useSyncExternalStore } from 'react';
@@ -1,6 +1,6 @@
1
1
  import { CardHeaderSlotContext } from './chunk-AV2DXAEL.js';
2
- import { Count } from './chunk-BHHIIK3M.js';
3
2
  import { useHeadingLevel, HeadingLevelProvider, nextHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
3
+ import { Count } from './chunk-BHHIIK3M.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './Card-KJOYHDTJ.css';
6
6
  import { createContext, useId, useState, isValidElement, useRef, useCallback, useMemo, Children, cloneElement, useContext, useEffect, Fragment } from 'react';
@@ -1,5 +1,5 @@
1
- import { Count } from './chunk-BHHIIK3M.js';
2
1
  import { headingTag } from './chunk-PQADV6P6.js';
2
+ import { Count } from './chunk-BHHIIK3M.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import { ChevronDownGlyph } from '@crewlethq/icons/glyphs';
5
5
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -1,7 +1,7 @@
1
- import { Popover } from './chunk-PDUZO35I.js';
2
1
  import { today, CalendarGrid, shiftMonth, compareDays } from './chunk-GXQ3B46I.js';
3
- import { IconButton } from './chunk-4FQT6ZAY.js';
4
2
  import { Button } from './chunk-OG6CL3EB.js';
3
+ import { IconButton } from './chunk-4FQT6ZAY.js';
4
+ import { Popover } from './chunk-PDUZO35I.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './DateTimePicker-4AZBTODT.css';
7
7
  import { useMemo, useState, useEffect } from 'react';
@@ -1,8 +1,8 @@
1
1
  import { useTreeState, treeExpandable, treeLevel, treePosInSet, treeSetSize, treeItemAction, treePrevious, treeNext, treeStep } from './chunk-S3BCVWTU.js';
2
2
  import { LayerNodeBridge } from './chunk-53DVJCVW.js';
3
+ import { IconButton } from './chunk-4FQT6ZAY.js';
3
4
  import { LayerHost, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
4
5
  import { focusables } from './chunk-R25RGPUB.js';
5
- import { IconButton } from './chunk-4FQT6ZAY.js';
6
6
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
8
  import './TreeGrid-NSW7VMOX.css';
@@ -1,8 +1,8 @@
1
+ import { Button } from './chunk-OG6CL3EB.js';
1
2
  import { HeadingLevelProvider } from './chunk-PQADV6P6.js';
3
+ import { IconButton } from './chunk-4FQT6ZAY.js';
2
4
  import { useLayerContainer } from './chunk-7RPGY3JE.js';
3
5
  import { focusables, useModalLayer, useBodyScrollLock } from './chunk-R25RGPUB.js';
4
- import { IconButton } from './chunk-4FQT6ZAY.js';
5
- import { Button } from './chunk-OG6CL3EB.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './Modal-BNT3TDV2.css';
8
8
  import { useId, useRef, useCallback } from 'react';
@@ -1,7 +1,7 @@
1
+ import { Button } from './chunk-OG6CL3EB.js';
2
+ import { IconButton } from './chunk-4FQT6ZAY.js';
1
3
  import { useLayerContainer, viewportBounds, LAYER_GAP, outsideBounds, placePopup, LAYER_REPOSITION_EVENT } from './chunk-7RPGY3JE.js';
2
4
  import { usePopupLayer } from './chunk-R25RGPUB.js';
3
- import { IconButton } from './chunk-4FQT6ZAY.js';
4
- import { Button } from './chunk-OG6CL3EB.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './Menu-BT5PMFJI.css';
7
7
  import { useId, useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
@@ -1,6 +1,6 @@
1
1
  import { useClipboard } from './chunk-5VNUYO76.js';
2
- import { IconButton } from './chunk-4FQT6ZAY.js';
3
2
  import { Button } from './chunk-OG6CL3EB.js';
3
+ import { IconButton } from './chunk-4FQT6ZAY.js';
4
4
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './Copyable-5PNRFOLS.css';
@@ -1,8 +1,8 @@
1
1
  import { Tag } from './chunk-LOECRMHA.js';
2
2
  import { useListbox } from './chunk-6MU7HNB4.js';
3
3
  import { announce } from './chunk-RSAQOKH3.js';
4
- import { isComposing } from './chunk-R25RGPUB.js';
5
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
5
+ import { isComposing } from './chunk-R25RGPUB.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './TagsInput-P2HS5QL4.css';
8
8
  import { forwardRef, useState, useRef, useId, useImperativeHandle, useEffect, useMemo, useLayoutEffect } from 'react';