@inkra/react 0.5.0 → 0.8.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 (38) hide show
  1. package/README.md +88 -1
  2. package/dist/Button.js +1 -1
  3. package/dist/PencilText.js +8 -0
  4. package/dist/breadcrumb/index.d.ts +16 -4
  5. package/dist/breadcrumb/index.js +20 -7
  6. package/dist/form/Textarea.d.ts +4 -0
  7. package/dist/form/Textarea.js +14 -8
  8. package/dist/form/index.d.ts +1 -1
  9. package/dist/form/textareaSizing.d.ts +29 -0
  10. package/dist/form/textareaSizing.js +153 -0
  11. package/dist/i18n/catalog.d.ts +1 -1
  12. package/dist/i18n/catalog.js +9 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.js +1 -0
  15. package/dist/inventory-grid/index.d.ts +35 -0
  16. package/dist/inventory-grid/index.js +205 -0
  17. package/dist/inventory-grid/model.d.ts +56 -0
  18. package/dist/inventory-grid/model.js +93 -0
  19. package/dist/layout/GridBoard.d.ts +22 -0
  20. package/dist/layout/GridBoard.js +113 -0
  21. package/dist/layout/GridResizable.d.ts +31 -0
  22. package/dist/layout/GridResizable.js +35 -0
  23. package/dist/layout/index.d.ts +19 -4
  24. package/dist/layout/index.js +45 -9
  25. package/dist/layout/swipeNavigation.d.ts +15 -0
  26. package/dist/layout/swipeNavigation.js +121 -0
  27. package/dist/pagination/index.d.ts +17 -0
  28. package/dist/pagination/index.js +30 -6
  29. package/dist/select/StepperSelect.js +1 -1
  30. package/dist/styles/base.css +9 -1
  31. package/dist/styles/breadcrumb.css +96 -5
  32. package/dist/styles/form.css +10 -0
  33. package/dist/styles/inventory-grid.css +31 -0
  34. package/dist/styles/layout.css +85 -0
  35. package/dist/styles/pagination.css +10 -0
  36. package/dist/styles/select.css +7 -2
  37. package/dist/styles.css +249 -8
  38. package/package.json +8 -1
package/dist/styles.css CHANGED
@@ -373,6 +373,14 @@
373
373
  opacity: 0;
374
374
  }
375
375
 
376
+ .inkra-button[data-variant="ghost"] > .inkra-button__surface > .inkra-pencil-surface__border {
377
+ display: none;
378
+ }
379
+
380
+ .inkra-button[data-variant="ghost"] > .inkra-button__surface > .inkra-pencil-surface__content {
381
+ clip-path: none;
382
+ }
383
+
376
384
  .inkra-button[data-variant="ghost"]:hover:not(:disabled):not([aria-disabled="true"])
377
385
  .inkra-button__surface > .inkra-pencil-surface__ink,
378
386
  .inkra-button[data-variant="ghost"]:focus-visible
@@ -391,7 +399,7 @@
391
399
  .inkra-button[data-variant="ghost"]:focus-visible
392
400
  .inkra-button__surface[data-pencil-fallback="true"] {
393
401
  background: var(--inkra-surface-muted);
394
- border-color: var(--inkra-border);
402
+ border-color: transparent;
395
403
  }
396
404
 
397
405
  .inkra-button[data-variant="link"] .inkra-button__label {
@@ -867,6 +875,16 @@
867
875
  resize: none;
868
876
  }
869
877
 
878
+ /* Native rows establish the initial editor height; counters remain a separate row. */
879
+ .inkra-field-control-hit--textarea[data-row-sizing="true"] .inkra-field-control--textarea {
880
+ min-height: 0;
881
+ }
882
+
883
+ .inkra-field-control-hit--textarea[data-row-sizing="true"] .inkra-textarea {
884
+ flex: none;
885
+ min-height: 0;
886
+ }
887
+
870
888
  .inkra-textarea__footer {
871
889
  display: flex;
872
890
  align-items: center;
@@ -2050,13 +2068,18 @@
2050
2068
  inline-size: 100%;
2051
2069
  }
2052
2070
 
2053
- .inkra-select-stepper .inkra-select-stepper__control,
2054
- .inkra-select-stepper .inkra-select-stepper__control > .inkra-pencil-surface__content {
2071
+ .inkra-select-stepper .inkra-select-stepper__control {
2055
2072
  flex-wrap: nowrap;
2056
2073
  gap: 0;
2057
2074
  padding-inline: 0;
2058
2075
  }
2059
2076
 
2077
+ .inkra-select-stepper .inkra-select-stepper__control > .inkra-pencil-surface__content {
2078
+ flex-wrap: nowrap;
2079
+ gap: 0;
2080
+ padding-inline: var(--inkra-field-control-padding);
2081
+ }
2082
+
2060
2083
  .inkra-select-stepper__control {
2061
2084
  outline: 0;
2062
2085
  }
@@ -6979,6 +7002,38 @@ div.inkra-choice-grid > .inkra-radio-group {
6979
7002
  .inkra-sortable__handle { display: none; }
6980
7003
  }
6981
7004
 
7005
+ .inkra-inventory-grid { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 24px; min-width: 0; max-width: 100%; color: var(--inkra-ink); }
7006
+ .inkra-inventory-grid__container { min-width: 0; max-width: 100%; }
7007
+ .inkra-inventory-grid__header { display: flex; align-items: center; justify-content: space-between; min-height: 44px; gap: 8px; padding-bottom: 8px; }
7008
+ .inkra-inventory-grid__scroll { max-width: 100%; overflow: auto; padding: 4px; }
7009
+ .inkra-inventory-grid__board { position: relative; isolation: isolate; direction: ltr; }
7010
+ .inkra-inventory-grid__lines { position: absolute; inset: 0; color: var(--inkra-border); pointer-events: none; }
7011
+ .inkra-inventory-grid__lines > canvas { position: absolute; }
7012
+ .inkra-inventory-grid__item, .inkra-inventory-grid__preview, .inkra-inventory-grid__cell, .inkra-inventory-grid__blocked { position: absolute; }
7013
+ .inkra-inventory-grid__item { outline: none; pointer-events: none; }
7014
+ .inkra-inventory-grid__cell { box-sizing: border-box; display: grid; place-items: center; pointer-events: auto; touch-action: none; cursor: grab; }
7015
+ .inkra-inventory-grid__cell-surface { position: absolute; inset: 2px; pointer-events: none; }
7016
+ .inkra-inventory-grid__item-content { position: relative; z-index: 1; padding: 4px; max-width: 100%; max-height: 100%; overflow: hidden; pointer-events: none; font-size: 13px; overflow-wrap: anywhere; text-align: center; }
7017
+ .inkra-inventory-grid__item[data-selected] .inkra-inventory-grid__cell-surface { color: var(--inkra-accent-strong); }
7018
+ .inkra-inventory-grid__cell-focus { position: absolute; inset: 3px; pointer-events: none; opacity: 0; color: var(--inkra-focus); }
7019
+ .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__cell-focus { opacity: 1; }
7020
+ .inkra-inventory-grid__item[data-dragging] { opacity: .28; }
7021
+ .inkra-inventory-grid__item[data-disabled] .inkra-inventory-grid__cell { cursor: default; touch-action: auto; }
7022
+ .inkra-inventory-grid__container[data-disabled], .inkra-inventory-grid[data-disabled] { opacity: .55; }
7023
+ .inkra-inventory-grid__preview { z-index: 2; pointer-events: none; color: var(--inkra-accent-strong); }
7024
+ .inkra-inventory-grid__preview[data-valid="false"] { color: var(--inkra-danger); }
7025
+ .inkra-inventory-grid__preview[data-valid="false"] .inkra-inventory-grid__cell { outline: 2px solid var(--inkra-danger); outline-offset: -4px; }
7026
+ .inkra-inventory-grid__preview .inkra-inventory-grid__cell, .inkra-inventory-grid__overlay .inkra-inventory-grid__cell { pointer-events: none; }
7027
+ .inkra-inventory-grid__overlay { position: relative; opacity: .8; pointer-events: none; color: var(--inkra-ink); }
7028
+ .inkra-inventory-grid__blocked { display: grid; place-items: center; color: var(--inkra-ink-muted); pointer-events: none; }
7029
+ .inkra-inventory-grid__announcement { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
7030
+ @media (forced-colors: active) {
7031
+ .inkra-inventory-grid__board { border: 1px solid CanvasText; }
7032
+ .inkra-inventory-grid__cell { border: 1px solid CanvasText; background: Canvas; }
7033
+ .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__cell { outline: 2px solid Highlight; outline-offset: -3px; }
7034
+ .inkra-inventory-grid__preview .inkra-inventory-grid__cell { border: 3px solid Highlight; }
7035
+ }
7036
+
6982
7037
  .inkra-sparkline { position: relative; display: inline-grid; gap: var(--inkra-space-1, 4px); max-inline-size: 100%; color: var(--inkra-ink); font-size: var(--inkra-text-sm); }
6983
7038
  .inkra-sparkline__svg { display: block; inline-size: min(100%, 100%); block-size: auto; overflow: visible; outline: none; position: relative; z-index: 1; }
6984
7039
  .inkra-sparkline__pencil { position: absolute; inset: 0 auto auto 0; inline-size: 100%; block-size: auto; aspect-ratio: 180 / 56; pointer-events: none; z-index: 2; opacity: 0; }
@@ -8717,12 +8772,103 @@ svg.leaflet-image-layer.leaflet-interactive path {
8717
8772
  }
8718
8773
  }
8719
8774
 
8720
- .inkra-breadcrumb { min-width: 0; color: var(--inkra-ink); }
8721
- .inkra-breadcrumb__list { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin: 0; padding: 0; list-style: none; }
8775
+ .inkra-breadcrumb {
8776
+ --inkra-breadcrumb-item-height: var(--inkra-control-md);
8777
+ --inkra-breadcrumb-item-padding: var(--inkra-space-3);
8778
+ --inkra-breadcrumb-item-font-size: var(--inkra-text-md);
8779
+ --inkra-breadcrumb-item-icon-size: var(--inkra-icon-md);
8780
+ --inkra-breadcrumb-item-gap: var(--inkra-space-2);
8781
+ color: var(--inkra-ink);
8782
+ max-width: 100%;
8783
+ min-width: 0;
8784
+ }
8785
+ .inkra-breadcrumb__list { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; max-width: 100%; margin: 0; padding: 0; list-style: none; }
8722
8786
  .inkra-breadcrumb__item { display: inline-flex; align-items: center; min-width: 0; max-width: 100%; }
8723
- .inkra-breadcrumb__link { max-width: 100%; color: var(--inkra-ink-muted); }
8724
- .inkra-breadcrumb__link .inkra-button__label { white-space: normal; overflow-wrap: anywhere; }
8725
- .inkra-breadcrumb__page { min-height: 44px; display: inline-flex; align-items: center; padding-inline: 12px; overflow-wrap: anywhere; }
8787
+ .inkra-breadcrumb__link,
8788
+ .inkra-breadcrumb__trigger {
8789
+ --inkra-button-visual-height: var(--inkra-breadcrumb-item-height);
8790
+ --inkra-button-visual-padding: var(--inkra-breadcrumb-item-padding);
8791
+ --inkra-button-font-size: var(--inkra-breadcrumb-item-font-size);
8792
+ --inkra-button-icon-size: var(--inkra-breadcrumb-item-icon-size);
8793
+ --inkra-button-content-gap: var(--inkra-breadcrumb-item-gap);
8794
+ color: var(--inkra-accent-strong);
8795
+ max-width: 100%;
8796
+ }
8797
+ .inkra-breadcrumb__link .inkra-button__label,
8798
+ .inkra-breadcrumb__link .inkra-button__label > .inkra-pencil-text,
8799
+ .inkra-breadcrumb__link .inkra-button__label > .inkra-pencil-text > .inkra-pencil-text__source,
8800
+ .inkra-breadcrumb__trigger .inkra-button__label,
8801
+ .inkra-breadcrumb__trigger .inkra-button__label > .inkra-pencil-text,
8802
+ .inkra-breadcrumb__trigger .inkra-button__label > .inkra-pencil-text > .inkra-pencil-text__source {
8803
+ max-width: 100%;
8804
+ min-width: 0;
8805
+ overflow-wrap: anywhere;
8806
+ white-space: normal;
8807
+ }
8808
+ .inkra-breadcrumb :is(.inkra-breadcrumb__link, .inkra-breadcrumb__trigger) .inkra-button__surface {
8809
+ height: auto;
8810
+ max-width: 100%;
8811
+ min-height: var(--inkra-breadcrumb-item-height);
8812
+ min-width: var(--inkra-breadcrumb-item-height);
8813
+ }
8814
+ .inkra-breadcrumb :is(.inkra-breadcrumb__link, .inkra-breadcrumb__trigger) .inkra-button__content {
8815
+ max-width: 100%;
8816
+ min-width: 0;
8817
+ }
8818
+ .inkra-breadcrumb :is(.inkra-breadcrumb__link, .inkra-breadcrumb__trigger) .inkra-button__focus-ring {
8819
+ height: 100%;
8820
+ inset-inline: 0;
8821
+ top: 0;
8822
+ transform: none;
8823
+ }
8824
+ .inkra-breadcrumb :is(.inkra-breadcrumb__link, .inkra-breadcrumb__trigger):hover:not(:disabled):not([aria-disabled="true"]) .inkra-button__surface,
8825
+ .inkra-breadcrumb :is(.inkra-breadcrumb__link, .inkra-breadcrumb__trigger):active:not(:disabled):not([aria-disabled="true"]) .inkra-button__surface {
8826
+ transform: none;
8827
+ }
8828
+ .inkra-breadcrumb__page {
8829
+ align-items: center;
8830
+ box-sizing: border-box;
8831
+ display: inline-flex;
8832
+ font-family: "Trip Map Hand", "HanziPen SC", "Hannotate SC", "Kaiti SC", "STKaiti", cursive;
8833
+ font-size: var(--inkra-breadcrumb-item-font-size);
8834
+ gap: var(--inkra-breadcrumb-item-gap);
8835
+ justify-content: center;
8836
+ letter-spacing: var(--inkra-letter-spacing);
8837
+ line-height: var(--inkra-line-ui);
8838
+ max-width: 100%;
8839
+ min-height: var(--inkra-breadcrumb-item-height);
8840
+ min-width: var(--inkra-breadcrumb-item-height);
8841
+ overflow-wrap: anywhere;
8842
+ padding-inline: var(--inkra-breadcrumb-item-padding);
8843
+ }
8844
+ .inkra-breadcrumb__label,
8845
+ .inkra-breadcrumb__label > .inkra-pencil-text {
8846
+ align-items: center;
8847
+ display: inline-flex;
8848
+ min-width: 0;
8849
+ overflow: visible;
8850
+ overflow-wrap: anywhere;
8851
+ white-space: normal;
8852
+ }
8853
+ .inkra-breadcrumb__label > .inkra-pencil-text > .inkra-pencil-text__source {
8854
+ display: block;
8855
+ min-width: 0;
8856
+ white-space: inherit;
8857
+ }
8858
+ .inkra-breadcrumb__icon {
8859
+ align-items: center;
8860
+ display: inline-flex;
8861
+ flex: 0 0 var(--inkra-breadcrumb-item-icon-size);
8862
+ height: var(--inkra-breadcrumb-item-icon-size);
8863
+ justify-content: center;
8864
+ width: var(--inkra-breadcrumb-item-icon-size);
8865
+ }
8866
+ .inkra-breadcrumb__icon > :is(svg, canvas) {
8867
+ height: 100% !important;
8868
+ max-height: 100%;
8869
+ max-width: 100%;
8870
+ width: 100% !important;
8871
+ }
8726
8872
  .inkra-breadcrumb__separator { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; min-width: 16px; color: var(--inkra-ink-subtle); pointer-events: none; }
8727
8873
 
8728
8874
  .inkra-calendar-scroll { max-width: 100%; min-width: 0; overflow-x: auto; }
@@ -9667,6 +9813,16 @@ svg.leaflet-image-layer.leaflet-interactive path {
9667
9813
  .inkra-time-picker__error { margin: 0; color: var(--inkra-danger); font-size: var(--inkra-text-sm); }
9668
9814
 
9669
9815
  .inkra-pagination { min-inline-size: 0; max-inline-size: 100%; color: var(--inkra-ink); }
9816
+ .inkra-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: var(--inkra-space-2); }
9817
+ .inkra-pagination[data-align="start"] { justify-content: flex-start; }
9818
+ .inkra-pagination[data-align="center"] { justify-content: center; }
9819
+ .inkra-pagination[data-align="end"] { justify-content: flex-end; }
9820
+ .inkra-pagination__size { flex: 0 1 auto; min-inline-size: 0; max-inline-size: 100%; }
9821
+ .inkra-pagination__size .inkra-select__trigger { max-inline-size: 100%; }
9822
+ .inkra-pagination__list { min-inline-size: 0; }
9823
+ .inkra-pagination[data-wrap="true"] .inkra-pagination__list { flex-wrap: wrap; }
9824
+ .inkra-pagination[data-wrap="true"][data-align="center"] .inkra-pagination__list { justify-content: center; }
9825
+ .inkra-pagination[data-wrap="true"][data-align="end"] .inkra-pagination__list { justify-content: flex-end; }
9670
9826
  .inkra-pagination__list { box-sizing: border-box; display: flex; flex-wrap: nowrap; align-items: center; gap: var(--inkra-space-1); max-inline-size: 100%; overflow-x: auto; overscroll-behavior-inline: contain; scroll-padding-inline: 8px; list-style: none; padding: 8px; margin: 0; }
9671
9827
  .inkra-pagination__list > li { display: flex; flex: 0 0 auto; }
9672
9828
  .inkra-pagination__summary { align-items: center; box-sizing: border-box; font-variant-numeric: tabular-nums; justify-content: center; max-inline-size: 100%; min-block-size: var(--inkra-touch-target); min-inline-size: 0; overflow-wrap: anywhere; padding-inline: var(--inkra-space-2); text-align: center; white-space: normal; }
@@ -9953,6 +10109,8 @@ button.inkra-steps__control { cursor: pointer; }
9953
10109
  .inkra-layout,
9954
10110
  .inkra-layout__body,
9955
10111
  .inkra-layout__header,
10112
+ .inkra-layout__header-sidebar,
10113
+ .inkra-layout__header-content,
9956
10114
  .inkra-layout__sidebar,
9957
10115
  .inkra-layout__content,
9958
10116
  .inkra-layout__footer {
@@ -9986,6 +10144,33 @@ button.inkra-steps__control { cursor: pointer; }
9986
10144
  .inkra-layout__body { display: flex; flex: 1; align-items: stretch; }
9987
10145
  .inkra-layout__header,
9988
10146
  .inkra-layout__footer { position: relative; flex: none; }
10147
+ .inkra-layout__header[data-shared-sidebar] { display: flex; align-items: stretch; }
10148
+ .inkra-layout__header-sidebar,
10149
+ .inkra-layout__header-content {
10150
+ display: flex;
10151
+ align-items: center;
10152
+ padding: var(--inkra-layout-header-padding, 20px);
10153
+ overflow-wrap: anywhere;
10154
+ }
10155
+ .inkra-layout__header-sidebar {
10156
+ position: relative;
10157
+ flex: 0 0 min(var(--inkra-layout-shared-sidebar-width, 240px), 100%);
10158
+ max-width: 100%;
10159
+ }
10160
+ .inkra-layout__header-content { flex: 1; }
10161
+ .inkra-layout__header-content > * { min-width: 0; }
10162
+ .inkra-layout__header-sidebar-divider[data-orientation="vertical"] {
10163
+ position: absolute;
10164
+ inset-block-start: 50%;
10165
+ inset-inline-end: 0;
10166
+ height: min(32px, max(0px, calc(100% - 2 * var(--inkra-layout-header-padding, 20px))));
10167
+ color: var(--inkra-ink-muted);
10168
+ opacity: 0.56;
10169
+ transform: translate(50%, -50%);
10170
+ }
10171
+ .inkra-layout__header-sidebar-divider[data-orientation="vertical"]:dir(rtl) { transform: translate(-50%, -50%); }
10172
+ .inkra-layout__header-sidebar[hidden],
10173
+ .inkra-layout__sidebar[hidden] { display: none; }
9989
10174
  .inkra-layout__sidebar {
9990
10175
  position: relative;
9991
10176
  flex: 0 0 min(var(--inkra-layout-sidebar-width, 240px), 100%);
@@ -10004,6 +10189,9 @@ button.inkra-steps__control { cursor: pointer; }
10004
10189
  }
10005
10190
  .inkra-layout__sidebar-divider-mobile { display: none; }
10006
10191
  @container inkra-layout (max-width: 639px) {
10192
+ .inkra-layout[data-collapse-at="sm"] > .inkra-layout__header[data-shared-sidebar] { flex-direction: column; }
10193
+ .inkra-layout[data-collapse-at="sm"] > .inkra-layout__header > .inkra-layout__header-sidebar { flex-basis: auto; width: 100%; }
10194
+ .inkra-layout[data-collapse-at="sm"] > .inkra-layout__header > .inkra-layout__header-sidebar > .inkra-layout__header-sidebar-divider { display: none !important; }
10007
10195
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body { flex-direction: column; }
10008
10196
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body > .inkra-layout__sidebar { flex-basis: auto; width: 100%; }
10009
10197
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body > .inkra-layout__sidebar > .inkra-layout__sidebar-divider { display: none; }
@@ -10012,6 +10200,9 @@ button.inkra-steps__control { cursor: pointer; }
10012
10200
  }
10013
10201
  }
10014
10202
  @container inkra-layout (max-width: 767px) {
10203
+ .inkra-layout[data-collapse-at="md"] > .inkra-layout__header[data-shared-sidebar] { flex-direction: column; }
10204
+ .inkra-layout[data-collapse-at="md"] > .inkra-layout__header > .inkra-layout__header-sidebar { flex-basis: auto; width: 100%; }
10205
+ .inkra-layout[data-collapse-at="md"] > .inkra-layout__header > .inkra-layout__header-sidebar > .inkra-layout__header-sidebar-divider { display: none !important; }
10015
10206
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body { flex-direction: column; }
10016
10207
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body > .inkra-layout__sidebar { flex-basis: auto; width: 100%; }
10017
10208
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body > .inkra-layout__sidebar > .inkra-layout__sidebar-divider { display: none; }
@@ -10019,3 +10210,53 @@ button.inkra-steps__control { cursor: pointer; }
10019
10210
  display: block; position: absolute; bottom: -4px; inset-inline: 0; width: 100%;
10020
10211
  }
10021
10212
  }
10213
+ @media (forced-colors: active), print {
10214
+ .inkra-layout__header-sidebar-divider[data-orientation="vertical"] { opacity: 1; }
10215
+ }
10216
+ .inkra-grid-resizable,
10217
+ .inkra-grid-resizable > .inkra-resizable,
10218
+ .inkra-grid-resizable .inkra-resizable__panel > .inkra-resizable {
10219
+ block-size: 100%;
10220
+ min-inline-size: 0;
10221
+ min-block-size: 0;
10222
+ }
10223
+ .inkra-grid-resizable__cell {
10224
+ box-sizing: border-box;
10225
+ block-size: 100%;
10226
+ min-inline-size: 0;
10227
+ overflow: auto;
10228
+ }
10229
+ .inkra-grid-board { min-inline-size: 0; inline-size: 100%; }
10230
+ .inkra-grid-board__canvas { position: relative; min-inline-size: 0; }
10231
+ .inkra-grid-board__item { position: absolute; transition: transform var(--inkra-motion-fast) var(--inkra-ease); }
10232
+ .inkra-grid-board__item.resizing,
10233
+ .inkra-grid-board__item.react-draggable-dragging { transition: none; z-index: 2; }
10234
+ .inkra-grid-board__surface { box-sizing: border-box; display: flex; flex-direction: column; block-size: 100%; min-inline-size: 0; }
10235
+ .inkra-grid-board__surface > .inkra-pencil-surface__content { display: flex; flex-direction: column; block-size: 100%; min-block-size: 0; }
10236
+ .inkra-grid-board__header { display: flex; flex-shrink: 0; align-items: center; gap: 8px; min-block-size: 44px; padding-inline: 12px 4px; }
10237
+ .inkra-grid-board__title { flex: 1; min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
10238
+ .inkra-grid-board__content { padding: 4px 12px 24px; min-block-size: 0; overflow: auto; flex: 1; }
10239
+ .inkra-grid-board__move,
10240
+ .inkra-grid-board__resize {
10241
+ appearance: none; border: 0; background: transparent; color: var(--inkra-ink-muted);
10242
+ display: inline-flex; align-items: center; justify-content: center;
10243
+ inline-size: 44px; block-size: 44px; padding: 0; flex: 0 0 44px;
10244
+ }
10245
+ .inkra-grid-board__move { cursor: grab; touch-action: none; position: relative; }
10246
+ .inkra-grid-board__resize { position: absolute; right: 0; bottom: 0; cursor: se-resize; touch-action: none; z-index: 1; }
10247
+ .inkra-grid-board__move:hover,
10248
+ .inkra-grid-board__resize:hover { color: var(--inkra-accent-strong); }
10249
+ .inkra-grid-board__move:focus-visible,
10250
+ .inkra-grid-board__resize:focus-visible { outline: none; }
10251
+ .inkra-grid-board__focus { position: absolute; inset: 4px; opacity: 0; pointer-events: none; }
10252
+ .inkra-grid-board__move:focus-visible .inkra-grid-board__focus,
10253
+ .inkra-grid-board__resize:focus-visible .inkra-grid-board__focus { opacity: 1; }
10254
+ .inkra-grid-board__item.react-resizable-hide > .inkra-grid-board__resize { display: none; }
10255
+ .inkra-grid-board[data-stacked] .inkra-grid-board__canvas { display: grid; gap: var(--inkra-grid-board-gap); }
10256
+ .inkra-grid-board[data-stacked] .inkra-grid-board__item { position: relative !important; transform: none !important; top: auto !important; left: auto !important; width: 100% !important; height: auto !important; min-block-size: 160px; }
10257
+ .inkra-grid-board[data-stacked] .inkra-grid-board__resize { display: none; }
10258
+ @media (prefers-reduced-motion: reduce) { .inkra-grid-board__item { transition: none; } }
10259
+ @media (forced-colors: active) {
10260
+ .inkra-grid-board__focus { display: none; }
10261
+ .inkra-grid-board__move:focus-visible, .inkra-grid-board__resize:focus-visible { outline: 2px solid Highlight; outline-offset: -4px; }
10262
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkra/react",
3
- "version": "0.5.0",
3
+ "version": "0.8.0",
4
4
  "description": "Hand-drawn React controls with native semantics and deterministic decoration.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -199,6 +199,11 @@
199
199
  "import": "./dist/input-number/index.js",
200
200
  "default": "./dist/input-number/index.js"
201
201
  },
202
+ "./inventory-grid": {
203
+ "types": "./dist/inventory-grid/index.d.ts",
204
+ "import": "./dist/inventory-grid/index.js",
205
+ "default": "./dist/inventory-grid/index.js"
206
+ },
202
207
  "./journey-map": {
203
208
  "types": "./dist/journey-map/index.d.ts",
204
209
  "import": "./dist/journey-map/index.js",
@@ -424,6 +429,7 @@
424
429
  "./styles/image-cropper.css": "./dist/styles/image-cropper.css",
425
430
  "./styles/image-viewer.css": "./dist/styles/image-viewer.css",
426
431
  "./styles/input-number.css": "./dist/styles/input-number.css",
432
+ "./styles/inventory-grid.css": "./dist/styles/inventory-grid.css",
427
433
  "./styles/journey-map.css": "./dist/styles/journey-map.css",
428
434
  "./styles/keypad.css": "./dist/styles/keypad.css",
429
435
  "./styles/layout.css": "./dist/styles/layout.css",
@@ -534,6 +540,7 @@
534
540
  "react-aria-components": "^1.22.1",
535
541
  "react-day-picker": "^9.14.0",
536
542
  "react-easy-crop": "^6.2.4",
543
+ "react-grid-layout": "^2.3.0",
537
544
  "react-markdown": "^10.1.0",
538
545
  "react-resizable-panels": "^4.14.8",
539
546
  "react-zoom-pan-pinch": "^4.2.0",