@inkra/react 0.6.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.
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;
@@ -6984,6 +7002,38 @@ div.inkra-choice-grid > .inkra-radio-group {
6984
7002
  .inkra-sortable__handle { display: none; }
6985
7003
  }
6986
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
+
6987
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); }
6988
7038
  .inkra-sparkline__svg { display: block; inline-size: min(100%, 100%); block-size: auto; overflow: visible; outline: none; position: relative; z-index: 1; }
6989
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; }
@@ -9763,6 +9813,16 @@ svg.leaflet-image-layer.leaflet-interactive path {
9763
9813
  .inkra-time-picker__error { margin: 0; color: var(--inkra-danger); font-size: var(--inkra-text-sm); }
9764
9814
 
9765
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; }
9766
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; }
9767
9827
  .inkra-pagination__list > li { display: flex; flex: 0 0 auto; }
9768
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; }
@@ -10049,6 +10109,8 @@ button.inkra-steps__control { cursor: pointer; }
10049
10109
  .inkra-layout,
10050
10110
  .inkra-layout__body,
10051
10111
  .inkra-layout__header,
10112
+ .inkra-layout__header-sidebar,
10113
+ .inkra-layout__header-content,
10052
10114
  .inkra-layout__sidebar,
10053
10115
  .inkra-layout__content,
10054
10116
  .inkra-layout__footer {
@@ -10082,6 +10144,33 @@ button.inkra-steps__control { cursor: pointer; }
10082
10144
  .inkra-layout__body { display: flex; flex: 1; align-items: stretch; }
10083
10145
  .inkra-layout__header,
10084
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; }
10085
10174
  .inkra-layout__sidebar {
10086
10175
  position: relative;
10087
10176
  flex: 0 0 min(var(--inkra-layout-sidebar-width, 240px), 100%);
@@ -10100,6 +10189,9 @@ button.inkra-steps__control { cursor: pointer; }
10100
10189
  }
10101
10190
  .inkra-layout__sidebar-divider-mobile { display: none; }
10102
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; }
10103
10195
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body { flex-direction: column; }
10104
10196
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body > .inkra-layout__sidebar { flex-basis: auto; width: 100%; }
10105
10197
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body > .inkra-layout__sidebar > .inkra-layout__sidebar-divider { display: none; }
@@ -10108,6 +10200,9 @@ button.inkra-steps__control { cursor: pointer; }
10108
10200
  }
10109
10201
  }
10110
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; }
10111
10206
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body { flex-direction: column; }
10112
10207
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body > .inkra-layout__sidebar { flex-basis: auto; width: 100%; }
10113
10208
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body > .inkra-layout__sidebar > .inkra-layout__sidebar-divider { display: none; }
@@ -10115,3 +10210,53 @@ button.inkra-steps__control { cursor: pointer; }
10115
10210
  display: block; position: absolute; bottom: -4px; inset-inline: 0; width: 100%;
10116
10211
  }
10117
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.6.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",