@inkra/react 0.6.0 → 0.9.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 (72) hide show
  1. package/README.md +166 -1
  2. package/dist/Button.js +1 -1
  3. package/dist/PencilIcon.d.ts +14 -1
  4. package/dist/PencilIcon.js +88 -52
  5. package/dist/PencilText.js +8 -0
  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/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 +15 -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 +6 -0
  18. package/dist/index.js +5 -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/inventory-grid/index.d.ts +35 -0
  28. package/dist/inventory-grid/index.js +215 -0
  29. package/dist/inventory-grid/model.d.ts +56 -0
  30. package/dist/inventory-grid/model.js +93 -0
  31. package/dist/inventory-grid/outline.d.ts +9 -0
  32. package/dist/inventory-grid/outline.js +54 -0
  33. package/dist/layout/GridBoard.d.ts +22 -0
  34. package/dist/layout/GridBoard.js +113 -0
  35. package/dist/layout/GridResizable.d.ts +31 -0
  36. package/dist/layout/GridResizable.js +35 -0
  37. package/dist/layout/index.d.ts +19 -4
  38. package/dist/layout/index.js +45 -9
  39. package/dist/layout/swipeNavigation.d.ts +15 -0
  40. package/dist/layout/swipeNavigation.js +121 -0
  41. package/dist/loading/index.d.ts +58 -0
  42. package/dist/loading/index.js +188 -0
  43. package/dist/loading/locales.d.ts +15 -0
  44. package/dist/loading/locales.js +34 -0
  45. package/dist/loading/model.d.ts +6 -0
  46. package/dist/loading/model.js +29 -0
  47. package/dist/masonry/index.d.ts +25 -0
  48. package/dist/masonry/index.js +227 -0
  49. package/dist/masonry/layout.d.ts +35 -0
  50. package/dist/masonry/layout.js +67 -0
  51. package/dist/number-ticker/RollingValue.d.ts +6 -0
  52. package/dist/number-ticker/RollingValue.js +10 -0
  53. package/dist/number-ticker/index.d.ts +4 -0
  54. package/dist/number-ticker/index.js +55 -7
  55. package/dist/number-ticker/rolling.d.ts +35 -0
  56. package/dist/number-ticker/rolling.js +87 -0
  57. package/dist/pagination/index.d.ts +17 -0
  58. package/dist/pagination/index.js +30 -6
  59. package/dist/styles/base.css +9 -1
  60. package/dist/styles/form.css +10 -0
  61. package/dist/styles/guide.css +202 -0
  62. package/dist/styles/image-viewer.css +20 -0
  63. package/dist/styles/infinite-scroll.css +171 -0
  64. package/dist/styles/inventory-grid.css +43 -0
  65. package/dist/styles/layout.css +85 -0
  66. package/dist/styles/loading.css +348 -0
  67. package/dist/styles/masonry.css +68 -0
  68. package/dist/styles/number-ticker.css +46 -0
  69. package/dist/styles/pagination.css +10 -0
  70. package/dist/styles.css +1162 -146
  71. package/dist/toast/manager.d.ts +4 -4
  72. package/package.json +33 -1
@@ -0,0 +1,43 @@
1
+ .inkra-inventory-grid { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 24px; min-width: 0; max-width: 100%; color: var(--inkra-ink); }
2
+ .inkra-inventory-grid__container { min-width: 0; max-width: 100%; }
3
+ .inkra-inventory-grid__header { display: flex; align-items: center; justify-content: space-between; min-height: 44px; gap: 8px; padding-bottom: 8px; }
4
+ .inkra-inventory-grid__scroll { max-width: 100%; overflow: auto; padding: 4px; }
5
+ .inkra-inventory-grid__board { position: relative; isolation: isolate; direction: ltr; }
6
+ .inkra-inventory-grid__lines { position: absolute; inset: 0; color: var(--inkra-border); pointer-events: none; }
7
+ .inkra-inventory-grid__lines > canvas { position: absolute; }
8
+ .inkra-inventory-grid__item, .inkra-inventory-grid__preview, .inkra-inventory-grid__cell, .inkra-inventory-grid__blocked { position: absolute; }
9
+ .inkra-inventory-grid__item { outline: none; pointer-events: none; }
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__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; }
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; }
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; }
22
+ .inkra-inventory-grid__item[data-dragging] { opacity: .28; }
23
+ .inkra-inventory-grid__item[data-disabled] .inkra-inventory-grid__cell { cursor: default; touch-action: auto; }
24
+ .inkra-inventory-grid__container[data-disabled], .inkra-inventory-grid[data-disabled] { opacity: .55; }
25
+ .inkra-inventory-grid__preview { z-index: 2; pointer-events: none; color: var(--inkra-accent-strong); }
26
+ .inkra-inventory-grid__preview[data-valid="false"] { color: var(--inkra-danger); }
27
+ .inkra-inventory-grid__preview .inkra-inventory-grid__shape { color: inherit; --inkra-stroke-width: 2; }
28
+ .inkra-inventory-grid__preview .inkra-inventory-grid__cell, .inkra-inventory-grid__overlay .inkra-inventory-grid__cell { pointer-events: none; }
29
+ .inkra-inventory-grid__overlay { position: relative; opacity: .8; pointer-events: none; color: var(--inkra-ink); }
30
+ .inkra-inventory-grid__blocked { display: grid; place-items: center; color: var(--inkra-ink-muted); pointer-events: none; }
31
+ .inkra-inventory-grid__announcement { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
32
+ @media (forced-colors: active) {
33
+ .inkra-inventory-grid__board { border: 1px solid CanvasText; }
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; }
43
+ }
@@ -4,6 +4,8 @@
4
4
  .inkra-layout,
5
5
  .inkra-layout__body,
6
6
  .inkra-layout__header,
7
+ .inkra-layout__header-sidebar,
8
+ .inkra-layout__header-content,
7
9
  .inkra-layout__sidebar,
8
10
  .inkra-layout__content,
9
11
  .inkra-layout__footer {
@@ -37,6 +39,33 @@
37
39
  .inkra-layout__body { display: flex; flex: 1; align-items: stretch; }
38
40
  .inkra-layout__header,
39
41
  .inkra-layout__footer { position: relative; flex: none; }
42
+ .inkra-layout__header[data-shared-sidebar] { display: flex; align-items: stretch; }
43
+ .inkra-layout__header-sidebar,
44
+ .inkra-layout__header-content {
45
+ display: flex;
46
+ align-items: center;
47
+ padding: var(--inkra-layout-header-padding, 20px);
48
+ overflow-wrap: anywhere;
49
+ }
50
+ .inkra-layout__header-sidebar {
51
+ position: relative;
52
+ flex: 0 0 min(var(--inkra-layout-shared-sidebar-width, 240px), 100%);
53
+ max-width: 100%;
54
+ }
55
+ .inkra-layout__header-content { flex: 1; }
56
+ .inkra-layout__header-content > * { min-width: 0; }
57
+ .inkra-layout__header-sidebar-divider[data-orientation="vertical"] {
58
+ position: absolute;
59
+ inset-block-start: 50%;
60
+ inset-inline-end: 0;
61
+ height: min(32px, max(0px, calc(100% - 2 * var(--inkra-layout-header-padding, 20px))));
62
+ color: var(--inkra-ink-muted);
63
+ opacity: 0.56;
64
+ transform: translate(50%, -50%);
65
+ }
66
+ .inkra-layout__header-sidebar-divider[data-orientation="vertical"]:dir(rtl) { transform: translate(-50%, -50%); }
67
+ .inkra-layout__header-sidebar[hidden],
68
+ .inkra-layout__sidebar[hidden] { display: none; }
40
69
  .inkra-layout__sidebar {
41
70
  position: relative;
42
71
  flex: 0 0 min(var(--inkra-layout-sidebar-width, 240px), 100%);
@@ -55,6 +84,9 @@
55
84
  }
56
85
  .inkra-layout__sidebar-divider-mobile { display: none; }
57
86
  @container inkra-layout (max-width: 639px) {
87
+ .inkra-layout[data-collapse-at="sm"] > .inkra-layout__header[data-shared-sidebar] { flex-direction: column; }
88
+ .inkra-layout[data-collapse-at="sm"] > .inkra-layout__header > .inkra-layout__header-sidebar { flex-basis: auto; width: 100%; }
89
+ .inkra-layout[data-collapse-at="sm"] > .inkra-layout__header > .inkra-layout__header-sidebar > .inkra-layout__header-sidebar-divider { display: none !important; }
58
90
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body { flex-direction: column; }
59
91
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body > .inkra-layout__sidebar { flex-basis: auto; width: 100%; }
60
92
  .inkra-layout[data-collapse-at="sm"] > .inkra-layout__body > .inkra-layout__sidebar > .inkra-layout__sidebar-divider { display: none; }
@@ -63,6 +95,9 @@
63
95
  }
64
96
  }
65
97
  @container inkra-layout (max-width: 767px) {
98
+ .inkra-layout[data-collapse-at="md"] > .inkra-layout__header[data-shared-sidebar] { flex-direction: column; }
99
+ .inkra-layout[data-collapse-at="md"] > .inkra-layout__header > .inkra-layout__header-sidebar { flex-basis: auto; width: 100%; }
100
+ .inkra-layout[data-collapse-at="md"] > .inkra-layout__header > .inkra-layout__header-sidebar > .inkra-layout__header-sidebar-divider { display: none !important; }
66
101
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body { flex-direction: column; }
67
102
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body > .inkra-layout__sidebar { flex-basis: auto; width: 100%; }
68
103
  .inkra-layout[data-collapse-at="md"] > .inkra-layout__body > .inkra-layout__sidebar > .inkra-layout__sidebar-divider { display: none; }
@@ -70,3 +105,53 @@
70
105
  display: block; position: absolute; bottom: -4px; inset-inline: 0; width: 100%;
71
106
  }
72
107
  }
108
+ @media (forced-colors: active), print {
109
+ .inkra-layout__header-sidebar-divider[data-orientation="vertical"] { opacity: 1; }
110
+ }
111
+ .inkra-grid-resizable,
112
+ .inkra-grid-resizable > .inkra-resizable,
113
+ .inkra-grid-resizable .inkra-resizable__panel > .inkra-resizable {
114
+ block-size: 100%;
115
+ min-inline-size: 0;
116
+ min-block-size: 0;
117
+ }
118
+ .inkra-grid-resizable__cell {
119
+ box-sizing: border-box;
120
+ block-size: 100%;
121
+ min-inline-size: 0;
122
+ overflow: auto;
123
+ }
124
+ .inkra-grid-board { min-inline-size: 0; inline-size: 100%; }
125
+ .inkra-grid-board__canvas { position: relative; min-inline-size: 0; }
126
+ .inkra-grid-board__item { position: absolute; transition: transform var(--inkra-motion-fast) var(--inkra-ease); }
127
+ .inkra-grid-board__item.resizing,
128
+ .inkra-grid-board__item.react-draggable-dragging { transition: none; z-index: 2; }
129
+ .inkra-grid-board__surface { box-sizing: border-box; display: flex; flex-direction: column; block-size: 100%; min-inline-size: 0; }
130
+ .inkra-grid-board__surface > .inkra-pencil-surface__content { display: flex; flex-direction: column; block-size: 100%; min-block-size: 0; }
131
+ .inkra-grid-board__header { display: flex; flex-shrink: 0; align-items: center; gap: 8px; min-block-size: 44px; padding-inline: 12px 4px; }
132
+ .inkra-grid-board__title { flex: 1; min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
133
+ .inkra-grid-board__content { padding: 4px 12px 24px; min-block-size: 0; overflow: auto; flex: 1; }
134
+ .inkra-grid-board__move,
135
+ .inkra-grid-board__resize {
136
+ appearance: none; border: 0; background: transparent; color: var(--inkra-ink-muted);
137
+ display: inline-flex; align-items: center; justify-content: center;
138
+ inline-size: 44px; block-size: 44px; padding: 0; flex: 0 0 44px;
139
+ }
140
+ .inkra-grid-board__move { cursor: grab; touch-action: none; position: relative; }
141
+ .inkra-grid-board__resize { position: absolute; right: 0; bottom: 0; cursor: se-resize; touch-action: none; z-index: 1; }
142
+ .inkra-grid-board__move:hover,
143
+ .inkra-grid-board__resize:hover { color: var(--inkra-accent-strong); }
144
+ .inkra-grid-board__move:focus-visible,
145
+ .inkra-grid-board__resize:focus-visible { outline: none; }
146
+ .inkra-grid-board__focus { position: absolute; inset: 4px; opacity: 0; pointer-events: none; }
147
+ .inkra-grid-board__move:focus-visible .inkra-grid-board__focus,
148
+ .inkra-grid-board__resize:focus-visible .inkra-grid-board__focus { opacity: 1; }
149
+ .inkra-grid-board__item.react-resizable-hide > .inkra-grid-board__resize { display: none; }
150
+ .inkra-grid-board[data-stacked] .inkra-grid-board__canvas { display: grid; gap: var(--inkra-grid-board-gap); }
151
+ .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; }
152
+ .inkra-grid-board[data-stacked] .inkra-grid-board__resize { display: none; }
153
+ @media (prefers-reduced-motion: reduce) { .inkra-grid-board__item { transition: none; } }
154
+ @media (forced-colors: active) {
155
+ .inkra-grid-board__focus { display: none; }
156
+ .inkra-grid-board__move:focus-visible, .inkra-grid-board__resize:focus-visible { outline: 2px solid Highlight; outline-offset: -4px; }
157
+ }
@@ -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
+ }
@@ -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
+ }
@@ -28,6 +28,52 @@
28
28
  font-family: "Trip Map Hand", "HanziPen SC", "Hannotate SC", "Kaiti SC", "STKaiti", cursive;
29
29
  }
30
30
 
31
+ .inkra-number-ticker__reels {
32
+ display: inline-flex;
33
+ align-items: baseline;
34
+ unicode-bidi: isolate;
35
+ line-height: var(--inkra-line-ui, 1.45);
36
+ }
37
+
38
+ .inkra-number-ticker__column {
39
+ display: inline-grid;
40
+ flex: none;
41
+ overflow: hidden;
42
+ vertical-align: bottom;
43
+ }
44
+
45
+ .inkra-number-ticker__column-inner {
46
+ display: grid;
47
+ min-width: 0;
48
+ height: 1lh;
49
+ overflow: hidden;
50
+ }
51
+
52
+ .inkra-number-ticker__face {
53
+ grid-area: 1 / 1;
54
+ display: flex;
55
+ justify-content: center;
56
+ align-items: center;
57
+ height: 1lh;
58
+ white-space: pre;
59
+ }
60
+
61
+ .inkra-number-ticker__column[data-digit] .inkra-number-ticker__face {
62
+ width: 1ch;
63
+ }
64
+
65
+ .inkra-number-ticker__face > .inkra-pencil-text {
66
+ flex: none;
67
+ }
68
+
69
+ @media (prefers-reduced-motion: reduce), print {
70
+ .inkra-number-ticker__column { grid-template-columns: 1fr !important; }
71
+ .inkra-number-ticker__column[data-digit] { width: 1ch !important; }
72
+ .inkra-number-ticker__column[data-departing] { display: none; }
73
+ .inkra-number-ticker__face[data-face="from"] { display: none; }
74
+ .inkra-number-ticker__face[data-face="to"] { transform: none !important; opacity: 1 !important; }
75
+ }
76
+
31
77
  .inkra-number-ticker__prefix,
32
78
  .inkra-number-ticker__suffix {
33
79
  align-items: center;
@@ -1,4 +1,14 @@
1
1
  .inkra-pagination { min-inline-size: 0; max-inline-size: 100%; color: var(--inkra-ink); }
2
+ .inkra-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: var(--inkra-space-2); }
3
+ .inkra-pagination[data-align="start"] { justify-content: flex-start; }
4
+ .inkra-pagination[data-align="center"] { justify-content: center; }
5
+ .inkra-pagination[data-align="end"] { justify-content: flex-end; }
6
+ .inkra-pagination__size { flex: 0 1 auto; min-inline-size: 0; max-inline-size: 100%; }
7
+ .inkra-pagination__size .inkra-select__trigger { max-inline-size: 100%; }
8
+ .inkra-pagination__list { min-inline-size: 0; }
9
+ .inkra-pagination[data-wrap="true"] .inkra-pagination__list { flex-wrap: wrap; }
10
+ .inkra-pagination[data-wrap="true"][data-align="center"] .inkra-pagination__list { justify-content: center; }
11
+ .inkra-pagination[data-wrap="true"][data-align="end"] .inkra-pagination__list { justify-content: flex-end; }
2
12
  .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; }
3
13
  .inkra-pagination__list > li { display: flex; flex: 0 0 auto; }
4
14
  .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; }