@p4ulcristian/iris-layout 0.2.0 → 0.2.2

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 (201) hide show
  1. package/dist/cljs-runtime/cljs.core.js +38746 -0
  2. package/dist/cljs-runtime/cljs.core.js.map +1 -0
  3. package/dist/cljs-runtime/cljs.pprint.js +8400 -0
  4. package/dist/cljs-runtime/cljs.pprint.js.map +1 -0
  5. package/dist/cljs-runtime/cljs.stacktrace.js +561 -0
  6. package/dist/cljs-runtime/cljs.stacktrace.js.map +1 -0
  7. package/dist/cljs-runtime/cljs_env.js +1286 -0
  8. package/dist/cljs-runtime/clojure.data.js +295 -0
  9. package/dist/cljs-runtime/clojure.data.js.map +1 -0
  10. package/dist/cljs-runtime/clojure.set.js +382 -0
  11. package/dist/cljs-runtime/clojure.set.js.map +1 -0
  12. package/dist/cljs-runtime/clojure.string.js +480 -0
  13. package/dist/cljs-runtime/clojure.string.js.map +1 -0
  14. package/dist/cljs-runtime/clojure.walk.js +132 -0
  15. package/dist/cljs-runtime/clojure.walk.js.map +1 -0
  16. package/dist/cljs-runtime/devtools.async.js +90 -0
  17. package/dist/cljs-runtime/devtools.async.js.map +1 -0
  18. package/dist/cljs-runtime/devtools.context.js +11 -0
  19. package/dist/cljs-runtime/devtools.context.js.map +1 -0
  20. package/dist/cljs-runtime/devtools.core.js +175 -0
  21. package/dist/cljs-runtime/devtools.core.js.map +1 -0
  22. package/dist/cljs-runtime/devtools.defaults.js +20 -0
  23. package/dist/cljs-runtime/devtools.defaults.js.map +1 -0
  24. package/dist/cljs-runtime/devtools.format.js +631 -0
  25. package/dist/cljs-runtime/devtools.format.js.map +1 -0
  26. package/dist/cljs-runtime/devtools.formatters.budgeting.js +182 -0
  27. package/dist/cljs-runtime/devtools.formatters.budgeting.js.map +1 -0
  28. package/dist/cljs-runtime/devtools.formatters.core.js +220 -0
  29. package/dist/cljs-runtime/devtools.formatters.core.js.map +1 -0
  30. package/dist/cljs-runtime/devtools.formatters.helpers.js +228 -0
  31. package/dist/cljs-runtime/devtools.formatters.helpers.js.map +1 -0
  32. package/dist/cljs-runtime/devtools.formatters.js +261 -0
  33. package/dist/cljs-runtime/devtools.formatters.js.map +1 -0
  34. package/dist/cljs-runtime/devtools.formatters.markup.js +1174 -0
  35. package/dist/cljs-runtime/devtools.formatters.markup.js.map +1 -0
  36. package/dist/cljs-runtime/devtools.formatters.printing.js +313 -0
  37. package/dist/cljs-runtime/devtools.formatters.printing.js.map +1 -0
  38. package/dist/cljs-runtime/devtools.formatters.state.js +325 -0
  39. package/dist/cljs-runtime/devtools.formatters.state.js.map +1 -0
  40. package/dist/cljs-runtime/devtools.formatters.templating.js +666 -0
  41. package/dist/cljs-runtime/devtools.formatters.templating.js.map +1 -0
  42. package/dist/cljs-runtime/devtools.hints.js +193 -0
  43. package/dist/cljs-runtime/devtools.hints.js.map +1 -0
  44. package/dist/cljs-runtime/devtools.munging.js +1058 -0
  45. package/dist/cljs-runtime/devtools.munging.js.map +1 -0
  46. package/dist/cljs-runtime/devtools.prefs.js +87 -0
  47. package/dist/cljs-runtime/devtools.prefs.js.map +1 -0
  48. package/dist/cljs-runtime/devtools.preload.js +11 -0
  49. package/dist/cljs-runtime/devtools.preload.js.map +1 -0
  50. package/dist/cljs-runtime/devtools.protocols.js +98 -0
  51. package/dist/cljs-runtime/devtools.protocols.js.map +1 -0
  52. package/dist/cljs-runtime/devtools.reporter.js +81 -0
  53. package/dist/cljs-runtime/devtools.reporter.js.map +1 -0
  54. package/dist/cljs-runtime/devtools.toolbox.js +141 -0
  55. package/dist/cljs-runtime/devtools.toolbox.js.map +1 -0
  56. package/dist/cljs-runtime/devtools.util.js +517 -0
  57. package/dist/cljs-runtime/devtools.util.js.map +1 -0
  58. package/dist/cljs-runtime/devtools.version.js +9 -0
  59. package/dist/cljs-runtime/devtools.version.js.map +1 -0
  60. package/dist/cljs-runtime/goog.array.array.js +659 -0
  61. package/dist/cljs-runtime/goog.array.array.js.map +9 -0
  62. package/dist/cljs-runtime/goog.asserts.asserts.js +133 -0
  63. package/dist/cljs-runtime/goog.asserts.asserts.js.map +9 -0
  64. package/dist/cljs-runtime/goog.asserts.dom.js +90 -0
  65. package/dist/cljs-runtime/goog.asserts.dom.js.map +9 -0
  66. package/dist/cljs-runtime/goog.async.nexttick.js +93 -0
  67. package/dist/cljs-runtime/goog.async.nexttick.js.map +9 -0
  68. package/dist/cljs-runtime/goog.base.js +1261 -0
  69. package/dist/cljs-runtime/goog.base.js.map +9 -0
  70. package/dist/cljs-runtime/goog.collections.maps.js +82 -0
  71. package/dist/cljs-runtime/goog.collections.maps.js.map +9 -0
  72. package/dist/cljs-runtime/goog.debug.entrypointregistry.js +44 -0
  73. package/dist/cljs-runtime/goog.debug.entrypointregistry.js.map +9 -0
  74. package/dist/cljs-runtime/goog.debug.error.js +30 -0
  75. package/dist/cljs-runtime/goog.debug.error.js.map +9 -0
  76. package/dist/cljs-runtime/goog.dom.asserts.js +40 -0
  77. package/dist/cljs-runtime/goog.dom.asserts.js.map +9 -0
  78. package/dist/cljs-runtime/goog.dom.browserfeature.js +21 -0
  79. package/dist/cljs-runtime/goog.dom.browserfeature.js.map +9 -0
  80. package/dist/cljs-runtime/goog.dom.dom.js +1087 -0
  81. package/dist/cljs-runtime/goog.dom.dom.js.map +9 -0
  82. package/dist/cljs-runtime/goog.dom.element.js +69 -0
  83. package/dist/cljs-runtime/goog.dom.element.js.map +9 -0
  84. package/dist/cljs-runtime/goog.dom.htmlelement.js +7 -0
  85. package/dist/cljs-runtime/goog.dom.htmlelement.js.map +9 -0
  86. package/dist/cljs-runtime/goog.dom.nodetype.js +6 -0
  87. package/dist/cljs-runtime/goog.dom.nodetype.js.map +9 -0
  88. package/dist/cljs-runtime/goog.dom.safe.js +277 -0
  89. package/dist/cljs-runtime/goog.dom.safe.js.map +9 -0
  90. package/dist/cljs-runtime/goog.dom.tagname.js +147 -0
  91. package/dist/cljs-runtime/goog.dom.tagname.js.map +9 -0
  92. package/dist/cljs-runtime/goog.dom.tags.js +10 -0
  93. package/dist/cljs-runtime/goog.dom.tags.js.map +9 -0
  94. package/dist/cljs-runtime/goog.flags.flags.js +12 -0
  95. package/dist/cljs-runtime/goog.flags.flags.js.map +9 -0
  96. package/dist/cljs-runtime/goog.fs.blob.js +38 -0
  97. package/dist/cljs-runtime/goog.fs.blob.js.map +9 -0
  98. package/dist/cljs-runtime/goog.fs.url.js +37 -0
  99. package/dist/cljs-runtime/goog.fs.url.js.map +9 -0
  100. package/dist/cljs-runtime/goog.functions.functions.js +211 -0
  101. package/dist/cljs-runtime/goog.functions.functions.js.map +9 -0
  102. package/dist/cljs-runtime/goog.html.safehtml.js +321 -0
  103. package/dist/cljs-runtime/goog.html.safehtml.js.map +9 -0
  104. package/dist/cljs-runtime/goog.html.safescript.js +65 -0
  105. package/dist/cljs-runtime/goog.html.safescript.js.map +9 -0
  106. package/dist/cljs-runtime/goog.html.safestyle.js +175 -0
  107. package/dist/cljs-runtime/goog.html.safestyle.js.map +9 -0
  108. package/dist/cljs-runtime/goog.html.safestylesheet.js +99 -0
  109. package/dist/cljs-runtime/goog.html.safestylesheet.js.map +9 -0
  110. package/dist/cljs-runtime/goog.html.safeurl.js +231 -0
  111. package/dist/cljs-runtime/goog.html.safeurl.js.map +9 -0
  112. package/dist/cljs-runtime/goog.html.trustedresourceurl.js +123 -0
  113. package/dist/cljs-runtime/goog.html.trustedresourceurl.js.map +9 -0
  114. package/dist/cljs-runtime/goog.html.trustedtypes.js +16 -0
  115. package/dist/cljs-runtime/goog.html.trustedtypes.js.map +9 -0
  116. package/dist/cljs-runtime/goog.html.uncheckedconversions.js +52 -0
  117. package/dist/cljs-runtime/goog.html.uncheckedconversions.js.map +9 -0
  118. package/dist/cljs-runtime/goog.labs.useragent.browser.js +352 -0
  119. package/dist/cljs-runtime/goog.labs.useragent.browser.js.map +9 -0
  120. package/dist/cljs-runtime/goog.labs.useragent.engine.js +73 -0
  121. package/dist/cljs-runtime/goog.labs.useragent.engine.js.map +9 -0
  122. package/dist/cljs-runtime/goog.labs.useragent.highentropy.highentropydata.js +14 -0
  123. package/dist/cljs-runtime/goog.labs.useragent.highentropy.highentropydata.js.map +9 -0
  124. package/dist/cljs-runtime/goog.labs.useragent.highentropy.highentropyvalue.js +74 -0
  125. package/dist/cljs-runtime/goog.labs.useragent.highentropy.highentropyvalue.js.map +9 -0
  126. package/dist/cljs-runtime/goog.labs.useragent.platform.js +147 -0
  127. package/dist/cljs-runtime/goog.labs.useragent.platform.js.map +9 -0
  128. package/dist/cljs-runtime/goog.labs.useragent.useragent.js +21 -0
  129. package/dist/cljs-runtime/goog.labs.useragent.useragent.js.map +9 -0
  130. package/dist/cljs-runtime/goog.labs.useragent.util.js +81 -0
  131. package/dist/cljs-runtime/goog.labs.useragent.util.js.map +9 -0
  132. package/dist/cljs-runtime/goog.math.coordinate.js +97 -0
  133. package/dist/cljs-runtime/goog.math.coordinate.js.map +9 -0
  134. package/dist/cljs-runtime/goog.math.integer.js +445 -0
  135. package/dist/cljs-runtime/goog.math.integer.js.map +9 -0
  136. package/dist/cljs-runtime/goog.math.long.js +437 -0
  137. package/dist/cljs-runtime/goog.math.long.js.map +9 -0
  138. package/dist/cljs-runtime/goog.math.math.js +158 -0
  139. package/dist/cljs-runtime/goog.math.math.js.map +9 -0
  140. package/dist/cljs-runtime/goog.math.size.js +76 -0
  141. package/dist/cljs-runtime/goog.math.size.js.map +9 -0
  142. package/dist/cljs-runtime/goog.object.object.js +284 -0
  143. package/dist/cljs-runtime/goog.object.object.js.map +9 -0
  144. package/dist/cljs-runtime/goog.reflect.reflect.js +32 -0
  145. package/dist/cljs-runtime/goog.reflect.reflect.js.map +9 -0
  146. package/dist/cljs-runtime/goog.string.const.js +35 -0
  147. package/dist/cljs-runtime/goog.string.const.js.map +9 -0
  148. package/dist/cljs-runtime/goog.string.internal.js +119 -0
  149. package/dist/cljs-runtime/goog.string.internal.js.map +9 -0
  150. package/dist/cljs-runtime/goog.string.string.js +462 -0
  151. package/dist/cljs-runtime/goog.string.string.js.map +9 -0
  152. package/dist/cljs-runtime/goog.string.stringbuffer.js +32 -0
  153. package/dist/cljs-runtime/goog.string.stringbuffer.js.map +9 -0
  154. package/dist/cljs-runtime/goog.string.typedstring.js +9 -0
  155. package/dist/cljs-runtime/goog.string.typedstring.js.map +9 -0
  156. package/dist/cljs-runtime/goog.structs.structs.js +199 -0
  157. package/dist/cljs-runtime/goog.structs.structs.js.map +9 -0
  158. package/dist/cljs-runtime/goog.uri.uri.js +628 -0
  159. package/dist/cljs-runtime/goog.uri.uri.js.map +9 -0
  160. package/dist/cljs-runtime/goog.uri.utils.js +326 -0
  161. package/dist/cljs-runtime/goog.uri.utils.js.map +9 -0
  162. package/dist/cljs-runtime/goog.useragent.useragent.js +139 -0
  163. package/dist/cljs-runtime/goog.useragent.useragent.js.map +9 -0
  164. package/dist/cljs-runtime/iris_layout.components.entity_card_group.js +202 -0
  165. package/dist/cljs-runtime/iris_layout.components.entity_card_group.js.map +1 -0
  166. package/dist/cljs-runtime/iris_layout.components.entity_tile.js +295 -0
  167. package/dist/cljs-runtime/iris_layout.components.entity_tile.js.map +1 -0
  168. package/dist/cljs-runtime/iris_layout.components.entity_tile_group.js +33 -0
  169. package/dist/cljs-runtime/iris_layout.components.entity_tile_group.js.map +1 -0
  170. package/dist/cljs-runtime/iris_layout.components.resizer.js +91 -0
  171. package/dist/cljs-runtime/iris_layout.components.resizer.js.map +1 -0
  172. package/dist/cljs-runtime/iris_layout.components.touch_drag.js +399 -0
  173. package/dist/cljs-runtime/iris_layout.components.touch_drag.js.map +1 -0
  174. package/dist/cljs-runtime/iris_layout.core.js +1372 -0
  175. package/dist/cljs-runtime/iris_layout.core.js.map +1 -0
  176. package/dist/cljs-runtime/iris_layout.layout.js +328 -0
  177. package/dist/cljs-runtime/iris_layout.layout.js.map +1 -0
  178. package/dist/cljs-runtime/reagent.core.js +993 -0
  179. package/dist/cljs-runtime/reagent.core.js.map +1 -0
  180. package/dist/cljs-runtime/reagent.debug.js +75 -0
  181. package/dist/cljs-runtime/reagent.debug.js.map +1 -0
  182. package/dist/cljs-runtime/reagent.impl.batching.js +270 -0
  183. package/dist/cljs-runtime/reagent.impl.batching.js.map +1 -0
  184. package/dist/cljs-runtime/reagent.impl.component.js +758 -0
  185. package/dist/cljs-runtime/reagent.impl.component.js.map +1 -0
  186. package/dist/cljs-runtime/reagent.impl.input.js +175 -0
  187. package/dist/cljs-runtime/reagent.impl.input.js.map +1 -0
  188. package/dist/cljs-runtime/reagent.impl.protocols.js +99 -0
  189. package/dist/cljs-runtime/reagent.impl.protocols.js.map +1 -0
  190. package/dist/cljs-runtime/reagent.impl.template.js +660 -0
  191. package/dist/cljs-runtime/reagent.impl.template.js.map +1 -0
  192. package/dist/cljs-runtime/reagent.impl.util.js +748 -0
  193. package/dist/cljs-runtime/reagent.impl.util.js.map +1 -0
  194. package/dist/cljs-runtime/reagent.ratom.js +1668 -0
  195. package/dist/cljs-runtime/reagent.ratom.js.map +1 -0
  196. package/dist/cljs-runtime/shadow.esm.esm_import$react.js +5 -0
  197. package/dist/cljs-runtime/shadow.module.iris-layout.append.js +2 -0
  198. package/dist/cljs-runtime/shadow.module.iris-layout.prepend.js +2 -0
  199. package/dist/iris-layout.js +375 -355
  200. package/dist/styles.css +287 -9
  201. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -12,14 +12,31 @@
12
12
  - .iris-drop-* Drop indicator overlay
13
13
  ============================================================ */
14
14
 
15
+ /* --- Global: disable text selection across all layout elements --- */
16
+
17
+ .iris-body,
18
+ .iris-body *,
19
+ .iris-sidebar,
20
+ .iris-sidebar * {
21
+ -webkit-user-select: none;
22
+ user-select: none;
23
+ -webkit-touch-callout: none;
24
+ }
25
+
15
26
  /* --- Body --- */
16
27
 
17
28
  .iris-body {
18
- display: flex;
19
- flex-direction: column;
29
+ --iris-grid-gap: 16px;
30
+ display: grid;
31
+ grid-template-columns: var(--iris-grid-gap) 1fr var(--iris-grid-gap);
32
+ grid-template-rows: var(--iris-grid-gap) 1fr var(--iris-grid-gap);
33
+ grid-template-areas:
34
+ ". top ."
35
+ "left center right"
36
+ ". bottom .";
20
37
  flex: 1;
21
38
  overflow: hidden;
22
- position: relative;
39
+ min-width: 0;
23
40
  }
24
41
 
25
42
  .iris-body-stage {
@@ -28,12 +45,14 @@
28
45
  position: relative;
29
46
  height: 100%;
30
47
  min-height: 0;
48
+ min-width: 0;
49
+ overflow: hidden;
31
50
  }
32
51
 
33
52
  /* Stacked layers — all stages rendered, only active is visible */
34
53
  .iris-body-stack {
54
+ grid-area: center;
35
55
  position: relative;
36
- flex: 1;
37
56
  min-height: 0;
38
57
  overflow: hidden;
39
58
  }
@@ -45,6 +64,7 @@
45
64
  opacity: 0;
46
65
  pointer-events: none;
47
66
  z-index: 0;
67
+ overflow: hidden;
48
68
  }
49
69
 
50
70
  .iris-body-layer.iris-body-layer-active {
@@ -53,7 +73,154 @@
53
73
  z-index: 1;
54
74
  }
55
75
 
56
- /* Stage slide animations — vertical based on stage order */
76
+ .iris-body-layer.iris-body-layer-exiting {
77
+ opacity: 1;
78
+ pointer-events: none;
79
+ z-index: 0;
80
+ }
81
+
82
+ /* Navigation edge buttons */
83
+ .iris-nav-edge {
84
+ display: flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ cursor: pointer;
88
+ background: transparent;
89
+ z-index: 2;
90
+ }
91
+
92
+ .iris-nav-hidden {
93
+ visibility: hidden;
94
+ pointer-events: none;
95
+ }
96
+
97
+ /* Half-circle indicator inside nav edges */
98
+ .iris-nav-semicircle {
99
+ background: rgba(255,255,255,0.08);
100
+ transition: background 200ms ease, transform 200ms ease;
101
+ }
102
+
103
+ .iris-nav-edge:hover .iris-nav-semicircle {
104
+ background: rgba(255,255,255,0.18);
105
+ }
106
+
107
+ /* Left / Right: tall half-circle, flat side flush with viewport edge */
108
+ .iris-nav-left {
109
+ grid-area: left;
110
+ justify-content: flex-start;
111
+ }
112
+
113
+ .iris-nav-left .iris-nav-semicircle {
114
+ width: 10px;
115
+ height: 48px;
116
+ border-radius: 0 10px 10px 0;
117
+ }
118
+
119
+ .iris-nav-right {
120
+ grid-area: right;
121
+ justify-content: flex-end;
122
+ }
123
+
124
+ .iris-nav-right .iris-nav-semicircle {
125
+ width: 10px;
126
+ height: 48px;
127
+ border-radius: 10px 0 0 10px;
128
+ }
129
+
130
+ /* Top / Bottom: wide half-circle, flat side flush with viewport edge */
131
+ .iris-nav-top {
132
+ grid-area: top;
133
+ align-items: flex-start;
134
+ }
135
+
136
+ .iris-nav-top .iris-nav-semicircle {
137
+ width: 48px;
138
+ height: 10px;
139
+ border-radius: 0 0 10px 10px;
140
+ }
141
+
142
+ .iris-nav-bottom {
143
+ grid-area: bottom;
144
+ align-items: flex-end;
145
+ }
146
+
147
+ .iris-nav-bottom .iris-nav-semicircle {
148
+ width: 48px;
149
+ height: 10px;
150
+ border-radius: 10px 10px 0 0;
151
+ }
152
+
153
+ /* Nav edge drag-over highlight */
154
+ .iris-nav-drag-over {
155
+ visibility: visible !important;
156
+ pointer-events: auto !important;
157
+ }
158
+
159
+ .iris-nav-drag-over .iris-nav-semicircle {
160
+ background: rgba(99, 102, 241, 0.6);
161
+ transform: scale(1.3);
162
+ }
163
+
164
+ /* Empty workspace placeholder */
165
+ .iris-empty-workspace {
166
+ display: flex;
167
+ align-items: center;
168
+ justify-content: center;
169
+ flex: 1;
170
+ color: rgba(255,255,255,0.2);
171
+ font-size: 24px;
172
+ font-weight: 300;
173
+ }
174
+
175
+ /* --- Grid viewport (camera-based navigation) --- */
176
+
177
+ .iris-grid-viewport {
178
+ --iris-grid-gap: 16px;
179
+ display: grid;
180
+ grid-template-columns: var(--iris-grid-gap) 1fr var(--iris-grid-gap);
181
+ grid-template-rows: var(--iris-grid-gap) 1fr var(--iris-grid-gap);
182
+ grid-template-areas:
183
+ ". top ."
184
+ "left center right"
185
+ ". bottom .";
186
+ flex: 1;
187
+ overflow: hidden;
188
+ min-width: 0;
189
+ min-height: 0;
190
+ }
191
+
192
+ .iris-grid-center {
193
+ grid-area: center;
194
+ position: relative;
195
+ min-height: 0;
196
+ min-width: 0;
197
+ }
198
+
199
+ .iris-grid-canvas {
200
+ position: absolute;
201
+ display: grid;
202
+ gap: var(--iris-grid-gap, 16px);
203
+ transition: transform 400ms cubic-bezier(0.22, 1, 0.36, 1);
204
+ }
205
+
206
+ .iris-grid-cell {
207
+ display: flex;
208
+ min-height: 0;
209
+ min-width: 0;
210
+ overflow: hidden;
211
+ border: 1px solid rgba(255,255,255,0.04);
212
+ }
213
+
214
+ .iris-grid-cell-active {
215
+ border-color: rgba(99, 102, 241, 0.3);
216
+ }
217
+
218
+ .iris-grid-zoomed .iris-grid-cell-active {
219
+ border-color: rgba(234, 179, 8, 0.6);
220
+ box-shadow: 0 0 24px rgba(234, 179, 8, 0.4), inset 0 0 12px rgba(234, 179, 8, 0.1);
221
+ }
222
+
223
+ /* Slide animations — directional based on navigation */
57
224
  @keyframes iris-slide-from-bottom {
58
225
  from { transform: translateY(80px); }
59
226
  to { transform: translateY(0); }
@@ -64,6 +231,37 @@
64
231
  to { transform: translateY(0); }
65
232
  }
66
233
 
234
+ @keyframes iris-slide-from-left {
235
+ from { transform: translateX(-80px); }
236
+ to { transform: translateX(0); }
237
+ }
238
+
239
+ @keyframes iris-slide-from-right {
240
+ from { transform: translateX(80px); }
241
+ to { transform: translateX(0); }
242
+ }
243
+
244
+ /* Exit animations — outgoing workspace slides away */
245
+ @keyframes iris-slide-out-left {
246
+ from { transform: translateX(0); opacity: 1; }
247
+ to { transform: translateX(-80px); opacity: 0; }
248
+ }
249
+
250
+ @keyframes iris-slide-out-right {
251
+ from { transform: translateX(0); opacity: 1; }
252
+ to { transform: translateX(80px); opacity: 0; }
253
+ }
254
+
255
+ @keyframes iris-slide-out-top {
256
+ from { transform: translateY(0); opacity: 1; }
257
+ to { transform: translateY(-80px); opacity: 0; }
258
+ }
259
+
260
+ @keyframes iris-slide-out-bottom {
261
+ from { transform: translateY(0); opacity: 1; }
262
+ to { transform: translateY(80px); opacity: 0; }
263
+ }
264
+
67
265
  /* --- Entity tile group (split container) --- */
68
266
 
69
267
  .iris-entity-tile-group {
@@ -73,12 +271,14 @@
73
271
  position: relative;
74
272
  min-height: 0;
75
273
  min-width: 0;
274
+ overflow: hidden;
76
275
  }
77
276
 
78
277
  .iris-entity-tile-group > div {
79
278
  transition: flex 200ms cubic-bezier(0.22, 1, 0.36, 1);
80
279
  min-height: 0;
81
280
  min-width: 0;
281
+ overflow: hidden;
82
282
  display: flex;
83
283
  }
84
284
 
@@ -110,6 +310,9 @@
110
310
  box-shadow 200ms ease;
111
311
  display: flex;
112
312
  flex-direction: column;
313
+ -webkit-touch-callout: none;
314
+ -webkit-user-select: none;
315
+ user-select: none;
113
316
  }
114
317
 
115
318
  .iris-entity-tile:hover {
@@ -126,14 +329,68 @@
126
329
  /* Placeholder — user can style unfocused tiles */
127
330
  }
128
331
 
129
- .iris-entity-tile.iris-entity-tile-grabbable {
332
+ /* --- Entity tile header --- */
333
+
334
+ .iris-entity-tile-header {
335
+ display: flex;
336
+ align-items: center;
337
+ gap: 8px;
338
+ padding: 6px 10px;
339
+ background: rgba(255,255,255,0.04);
340
+ border-bottom: 1px solid rgba(255,255,255,0.06);
130
341
  cursor: grab;
342
+ user-select: none;
343
+ -webkit-user-select: none;
344
+ -webkit-touch-callout: none;
345
+ flex-shrink: 0;
346
+ touch-action: none;
131
347
  }
132
348
 
133
- .iris-entity-tile.iris-entity-tile-grabbable:active {
349
+ .iris-entity-tile-header:active {
134
350
  cursor: grabbing;
135
351
  }
136
352
 
353
+ .iris-entity-tile-header-name {
354
+ font-size: 12px;
355
+ font-weight: 500;
356
+ color: rgba(255,255,255,0.7);
357
+ overflow: hidden;
358
+ text-overflow: ellipsis;
359
+ white-space: nowrap;
360
+ flex: 1;
361
+ }
362
+
363
+ .iris-entity-tile-header-close {
364
+ background: none;
365
+ border: none;
366
+ color: rgba(255,255,255,0.3);
367
+ font-size: 16px;
368
+ line-height: 1;
369
+ cursor: pointer;
370
+ padding: 0 2px;
371
+ transition: color 150ms ease;
372
+ flex-shrink: 0;
373
+ }
374
+
375
+ .iris-entity-tile-header-close:hover {
376
+ color: rgba(255,255,255,0.9);
377
+ }
378
+
379
+ .iris-entity-tile-content {
380
+ flex: 1;
381
+ overflow: auto;
382
+ min-height: 0;
383
+ min-width: 0;
384
+ }
385
+
386
+ .iris-entity-tile-fullscreen {
387
+ position: absolute !important;
388
+ inset: 0;
389
+ z-index: 50;
390
+ border-radius: 0;
391
+ flex: none !important;
392
+ }
393
+
137
394
  .iris-entity-tile.iris-dragging {
138
395
  opacity: 0.3;
139
396
  }
@@ -201,7 +458,7 @@
201
458
  }
202
459
 
203
460
  .iris-resizer:hover {
204
- background: rgba(99, 102, 241, 0.4);
461
+ background: transparent;
205
462
  }
206
463
 
207
464
  .iris-resizer.horizontal {
@@ -217,7 +474,28 @@
217
474
  }
218
475
 
219
476
  .iris-resizer.dragging {
220
- background: rgba(99, 102, 241, 0.5);
477
+ background: transparent;
478
+ }
479
+
480
+ /* Prevent all selection during resize */
481
+ body.iris-resizing,
482
+ body.iris-resizing * {
483
+ -webkit-user-select: none !important;
484
+ user-select: none !important;
485
+ -webkit-touch-callout: none !important;
486
+ cursor: inherit;
487
+ }
488
+
489
+ /* Touch: bigger hit area for resizer */
490
+ @media (pointer: coarse) {
491
+ .iris-resizer.horizontal {
492
+ width: 16px;
493
+ margin: 0 -8px;
494
+ }
495
+ .iris-resizer.vertical {
496
+ height: 16px;
497
+ margin: -8px 0;
498
+ }
221
499
  }
222
500
 
223
501
  /* --- Sidebar --- */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@p4ulcristian/iris-layout",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Tiling layout library for React — resizable splits, drag-drop rearrangement, multi-stage workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/iris-layout.js",