@inkra/react 0.8.0 → 0.10.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 (76) hide show
  1. package/README.md +137 -2
  2. package/THIRD_PARTY_NOTICES.md +9 -0
  3. package/Xiaolai-OFL.txt +94 -0
  4. package/dist/PencilIcon.d.ts +14 -1
  5. package/dist/PencilIcon.js +88 -52
  6. package/dist/PencilText.js +4 -1
  7. package/dist/assets/ui-hand-xiaolai-extended.woff2 +0 -0
  8. package/dist/assets/ui-hand-xiaolai.woff2 +0 -0
  9. package/dist/assets/xiaolai.css +17 -0
  10. package/dist/form/EditablePencilText.js +4 -2
  11. package/dist/guide/index.d.ts +77 -0
  12. package/dist/guide/index.js +379 -0
  13. package/dist/i18n/catalog.d.ts +1 -1
  14. package/dist/i18n/catalog.js +8 -0
  15. package/dist/image-viewer/index.d.ts +2 -0
  16. package/dist/image-viewer/index.js +28 -28
  17. package/dist/index.d.ts +4 -0
  18. package/dist/index.js +4 -0
  19. package/dist/infinite-scroll/gesture.d.ts +19 -0
  20. package/dist/infinite-scroll/gesture.js +218 -0
  21. package/dist/infinite-scroll/index.d.ts +55 -0
  22. package/dist/infinite-scroll/index.js +543 -0
  23. package/dist/infinite-scroll/model.d.ts +33 -0
  24. package/dist/infinite-scroll/model.js +168 -0
  25. package/dist/internal/iconFill.d.ts +16 -0
  26. package/dist/internal/iconFill.js +275 -0
  27. package/dist/internal/surfaceRenderer.d.ts +4 -4
  28. package/dist/internal/surfaceRenderer.js +2 -2
  29. package/dist/internal/textRenderer.d.ts +1 -1
  30. package/dist/internal/textRenderer.js +23 -11
  31. package/dist/inventory-grid/index.js +13 -3
  32. package/dist/inventory-grid/outline.d.ts +9 -0
  33. package/dist/inventory-grid/outline.js +54 -0
  34. package/dist/loading/index.d.ts +58 -0
  35. package/dist/loading/index.js +188 -0
  36. package/dist/loading/locales.d.ts +15 -0
  37. package/dist/loading/locales.js +34 -0
  38. package/dist/loading/model.d.ts +6 -0
  39. package/dist/loading/model.js +29 -0
  40. package/dist/masonry/index.d.ts +25 -0
  41. package/dist/masonry/index.js +227 -0
  42. package/dist/masonry/layout.d.ts +35 -0
  43. package/dist/masonry/layout.js +67 -0
  44. package/dist/number-ticker/RollingValue.d.ts +6 -0
  45. package/dist/number-ticker/RollingValue.js +10 -0
  46. package/dist/number-ticker/index.d.ts +4 -0
  47. package/dist/number-ticker/index.js +55 -7
  48. package/dist/number-ticker/rolling.d.ts +35 -0
  49. package/dist/number-ticker/rolling.js +87 -0
  50. package/dist/selection/CircularSwitchVisual.d.ts +8 -0
  51. package/dist/selection/CircularSwitchVisual.js +82 -0
  52. package/dist/selection/Switch.d.ts +7 -0
  53. package/dist/selection/Switch.js +15 -3
  54. package/dist/slider/circular.d.ts +35 -0
  55. package/dist/slider/circular.js +196 -0
  56. package/dist/slider/circularMath.d.ts +10 -0
  57. package/dist/slider/circularMath.js +34 -0
  58. package/dist/slider/index.d.ts +5 -0
  59. package/dist/slider/index.js +5 -3
  60. package/dist/styles/base.css +4 -2
  61. package/dist/styles/breadcrumb.css +1 -1
  62. package/dist/styles/guide.css +202 -0
  63. package/dist/styles/image-viewer.css +20 -0
  64. package/dist/styles/infinite-scroll.css +171 -0
  65. package/dist/styles/inventory-grid.css +20 -8
  66. package/dist/styles/loading.css +348 -0
  67. package/dist/styles/markdown.css +1 -1
  68. package/dist/styles/masonry.css +68 -0
  69. package/dist/styles/number-ticker.css +47 -1
  70. package/dist/styles/selection.css +50 -0
  71. package/dist/styles/slider.css +65 -0
  72. package/dist/styles/slot.css +1 -1
  73. package/dist/styles.css +1180 -192
  74. package/dist/toast/manager.d.ts +4 -4
  75. package/dist/tokens.css +13 -10
  76. package/package.json +28 -2
@@ -0,0 +1,171 @@
1
+ .inkra-infinite-scroll {
2
+ --inkra-infinite-scroll-pull-distance: 0px;
3
+ --inkra-infinite-scroll-indicator-inline-offset: 0px;
4
+ --inkra-infinite-scroll-indicator-block-offset: 0px;
5
+ --inkra-infinite-scroll-indicator-viewport-inline-size: 100%;
6
+ --inkra-infinite-scroll-indicator-viewport-block-size: 100%;
7
+ position: relative;
8
+ display: grid;
9
+ grid-template-rows: auto minmax(min-content, 1fr) auto;
10
+ max-inline-size: 100%;
11
+ min-block-size: 0;
12
+ min-inline-size: 0;
13
+ overflow: auto;
14
+ overscroll-behavior: contain;
15
+ color: var(--inkra-ink);
16
+ }
17
+
18
+ .inkra-infinite-scroll__body {
19
+ display: grid;
20
+ grid-template-columns: auto minmax(min-content, 1fr) auto;
21
+ grid-row: 2;
22
+ min-block-size: 0;
23
+ min-inline-size: 0;
24
+ transform: translate3d(0, 0, 0);
25
+ transition: transform var(--inkra-motion-slow) cubic-bezier(0.22, 1.45, 0.36, 1);
26
+ }
27
+
28
+ .inkra-infinite-scroll[data-pull-direction] > .inkra-infinite-scroll__body {
29
+ transition: none;
30
+ }
31
+
32
+ .inkra-infinite-scroll__content {
33
+ grid-column: 2;
34
+ grid-row: 1;
35
+ min-block-size: 100%;
36
+ min-inline-size: 100%;
37
+ }
38
+
39
+ .inkra-infinite-scroll[data-pull-direction="top"] > .inkra-infinite-scroll__body {
40
+ transform: translate3d(0, var(--inkra-infinite-scroll-pull-distance), 0);
41
+ }
42
+ .inkra-infinite-scroll[data-pull-direction="bottom"] > .inkra-infinite-scroll__body {
43
+ transform: translate3d(0, calc(-1 * var(--inkra-infinite-scroll-pull-distance)), 0);
44
+ }
45
+ .inkra-infinite-scroll[data-pull-direction="left"] > .inkra-infinite-scroll__body {
46
+ transform: translate3d(var(--inkra-infinite-scroll-pull-distance), 0, 0);
47
+ }
48
+ .inkra-infinite-scroll[data-pull-direction="right"] > .inkra-infinite-scroll__body {
49
+ transform: translate3d(calc(-1 * var(--inkra-infinite-scroll-pull-distance)), 0, 0);
50
+ }
51
+
52
+ .inkra-infinite-scroll__indicator {
53
+ position: relative;
54
+ display: none;
55
+ min-block-size: 0;
56
+ min-inline-size: 0;
57
+ z-index: 1;
58
+ }
59
+ .inkra-infinite-scroll__indicator[data-active] { display: flex; }
60
+ .inkra-infinite-scroll__indicator[data-direction="top"],
61
+ .inkra-infinite-scroll__indicator[data-direction="bottom"] {
62
+ inline-size: 100%;
63
+ }
64
+ .inkra-infinite-scroll__indicator[data-visible][data-direction="top"],
65
+ .inkra-infinite-scroll__indicator[data-visible][data-direction="bottom"] {
66
+ min-block-size: 52px;
67
+ }
68
+ .inkra-infinite-scroll__indicator[data-direction="left"],
69
+ .inkra-infinite-scroll__indicator[data-direction="right"] {
70
+ align-self: stretch;
71
+ grid-row: 1;
72
+ }
73
+ .inkra-infinite-scroll__indicator[data-visible][data-direction="left"],
74
+ .inkra-infinite-scroll__indicator[data-visible][data-direction="right"] {
75
+ min-inline-size: 112px;
76
+ }
77
+ .inkra-infinite-scroll__indicator[data-direction="top"] { grid-row: 1; }
78
+ .inkra-infinite-scroll__indicator[data-direction="bottom"] { grid-row: 3; }
79
+ .inkra-infinite-scroll__indicator[data-direction="left"] { grid-column: 1; }
80
+ .inkra-infinite-scroll__indicator[data-direction="right"] { grid-column: 3; }
81
+
82
+ /* Pull feedback reveals inside the elastic gap, without changing scroll layout. */
83
+ .inkra-infinite-scroll__indicator[data-pulling] {
84
+ position: absolute;
85
+ grid-area: auto;
86
+ left: var(--inkra-pull-left, 0px);
87
+ top: var(--inkra-pull-top, 0px);
88
+ inline-size: var(--inkra-pull-width, 0px);
89
+ block-size: var(--inkra-pull-height, 0px);
90
+ min-inline-size: 0 !important;
91
+ min-block-size: 0 !important;
92
+ overflow: clip;
93
+ pointer-events: none;
94
+ }
95
+ .inkra-infinite-scroll__indicator[data-pulling] .inkra-infinite-scroll__indicator-surface {
96
+ padding: 0;
97
+ max-inline-size: none;
98
+ min-block-size: 0;
99
+ }
100
+ .inkra-infinite-scroll__indicator[data-pulling][data-direction="left"] .inkra-infinite-scroll__loading-label,
101
+ .inkra-infinite-scroll__indicator[data-pulling][data-direction="right"] .inkra-infinite-scroll__loading-label {
102
+ display: none;
103
+ }
104
+
105
+ .inkra-infinite-scroll__indicator-surface {
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ inline-size: 100%;
110
+ min-inline-size: 0;
111
+ padding: var(--inkra-space-1) var(--inkra-space-2);
112
+ }
113
+ .inkra-infinite-scroll__indicator[data-direction="left"] .inkra-infinite-scroll__indicator-surface,
114
+ .inkra-infinite-scroll__indicator[data-direction="right"] .inkra-infinite-scroll__indicator-surface {
115
+ min-block-size: 100%;
116
+ max-inline-size: 144px;
117
+ }
118
+ .inkra-infinite-scroll__indicator[data-status="loading"][data-direction="top"] .inkra-infinite-scroll__indicator-surface {
119
+ inline-size: var(--inkra-infinite-scroll-indicator-viewport-inline-size);
120
+ transform: translate3d(var(--inkra-infinite-scroll-indicator-inline-offset), 0, 0);
121
+ }
122
+ .inkra-infinite-scroll__indicator[data-status="loading"][data-direction="bottom"] .inkra-infinite-scroll__indicator-surface {
123
+ inline-size: var(--inkra-infinite-scroll-indicator-viewport-inline-size);
124
+ transform: translate3d(var(--inkra-infinite-scroll-indicator-inline-offset), 0, 0);
125
+ }
126
+ .inkra-infinite-scroll__indicator[data-status="loading"][data-direction="left"] .inkra-infinite-scroll__indicator-surface {
127
+ block-size: var(--inkra-infinite-scroll-indicator-viewport-block-size);
128
+ min-block-size: 0;
129
+ transform: translate3d(0, var(--inkra-infinite-scroll-indicator-block-offset), 0);
130
+ }
131
+ .inkra-infinite-scroll__indicator[data-status="loading"][data-direction="right"] .inkra-infinite-scroll__indicator-surface {
132
+ block-size: var(--inkra-infinite-scroll-indicator-viewport-block-size);
133
+ min-block-size: 0;
134
+ transform: translate3d(0, var(--inkra-infinite-scroll-indicator-block-offset), 0);
135
+ }
136
+ .inkra-infinite-scroll__indicator-content {
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: center;
140
+ flex-wrap: wrap;
141
+ gap: var(--inkra-space-2);
142
+ inline-size: 100%;
143
+ min-inline-size: 0;
144
+ overflow-wrap: anywhere;
145
+ text-align: center;
146
+ }
147
+ .inkra-infinite-scroll__indicator-content > .inkra-progress { max-inline-size: 240px; }
148
+ .inkra-infinite-scroll__indicator[data-direction="left"] .inkra-infinite-scroll__indicator-content > .inkra-progress,
149
+ .inkra-infinite-scroll__indicator[data-direction="right"] .inkra-infinite-scroll__indicator-content > .inkra-progress { min-inline-size: 96px; }
150
+ .inkra-infinite-scroll__loading {
151
+ display: flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ gap: var(--inkra-space-2);
155
+ min-inline-size: 0;
156
+ }
157
+ .inkra-infinite-scroll__loading > .inkra-progress { flex: 0 0 auto; }
158
+ .inkra-infinite-scroll__loading-label { min-inline-size: 0; white-space: nowrap; }
159
+ .inkra-infinite-scroll__indicator[data-direction="left"] .inkra-infinite-scroll__loading,
160
+ .inkra-infinite-scroll__indicator[data-direction="right"] .inkra-infinite-scroll__loading { flex-wrap: wrap; }
161
+ .inkra-infinite-scroll__indicator[data-direction="left"] .inkra-infinite-scroll__loading-label,
162
+ .inkra-infinite-scroll__indicator[data-direction="right"] .inkra-infinite-scroll__loading-label { white-space: normal; }
163
+
164
+ @media (prefers-reduced-motion: reduce) {
165
+ .inkra-infinite-scroll__body { transition-duration: 0ms; }
166
+ }
167
+
168
+ @media print {
169
+ .inkra-infinite-scroll { overflow: visible; }
170
+ .inkra-infinite-scroll__body { transform: none !important; }
171
+ }
@@ -8,24 +8,36 @@
8
8
  .inkra-inventory-grid__item, .inkra-inventory-grid__preview, .inkra-inventory-grid__cell, .inkra-inventory-grid__blocked { position: absolute; }
9
9
  .inkra-inventory-grid__item { outline: none; pointer-events: none; }
10
10
  .inkra-inventory-grid__cell { box-sizing: border-box; display: grid; place-items: center; pointer-events: auto; touch-action: none; cursor: grab; }
11
- .inkra-inventory-grid__cell-surface { position: absolute; inset: 2px; pointer-events: none; }
11
+ .inkra-inventory-grid__shape { position: absolute; inset: 0 auto auto 0; pointer-events: none; color: var(--inkra-border-strong); }
12
+ .inkra-inventory-grid__shape-fill, .inkra-inventory-grid__shape-wash { position: absolute; inset: 0; pointer-events: none; }
13
+ .inkra-inventory-grid__shape-wash { opacity: .65; --inkra-selection-pigment: var(--inkra-accent-soft); }
14
+ .inkra-inventory-grid__shape-fill[data-pencil-fallback] { background: var(--inkra-paper); border: 0; }
15
+ .inkra-inventory-grid__shape-fill[data-pencil-fallback] + .inkra-inventory-grid__shape-fallback { display: block; }
16
+ .inkra-inventory-grid__shape-edge { position: absolute; }
17
+ .inkra-inventory-grid__shape-fallback { position: absolute; inset: 0; display: none; }
12
18
  .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; }
13
- .inkra-inventory-grid__item[data-selected] .inkra-inventory-grid__cell-surface { color: var(--inkra-accent-strong); }
14
- .inkra-inventory-grid__cell-focus { position: absolute; inset: 3px; pointer-events: none; opacity: 0; color: var(--inkra-focus); }
15
- .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__cell-focus { opacity: 1; }
19
+ .inkra-inventory-grid__item[data-selected] .inkra-inventory-grid__shape { color: var(--inkra-accent-strong); }
20
+ .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__shape { color: var(--inkra-focus); --inkra-stroke-width: 2; }
21
+ .inkra-inventory-grid__item[data-selected] .inkra-inventory-grid__shape-wash { opacity: 1; }
16
22
  .inkra-inventory-grid__item[data-dragging] { opacity: .28; }
17
23
  .inkra-inventory-grid__item[data-disabled] .inkra-inventory-grid__cell { cursor: default; touch-action: auto; }
18
24
  .inkra-inventory-grid__container[data-disabled], .inkra-inventory-grid[data-disabled] { opacity: .55; }
19
25
  .inkra-inventory-grid__preview { z-index: 2; pointer-events: none; color: var(--inkra-accent-strong); }
20
26
  .inkra-inventory-grid__preview[data-valid="false"] { color: var(--inkra-danger); }
21
- .inkra-inventory-grid__preview[data-valid="false"] .inkra-inventory-grid__cell { outline: 2px solid var(--inkra-danger); outline-offset: -4px; }
27
+ .inkra-inventory-grid__preview .inkra-inventory-grid__shape { color: inherit; --inkra-stroke-width: 2; }
22
28
  .inkra-inventory-grid__preview .inkra-inventory-grid__cell, .inkra-inventory-grid__overlay .inkra-inventory-grid__cell { pointer-events: none; }
23
29
  .inkra-inventory-grid__overlay { position: relative; opacity: .8; pointer-events: none; color: var(--inkra-ink); }
24
30
  .inkra-inventory-grid__blocked { display: grid; place-items: center; color: var(--inkra-ink-muted); pointer-events: none; }
25
31
  .inkra-inventory-grid__announcement { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
26
32
  @media (forced-colors: active) {
27
33
  .inkra-inventory-grid__board { border: 1px solid CanvasText; }
28
- .inkra-inventory-grid__cell { border: 1px solid CanvasText; background: Canvas; }
29
- .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__cell { outline: 2px solid Highlight; outline-offset: -3px; }
30
- .inkra-inventory-grid__preview .inkra-inventory-grid__cell { border: 3px solid Highlight; }
34
+ .inkra-inventory-grid__shape-fill { background: Canvas; }
35
+ .inkra-inventory-grid__shape-fallback { display: block; color: CanvasText; }
36
+ .inkra-inventory-grid__shape-edge { display: none; }
37
+ .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__shape-fallback,
38
+ .inkra-inventory-grid__preview .inkra-inventory-grid__shape-fallback { color: Highlight; stroke-width: 3px; }
39
+ }
40
+ @media print {
41
+ .inkra-inventory-grid__shape-fallback { display: block; }
42
+ .inkra-inventory-grid__shape-edge { display: none; }
31
43
  }
@@ -0,0 +1,348 @@
1
+ .inkra-loading {
2
+ box-sizing: border-box;
3
+ color: var(--inkra-ink);
4
+ font-family: var(--inkra-font-body);
5
+ min-inline-size: 0;
6
+ position: relative;
7
+ }
8
+
9
+ .inkra-loading[data-mode="inline"] {
10
+ align-items: center;
11
+ display: inline-flex;
12
+ inline-size: auto;
13
+ max-inline-size: 100%;
14
+ }
15
+
16
+ .inkra-loading[data-mode="region"] {
17
+ column-gap: var(--inkra-space-2);
18
+ display: grid;
19
+ grid-template-columns: minmax(0, 1fr) minmax(0, 28rem) minmax(0, 1fr);
20
+ grid-template-rows: auto minmax(0, 1fr) auto;
21
+ inline-size: 100%;
22
+ min-block-size: 12rem;
23
+ overflow: hidden;
24
+ }
25
+
26
+ .inkra-loading[data-mode="fullscreen"] {
27
+ column-gap: var(--inkra-space-2);
28
+ display: grid;
29
+ grid-template-columns: minmax(0, 1fr) minmax(0, 28rem) minmax(0, 1fr);
30
+ grid-template-rows: auto minmax(0, 1fr) auto;
31
+ inset: 0;
32
+ min-block-size: 100dvh;
33
+ overflow: auto;
34
+ overscroll-behavior: contain;
35
+ padding: max(var(--inkra-space-4), env(safe-area-inset-top)) max(var(--inkra-space-4), env(safe-area-inset-right)) max(var(--inkra-space-4), env(safe-area-inset-bottom)) max(var(--inkra-space-4), env(safe-area-inset-left));
36
+ position: fixed;
37
+ z-index: var(--inkra-z-modal, 30);
38
+ }
39
+
40
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]):has(.inkra-loading__slot[data-slot="center"]) {
41
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
42
+ }
43
+
44
+ .inkra-loading[data-mode="fullscreen"]:not([data-blocking]) { pointer-events: none; }
45
+ .inkra-loading[data-mode="fullscreen"]:not([data-blocking]) :is(.inkra-loading__actions, .inkra-loading__tip-controls, .inkra-loading__slot, .inkra-loading__content-layer) { pointer-events: auto; }
46
+
47
+ .inkra-loading__theme-anchor {
48
+ block-size: 0;
49
+ inline-size: 0;
50
+ inset: 0 auto auto 0;
51
+ pointer-events: none;
52
+ position: fixed;
53
+ }
54
+
55
+ .inkra-loading__sr-status {
56
+ block-size: 1px;
57
+ clip-path: inset(50%);
58
+ inline-size: 1px;
59
+ overflow: hidden;
60
+ position: absolute;
61
+ white-space: nowrap;
62
+ }
63
+
64
+ .inkra-loading__background,
65
+ .inkra-loading__veil {
66
+ inset: 0;
67
+ pointer-events: none;
68
+ position: absolute;
69
+ }
70
+
71
+ .inkra-loading[data-mode="fullscreen"] > :is(.inkra-loading__background, .inkra-loading__veil) {
72
+ position: fixed;
73
+ }
74
+
75
+ .inkra-loading__background { overflow: hidden; }
76
+ .inkra-loading__background > :is(img, video, canvas, picture),
77
+ .inkra-loading__background > picture > img {
78
+ block-size: 100%;
79
+ inline-size: 100%;
80
+ object-fit: cover;
81
+ }
82
+
83
+ .inkra-loading__veil {
84
+ background: color-mix(in srgb, var(--inkra-paper) 86%, transparent);
85
+ }
86
+
87
+ .inkra-loading[data-mode="inline"] .inkra-loading__background,
88
+ .inkra-loading[data-mode="inline"] .inkra-loading__veil { display: none; }
89
+
90
+ .inkra-loading__layout {
91
+ align-items: center;
92
+ display: grid;
93
+ grid-column: 1 / -1;
94
+ grid-row: 2;
95
+ inline-size: 100%;
96
+ justify-items: center;
97
+ min-block-size: 0;
98
+ min-inline-size: 0;
99
+ position: relative;
100
+ z-index: 1;
101
+ }
102
+
103
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]):has(.inkra-loading__slot[data-slot="center"]) .inkra-loading__layout {
104
+ grid-row: 3;
105
+ }
106
+
107
+ .inkra-loading__main {
108
+ align-items: center;
109
+ display: grid;
110
+ gap: var(--inkra-space-4);
111
+ inline-size: min(100%, 34rem);
112
+ justify-items: center;
113
+ min-inline-size: 0;
114
+ padding: var(--inkra-space-4);
115
+ text-align: center;
116
+ }
117
+
118
+ .inkra-loading[data-mode="inline"] .inkra-loading__main {
119
+ align-items: center;
120
+ display: inline-flex;
121
+ gap: var(--inkra-space-2);
122
+ inline-size: auto;
123
+ justify-items: initial;
124
+ padding: 0;
125
+ text-align: start;
126
+ }
127
+
128
+ .inkra-loading[data-mode="inline"] .inkra-loading__copy { gap: 0; }
129
+ .inkra-loading[data-mode="inline"] .inkra-loading__description,
130
+ .inkra-loading[data-mode="inline"] .inkra-loading__tips,
131
+ .inkra-loading[data-mode="inline"] .inkra-loading__stages { display: none; }
132
+ .inkra-loading[data-mode="inline"] .inkra-loading__progress { inline-size: min(14rem, 45vw); }
133
+ .inkra-loading[data-mode="inline"] .inkra-progress[data-shape="circular"] { inline-size: 32px; }
134
+ .inkra-loading[data-mode="inline"] .inkra-progress__ring { --inkra-progress-diameter: 32px !important; }
135
+
136
+ .inkra-loading__logo {
137
+ align-items: center;
138
+ display: flex;
139
+ justify-content: center;
140
+ max-inline-size: 100%;
141
+ }
142
+
143
+ .inkra-loading__logo > :is(img, svg) { block-size: auto; max-block-size: 7rem; max-inline-size: min(16rem, 100%); }
144
+ .inkra-loading__copy { display: grid; gap: var(--inkra-space-2); max-inline-size: 100%; }
145
+ .inkra-loading__title { font-size: var(--inkra-text-2xl); line-height: var(--inkra-line-tight); overflow-wrap: anywhere; }
146
+ .inkra-loading__description { color: var(--inkra-ink-muted); font-size: var(--inkra-text-md); line-height: var(--inkra-line-body); overflow-wrap: anywhere; }
147
+ .inkra-loading[data-mode="inline"] .inkra-loading__title { font-size: var(--inkra-text-md); line-height: var(--inkra-line-ui); }
148
+
149
+ .inkra-loading__progress { inline-size: min(100%, 28rem); }
150
+ .inkra-loading__animation-progress {
151
+ display: grid;
152
+ gap: var(--inkra-space-2);
153
+ inline-size: min(100%, 28rem);
154
+ justify-items: center;
155
+ }
156
+ .inkra-loading[data-mode="inline"] .inkra-loading__animation-progress {
157
+ align-items: center;
158
+ display: inline-flex;
159
+ inline-size: auto;
160
+ }
161
+ .inkra-loading__animation-label {
162
+ line-height: var(--inkra-line-ui);
163
+ overflow-wrap: anywhere;
164
+ }
165
+ .inkra-loading__animation {
166
+ block-size: 48px;
167
+ color: var(--inkra-accent-strong);
168
+ flex: 0 0 auto;
169
+ inline-size: 48px;
170
+ position: relative;
171
+ }
172
+ .inkra-loading[data-mode="inline"] .inkra-loading__animation {
173
+ block-size: 32px;
174
+ inline-size: 32px;
175
+ }
176
+ .inkra-loading__animation-visual {
177
+ block-size: 100%;
178
+ display: block;
179
+ inline-size: 100%;
180
+ inset: 0;
181
+ position: absolute;
182
+ }
183
+ .inkra-loading__animation-mark { position: absolute; }
184
+
185
+ .inkra-loading[data-animation="orbit"] .inkra-loading__animation {
186
+ animation: inkra-loading-orbit 1100ms linear infinite;
187
+ }
188
+ .inkra-loading[data-animation="orbit"] .inkra-loading__animation-mark {
189
+ block-size: 20.8333%;
190
+ inline-size: 20.8333%;
191
+ inset-block-start: 39.5833%;
192
+ inset-inline-start: 39.5833%;
193
+ transform: rotate(0deg) translateY(-175%);
194
+ }
195
+ .inkra-loading[data-animation="orbit"] .inkra-loading__animation-mark:nth-child(2) {
196
+ opacity: .68;
197
+ transform: rotate(120deg) translateY(-175%);
198
+ }
199
+ .inkra-loading[data-animation="orbit"] .inkra-loading__animation-mark:nth-child(3) {
200
+ opacity: .4;
201
+ transform: rotate(240deg) translateY(-175%);
202
+ }
203
+
204
+ .inkra-loading[data-animation="dots"] .inkra-loading__animation {
205
+ display: block;
206
+ }
207
+ .inkra-loading[data-animation="dots"] .inkra-loading__animation-mark {
208
+ animation: inkra-loading-dot 900ms var(--inkra-ease) infinite;
209
+ block-size: 20.8333%;
210
+ inline-size: 20.8333%;
211
+ inset-block-start: 39.5833%;
212
+ inset-inline-start: 8.3333%;
213
+ }
214
+ .inkra-loading[data-animation="dots"] .inkra-loading__animation-mark:nth-child(2) { animation-delay: 120ms; inset-inline-start: 39.5833%; }
215
+ .inkra-loading[data-animation="dots"] .inkra-loading__animation-mark:nth-child(3) { animation-delay: 240ms; inset-inline-start: 70.8333%; }
216
+
217
+ .inkra-loading[data-animation="pulse"] .inkra-loading__animation-mark {
218
+ animation: inkra-loading-pulse 1500ms var(--inkra-ease) infinite;
219
+ inset: 12.5%;
220
+ }
221
+ .inkra-loading[data-animation="pulse"] .inkra-loading__animation-mark:nth-child(2) { animation-delay: 300ms; }
222
+ .inkra-loading[data-animation="pulse"] .inkra-loading__animation-mark:nth-child(3) { animation-delay: 600ms; }
223
+
224
+ .inkra-loading[data-animation="trail"] .inkra-loading__animation-mark {
225
+ animation: inkra-loading-trail 1050ms var(--inkra-ease) infinite;
226
+ block-size: 12.5%;
227
+ inline-size: 58.3333%;
228
+ inset-block-start: 25%;
229
+ inset-inline-start: 20.8333%;
230
+ transform-origin: center;
231
+ }
232
+ .inkra-loading[data-animation="trail"] .inkra-loading__animation-mark:nth-child(2) {
233
+ animation-delay: 140ms;
234
+ inset-block-start: 43.75%;
235
+ }
236
+ .inkra-loading[data-animation="trail"] .inkra-loading__animation-mark:nth-child(3) {
237
+ animation-delay: 280ms;
238
+ inset-block-start: 62.5%;
239
+ }
240
+
241
+ .inkra-loading__stages { display: grid; gap: var(--inkra-space-2); inline-size: min(100%, 28rem); text-align: start; }
242
+ .inkra-loading__stage { align-items: start; display: grid; gap: var(--inkra-space-3); grid-template-columns: 36px minmax(0, 1fr); min-inline-size: 0; }
243
+ .inkra-loading__stage-marker { align-items: center; block-size: 32px; display: flex; inline-size: 32px; justify-content: center; }
244
+ .inkra-loading__stage[data-state="pending"] { color: var(--inkra-ink-muted); }
245
+ .inkra-loading__stage[data-state="complete"] { color: var(--inkra-success-foreground); }
246
+ .inkra-loading__stage[data-state="error"] { color: var(--inkra-danger-foreground); }
247
+ .inkra-loading__stage-copy { display: grid; gap: var(--inkra-space-1); min-inline-size: 0; overflow-wrap: anywhere; }
248
+ .inkra-loading__stage-description { color: var(--inkra-ink-muted); font-size: var(--inkra-text-sm); line-height: var(--inkra-line-body); }
249
+
250
+ .inkra-loading__tips { display: grid; gap: var(--inkra-space-2); inline-size: min(100%, 32rem); min-block-size: 2.5rem; place-items: center; }
251
+ .inkra-loading__tip { line-height: var(--inkra-line-body); max-inline-size: 100%; overflow-wrap: anywhere; }
252
+ .inkra-loading__tips[data-transition="fade"] .inkra-loading__tip { animation: inkra-loading-tip-fade var(--inkra-motion-normal) var(--inkra-ease) both; }
253
+ .inkra-loading__tips[data-transition="slide"] .inkra-loading__tip { animation: inkra-loading-tip-slide var(--inkra-motion-normal) var(--inkra-ease) both; }
254
+ .inkra-loading__tip-controls { align-items: center; display: flex; gap: var(--inkra-space-2); }
255
+ .inkra-loading__tip-position { color: var(--inkra-ink-muted); font-variant-numeric: tabular-nums; min-inline-size: 4ch; }
256
+
257
+ .inkra-loading__content-layer { inline-size: 100%; min-inline-size: 0; }
258
+ .inkra-loading__actions { align-items: center; display: flex; flex-wrap: wrap; gap: var(--inkra-space-2); justify-content: center; }
259
+
260
+ .inkra-loading__slot {
261
+ max-block-size: calc(50dvh - var(--inkra-space-8));
262
+ max-inline-size: 100%;
263
+ min-inline-size: 0;
264
+ overflow: auto;
265
+ overflow-wrap: anywhere;
266
+ pointer-events: auto;
267
+ position: relative;
268
+ z-index: 2;
269
+ }
270
+ .inkra-loading__slot[data-slot="top-start"] { align-self: start; grid-column: 1; grid-row: 1; justify-self: start; margin-block-end: var(--inkra-space-4); }
271
+ .inkra-loading__slot[data-slot="top-end"] { align-self: start; grid-column: 3; grid-row: 1; justify-self: end; margin-block-end: var(--inkra-space-4); }
272
+ .inkra-loading__slot[data-slot="center"] { align-self: center; grid-column: 2; grid-row: 2; justify-self: center; margin-block-end: var(--inkra-space-4); }
273
+ .inkra-loading__slot[data-slot="bottom-start"] { align-self: end; grid-column: 1; grid-row: 3; justify-self: start; margin-block-start: var(--inkra-space-4); }
274
+ .inkra-loading__slot[data-slot="bottom-center"] { align-self: end; grid-column: 2; grid-row: 3; justify-self: center; margin-block-start: var(--inkra-space-4); }
275
+ .inkra-loading__slot[data-slot="bottom-end"] { align-self: end; grid-column: 3; grid-row: 3; justify-self: end; margin-block-start: var(--inkra-space-4); }
276
+
277
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]):has(.inkra-loading__slot[data-slot="center"]) .inkra-loading__slot[data-slot^="bottom-"] {
278
+ grid-row: 4;
279
+ }
280
+
281
+ .inkra-loading[data-mode="region"] .inkra-loading__slot[data-slot$="start"] { margin-inline-start: var(--inkra-space-4); }
282
+ .inkra-loading[data-mode="region"] .inkra-loading__slot[data-slot$="end"] { margin-inline-end: var(--inkra-space-4); }
283
+
284
+ .inkra-loading[data-preset="scene-bottom"] .inkra-loading__layout { align-items: end; }
285
+ .inkra-loading[data-preset="scene-bottom"] .inkra-loading__main { padding-block-end: max(var(--inkra-space-8), 10dvh); }
286
+ .inkra-loading[data-preset="intel"] .inkra-loading__main { justify-items: start; margin-inline-start: 0; text-align: start; }
287
+ .inkra-loading[data-preset="staged"] .inkra-loading__main { align-items: start; grid-template-columns: minmax(0, .8fr) minmax(14rem, 1.2fr); text-align: start; }
288
+ .inkra-loading[data-preset="staged"] .inkra-loading__copy,
289
+ .inkra-loading[data-preset="staged"] .inkra-loading__logo { justify-self: start; }
290
+ .inkra-loading[data-preset="staged"] .inkra-loading__stages { grid-column: 2; grid-row: 1 / span 5; }
291
+ .inkra-loading[data-preset="edge"] { align-items: start; min-block-size: auto; padding: 0; }
292
+ .inkra-loading[data-preset="edge"] .inkra-loading__veil,
293
+ .inkra-loading[data-preset="edge"] .inkra-loading__background { display: none; }
294
+ .inkra-loading[data-preset="edge"] .inkra-loading__layout { justify-items: stretch; }
295
+ .inkra-loading[data-preset="edge"] .inkra-loading__main { align-items: center; display: flex; inline-size: 100%; justify-content: space-between; padding: var(--inkra-space-2) var(--inkra-space-4); text-align: start; }
296
+ .inkra-loading__edge-line { block-size: 8px; inset-block-end: 0; inset-inline: 0; pointer-events: none; position: absolute; }
297
+
298
+ .inkra-loading__skeleton { display: grid; gap: var(--inkra-space-3); inline-size: min(100%, 36rem); }
299
+ .inkra-loading__skeleton-grid { display: grid; gap: var(--inkra-space-3); grid-template-columns: repeat(3, minmax(0, 1fr)); }
300
+
301
+ @keyframes inkra-loading-tip-fade { from { opacity: 0; } to { opacity: 1; } }
302
+ @keyframes inkra-loading-tip-slide { from { opacity: 0; transform: translateY(var(--inkra-space-2)); } to { opacity: 1; transform: translateY(0); } }
303
+ @keyframes inkra-loading-orbit { to { transform: rotate(360deg); } }
304
+ @keyframes inkra-loading-dot { 0%, 70%, 100% { opacity: .36; transform: translateY(0); } 35% { opacity: 1; transform: translateY(-45%); } }
305
+ @keyframes inkra-loading-pulse { 0% { opacity: .9; transform: scale(.35); } 75%, 100% { opacity: 0; transform: scale(1); } }
306
+ @keyframes inkra-loading-trail { 0%, 100% { opacity: .28; transform: scaleX(.45); } 50% { opacity: 1; transform: scaleX(1); } }
307
+
308
+ @media (max-width: 40rem), (max-height: 32rem) {
309
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]) {
310
+ display: flex;
311
+ flex-direction: column;
312
+ gap: var(--inkra-space-2);
313
+ }
314
+ .inkra-loading[data-mode="fullscreen"] { padding: max(var(--inkra-space-2), env(safe-area-inset-top)) max(var(--inkra-space-2), env(safe-area-inset-right)) max(var(--inkra-space-2), env(safe-area-inset-bottom)) max(var(--inkra-space-2), env(safe-area-inset-left)); }
315
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]) .inkra-loading__layout { flex: 1 0 auto; order: 4; }
316
+ .inkra-loading__main { gap: var(--inkra-space-3); padding: var(--inkra-space-3); }
317
+ .inkra-loading__title { font-size: var(--inkra-text-xl); }
318
+ .inkra-loading[data-preset="staged"] .inkra-loading__main { grid-template-columns: minmax(0, 1fr); }
319
+ .inkra-loading[data-preset="staged"] .inkra-loading__stages { grid-column: auto; grid-row: auto; }
320
+ .inkra-loading__slot { flex: none; margin-block: 0 !important; max-block-size: none; max-inline-size: min(100%, 28rem); overflow: visible; }
321
+ .inkra-loading__slot[data-slot="top-start"] { align-self: start; order: 1; }
322
+ .inkra-loading__slot[data-slot="top-end"] { align-self: end; order: 2; }
323
+ .inkra-loading__slot[data-slot="center"] { align-self: center; order: 3; }
324
+ .inkra-loading__slot[data-slot="bottom-start"] { align-self: start; order: 5; }
325
+ .inkra-loading__slot[data-slot="bottom-center"] { align-self: center; order: 6; }
326
+ .inkra-loading__slot[data-slot="bottom-end"] { align-self: end; order: 7; }
327
+ .inkra-loading__skeleton-grid { grid-template-columns: 1fr; }
328
+ }
329
+
330
+ @media (prefers-reduced-motion: reduce) {
331
+ .inkra-loading__tip,
332
+ .inkra-loading__animation,
333
+ .inkra-loading__animation * { animation: none !important; }
334
+ }
335
+
336
+ @media (forced-colors: active) {
337
+ .inkra-loading__veil { background: Canvas; opacity: .92; }
338
+ .inkra-loading[data-blocking] { border: 1px solid CanvasText; }
339
+ .inkra-loading__animation { color: CanvasText; }
340
+ }
341
+
342
+ @media print {
343
+ .inkra-loading[data-mode="fullscreen"] { min-block-size: auto; position: static; }
344
+ .inkra-loading__background, .inkra-loading__veil { display: none; }
345
+ .inkra-loading__tip,
346
+ .inkra-loading__animation,
347
+ .inkra-loading__animation * { animation: none !important; }
348
+ }
@@ -232,7 +232,7 @@
232
232
  .inkra-markdown__code-surface {
233
233
  background: transparent;
234
234
  color: var(--inkra-ink);
235
- font-family: "Trip Map Hand", var(--inkra-font-hand);
235
+ font-family: var(--inkra-font-hand);
236
236
  font-size: var(--inkra-text-md);
237
237
  font-weight: var(--inkra-weight-regular);
238
238
  line-height: 1.8;
@@ -0,0 +1,68 @@
1
+ .inkra-masonry {
2
+ box-sizing: border-box;
3
+ display: grid;
4
+ gap: var(--inkra-masonry-row-gap, 16px) var(--inkra-masonry-column-gap, 16px);
5
+ grid-template-columns: repeat(var(--inkra-masonry-columns, 1), minmax(0, 1fr));
6
+ inline-size: 100%;
7
+ max-inline-size: 100%;
8
+ min-inline-size: 0;
9
+ overflow: clip;
10
+ overflow-clip-margin: 1px;
11
+ position: relative;
12
+ }
13
+
14
+ .inkra-masonry[data-mode="adaptive"] {
15
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--inkra-masonry-min-column-width, 240px)), 1fr));
16
+ }
17
+
18
+ .inkra-masonry[data-layout="ready"] {
19
+ display: block;
20
+ }
21
+
22
+ .inkra-masonry__item {
23
+ box-sizing: border-box;
24
+ max-inline-size: 100%;
25
+ min-inline-size: 0;
26
+ }
27
+
28
+ .inkra-masonry[data-layout="ready"] > .inkra-masonry__item {
29
+ inset-block-start: 0;
30
+ left: 0;
31
+ position: absolute;
32
+ }
33
+
34
+ .inkra-masonry[data-layout="ready"][data-animated] > .inkra-masonry__item {
35
+ transition: transform var(--inkra-motion-normal, 180ms) var(--inkra-ease, ease);
36
+ }
37
+
38
+ .inkra-masonry__item > * {
39
+ max-inline-size: 100%;
40
+ }
41
+
42
+ @media (prefers-reduced-motion: reduce) {
43
+ .inkra-masonry[data-layout="ready"][data-animated] > .inkra-masonry__item {
44
+ transition-duration: 0ms;
45
+ }
46
+ }
47
+
48
+ @media (forced-colors: active) {
49
+ .inkra-masonry[data-layout="ready"][data-animated] > .inkra-masonry__item {
50
+ transition-duration: 0ms;
51
+ }
52
+ }
53
+
54
+ @media print {
55
+ .inkra-masonry,
56
+ .inkra-masonry[data-layout="ready"] {
57
+ block-size: auto !important;
58
+ display: grid;
59
+ overflow: visible;
60
+ }
61
+
62
+ .inkra-masonry[data-layout="ready"] > .inkra-masonry__item {
63
+ inline-size: auto !important;
64
+ position: static;
65
+ transform: none !important;
66
+ transition: none;
67
+ }
68
+ }