@aiquants/resize-panels 1.9.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -22
- package/dist/GlobalDebugOverlay-Cf3GOn2A.cjs +1 -0
- package/dist/{GlobalDebugOverlay-Do70T2l6.js → GlobalDebugOverlay-DQtUdNeF.js} +28 -28
- package/dist/debugOverlayStore-D7FT6zPE.js +135 -0
- package/dist/debugOverlayStore-DY09saU8.cjs +1 -0
- package/dist/index-DZ0itiBD.js +1299 -0
- package/dist/index-DqATP_BA.cjs +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -29
- package/dist/index.js +25 -13
- package/dist/src/GlobalDebugOverlay.d.ts.map +1 -0
- package/dist/src/Panel.d.ts +46 -0
- package/dist/src/Panel.d.ts.map +1 -0
- package/dist/src/PanelDebugInfo.d.ts +34 -0
- package/dist/src/PanelDebugInfo.d.ts.map +1 -0
- package/dist/src/PanelGroup.d.ts.map +1 -0
- package/dist/src/PanelResizeHandle.d.ts.map +1 -0
- package/dist/src/allocateLayout.d.ts +60 -0
- package/dist/src/allocateLayout.d.ts.map +1 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/{debugOverlayStore.d.ts → src/debugOverlayStore.d.ts} +10 -2
- package/dist/src/debugOverlayStore.d.ts.map +1 -0
- package/dist/src/hooks.d.ts +48 -0
- package/dist/src/hooks.d.ts.map +1 -0
- package/dist/src/index.d.ts +32 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/reducer.d.ts +49 -0
- package/dist/src/reducer.d.ts.map +1 -0
- package/dist/src/roundHalfToEven.d.ts.map +1 -0
- package/dist/{types.d.ts → src/types.d.ts} +164 -60
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils/simple-logger.d.ts.map +1 -0
- package/dist/src/utils.d.ts +164 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/styles/resize-panels.standalone.css +1 -1
- package/dist/tests/support/dom-harness.d.ts +89 -0
- package/dist/tests/support/dom-harness.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/GlobalDebugOverlay.tsx +3 -3
- package/src/Panel.tsx +203 -541
- package/src/PanelDebugInfo.tsx +52 -106
- package/src/PanelGroup.tsx +27 -42
- package/src/PanelResizeHandle.tsx +470 -509
- package/src/allocateLayout.ts +412 -0
- package/src/debugOverlayStore.ts +19 -15
- package/src/hooks.ts +187 -779
- package/src/index.ts +12 -3
- package/src/reducer.ts +364 -1126
- package/src/types.ts +149 -63
- package/src/utils.ts +205 -164
- package/dist/GlobalDebugOverlay-sEQN6exo.cjs +0 -1
- package/dist/GlobalDebugOverlay.d.ts.map +0 -1
- package/dist/Panel.d.ts +0 -7
- package/dist/Panel.d.ts.map +0 -1
- package/dist/PanelDebugInfo.d.ts +0 -26
- package/dist/PanelDebugInfo.d.ts.map +0 -1
- package/dist/PanelGroup.d.ts.map +0 -1
- package/dist/PanelResizeHandle.d.ts.map +0 -1
- package/dist/context.d.ts.map +0 -1
- package/dist/debugOverlayStore-Cntyxboe.js +0 -141
- package/dist/debugOverlayStore-Dkl-fHoa.cjs +0 -1
- package/dist/debugOverlayStore.d.ts.map +0 -1
- package/dist/hooks.d.ts +0 -45
- package/dist/hooks.d.ts.map +0 -1
- package/dist/index-B6YGX2DH.js +0 -2009
- package/dist/index-DssZUxGw.cjs +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/reducer.d.ts +0 -39
- package/dist/reducer.d.ts.map +0 -1
- package/dist/roundHalfToEven.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/simple-logger.d.ts.map +0 -1
- package/dist/utils.d.ts +0 -61
- package/dist/utils.d.ts.map +0 -1
- /package/dist/{GlobalDebugOverlay.d.ts → src/GlobalDebugOverlay.d.ts} +0 -0
- /package/dist/{PanelGroup.d.ts → src/PanelGroup.d.ts} +0 -0
- /package/dist/{PanelResizeHandle.d.ts → src/PanelResizeHandle.d.ts} +0 -0
- /package/dist/{context.d.ts → src/context.d.ts} +0 -0
- /package/dist/{roundHalfToEven.d.ts → src/roundHalfToEven.d.ts} +0 -0
- /package/dist/{utils → src/utils}/simple-logger.d.ts +0 -0
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import { CSSProperties, ReactNode } from 'react';
|
|
1
|
+
import { CSSProperties, HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
/**
|
|
3
|
-
* Pixel threshold
|
|
4
|
-
*
|
|
3
|
+
* Pixel threshold under which a panel is treated as visually closed.
|
|
4
|
+
* パネルが見た目上閉じていると扱われるピクセル閾値。
|
|
5
5
|
*/
|
|
6
6
|
export declare const PANEL_SNAP_THRESHOLD = 12;
|
|
7
|
+
/**
|
|
8
|
+
* Numeric tolerance for layout arithmetic, in pixels.
|
|
9
|
+
* レイアウト演算の許容誤差 (px)。
|
|
10
|
+
*
|
|
11
|
+
* Sizes are IEEE-754 doubles produced by divisions, so exact comparisons would freeze drags on a 1 ulp
|
|
12
|
+
* difference. Everything below this tolerance is treated as equality.
|
|
13
|
+
* サイズは除算由来の倍精度値であり、厳密比較では 1 ulp の差でドラッグが凍結する。この許容値未満は同値とみなす。
|
|
14
|
+
*/
|
|
15
|
+
export declare const PANEL_ALLOCATION_EPSILON = 0.000001;
|
|
7
16
|
/**
|
|
8
17
|
* Default thickness in pixels for the resize handle interactive area.
|
|
9
18
|
* リサイズハンドルのインタラクティブ領域のデフォルト厚み (px)。
|
|
@@ -40,8 +49,8 @@ export declare const PANEL_INDICATOR_BAR_LENGTH_HORIZONTAL = 32;
|
|
|
40
49
|
*/
|
|
41
50
|
export declare const PANEL_INDICATOR_BAR_LENGTH_VERTICAL = 64;
|
|
42
51
|
/**
|
|
43
|
-
* Spacing in pixels between visual
|
|
44
|
-
*
|
|
52
|
+
* Spacing in pixels between visual indicators of handles that share a boundary.
|
|
53
|
+
* 境界を共有するハンドルの視覚インジケーター同士のピクセル間隔。
|
|
45
54
|
*/
|
|
46
55
|
export declare const PANEL_VISIBLE_INDICATOR_SPACING = 8;
|
|
47
56
|
/**
|
|
@@ -79,21 +88,6 @@ export declare const PANEL_EXPAND_THRESHOLD_MAX = 20;
|
|
|
79
88
|
* ハンドルが可視と判断されるために必要な最小厚み。
|
|
80
89
|
*/
|
|
81
90
|
export declare const PANEL_HANDLE_VISIBILITY_THRESHOLD = 0.05;
|
|
82
|
-
/**
|
|
83
|
-
* Retry intervals in milliseconds when awaiting layout stabilization.
|
|
84
|
-
* レイアウトの安定化を待機するときに使用するミリ秒単位の再試行間隔。
|
|
85
|
-
*/
|
|
86
|
-
export declare const PANEL_RESIZE_RETRY_INTERVALS: readonly [10, 50, 100, 200, 300, 500, 800];
|
|
87
|
-
/**
|
|
88
|
-
* Tolerance used to decide whether pixel-based panel adjustments are significant.
|
|
89
|
-
* ピクセル基準パネルの補正を有効とみなすための誤差許容値。
|
|
90
|
-
*/
|
|
91
|
-
export declare const PANEL_PIXEL_MUTATION_TOLERANCE = 0;
|
|
92
|
-
/**
|
|
93
|
-
* Minimum pixel threshold used when clamping snap calculations.
|
|
94
|
-
* スナップ計算を補正する際に用いる最小ピクセル閾値。
|
|
95
|
-
*/
|
|
96
|
-
export declare const PANEL_MIN_SNAP_THRESHOLD = 0;
|
|
97
91
|
/**
|
|
98
92
|
* Layout direction of panels
|
|
99
93
|
* パネルのレイアウト方向
|
|
@@ -143,12 +137,18 @@ export type CollapsibleConfig = {
|
|
|
143
137
|
from: CollapsibleDirection;
|
|
144
138
|
};
|
|
145
139
|
/**
|
|
146
|
-
* Axis-aligned container measurement
|
|
147
|
-
*
|
|
140
|
+
* Axis-aligned container measurement.
|
|
141
|
+
* 軸方向のコンテナ計測値。
|
|
142
|
+
*
|
|
143
|
+
* `content` is what every layout number is relative to: percentage sizes resolve against it and the
|
|
144
|
+
* allocator fills exactly this length. `border` is the same box plus padding and borders, used only when a
|
|
145
|
+
* caller needs the element's outer footprint.
|
|
146
|
+
* すべてのレイアウト数値の基準は `content`: パーセンテージ指定はこの長さに解決され、配分器はこの長さを満たす。
|
|
147
|
+
* `border` は同じ軸のパディング・枠線を含む外形で、要素の外寸が必要な場合にのみ使う。
|
|
148
148
|
*/
|
|
149
149
|
export type ContainerAxisMeasurement = {
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
content: number;
|
|
151
|
+
border: number;
|
|
152
152
|
};
|
|
153
153
|
/**
|
|
154
154
|
* Reason code for layout constraint violations.
|
|
@@ -161,58 +161,148 @@ export type LayoutConstraintViolationReason = "minimum-exceeded" | "maximum-insu
|
|
|
161
161
|
*/
|
|
162
162
|
export type LayoutConstraintViolation = {
|
|
163
163
|
reason: LayoutConstraintViolationReason;
|
|
164
|
-
totalMinimumSize: number
|
|
165
|
-
totalMaximumSize: number
|
|
164
|
+
totalMinimumSize: number;
|
|
165
|
+
totalMaximumSize: number;
|
|
166
166
|
availableContainerSize: number;
|
|
167
167
|
};
|
|
168
168
|
/**
|
|
169
|
-
*
|
|
170
|
-
*
|
|
169
|
+
* Canonical layout state of a single panel.
|
|
170
|
+
* 単一パネルの正準レイアウト状態。
|
|
171
|
+
*
|
|
172
|
+
* The state separates three roles and never stores the same quantity twice: configuration comes from the
|
|
173
|
+
* component's props, the preference is what the user asked for (a share of the container for flexible
|
|
174
|
+
* panels, an absolute length for pixel panels), and `size` is the allocator's answer for the current
|
|
175
|
+
* container. Everything else — the rendered flex basis, the handle position, the percentage shown in the
|
|
176
|
+
* debug overlay — is derived from those.
|
|
177
|
+
* 状態は 3 つの役割に分かれ、同じ量を二重に持たない: 構成はコンポーネントの props 由来、希望値は利用者の要求
|
|
178
|
+
* (柔軟パネルはコンテナ比、ピクセルパネルは絶対長)、`size` は現在のコンテナに対する配分器の答え。描画される
|
|
179
|
+
* flex basis・ハンドル位置・デバッグ表示の割合は、すべてここから導出される。
|
|
171
180
|
*/
|
|
172
181
|
export interface PanelLayoutData {
|
|
173
182
|
id: string;
|
|
174
|
-
|
|
175
|
-
percentageSize?: number;
|
|
176
|
-
preferredPercentageSize?: number;
|
|
177
|
-
preferredPixelSize?: number;
|
|
183
|
+
/** Which preference field drives this panel. どちらの希望値でサイズが決まるか。 */
|
|
178
184
|
sizeUnit: SizeUnit;
|
|
179
|
-
|
|
185
|
+
/** Allocated length in pixels for the current container. 現在のコンテナに対する配分結果 (px)。 */
|
|
186
|
+
size: number;
|
|
187
|
+
/**
|
|
188
|
+
* Ratio weight of a flexible panel, expressed as a share of the container in percent.
|
|
189
|
+
* 柔軟パネルの重み (コンテナ比 %)。
|
|
190
|
+
*
|
|
191
|
+
* Only the ratio between panels matters — unless the panel declares `flexAdjustPriority`, which turns the
|
|
192
|
+
* same number into an absolute claim on that share of the container.
|
|
193
|
+
* 意味を持つのはパネル間の比だけ。ただし `flexAdjustPriority` を宣言したパネルでは、同じ数値が
|
|
194
|
+
* 「コンテナのその割合」という絶対的な要求になる。
|
|
195
|
+
*/
|
|
196
|
+
preferredPercentageSize: number;
|
|
197
|
+
/** Requested absolute length of a pixel panel. ピクセルパネルの希望絶対長 (px)。 */
|
|
198
|
+
preferredPixelSize: number;
|
|
180
199
|
minSize?: FlexibleSize;
|
|
181
200
|
maxSize?: FlexibleSize;
|
|
182
|
-
autoMinSize?: FlexibleSize;
|
|
183
201
|
collapseFromStart: boolean;
|
|
184
202
|
collapseFromEnd: boolean;
|
|
185
|
-
|
|
203
|
+
collapsed: boolean;
|
|
204
|
+
collapsedByDirection: PanelCollapseDirection | null;
|
|
186
205
|
/**
|
|
187
|
-
*
|
|
188
|
-
*
|
|
206
|
+
* Preference captured when the panel collapsed, restored verbatim on expand.
|
|
207
|
+
* 折りたたみ時に退避し、展開時にそのまま復元する希望値。
|
|
189
208
|
*/
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
209
|
+
preferenceBeforeCollapse: number;
|
|
210
|
+
/**
|
|
211
|
+
* Preference the component last authored through its props, used to tell a prop change from a re-registration.
|
|
212
|
+
* コンポーネントが props で最後に宣言した希望値。prop 変更と単なる再登録を区別するために保持。
|
|
213
|
+
*/
|
|
214
|
+
authoredPreference: number;
|
|
215
|
+
/** Serving order among pixel panels, higher first. ピクセルパネル間の充当順位 (大きいほど先)。 */
|
|
196
216
|
pixelAdjustPriority?: number;
|
|
217
|
+
/**
|
|
218
|
+
* Serving order among flexible panels, higher first; absent means pure ratio sharing.
|
|
219
|
+
* 柔軟パネル間の充当順位 (大きいほど先)。未指定なら純粋な比例配分。
|
|
220
|
+
*
|
|
221
|
+
* Declaring it changes how `preferredPercentageSize` is read: the panel claims that share of the container
|
|
222
|
+
* before the ratio panels divide what is left.
|
|
223
|
+
* 宣言すると `preferredPercentageSize` の読み方が変わり、比例配分のパネルが残りを分ける前に
|
|
224
|
+
* コンテナのその割合を確保する。
|
|
225
|
+
*/
|
|
197
226
|
flexAdjustPriority?: number;
|
|
198
|
-
measuredPixelSize?: number;
|
|
199
|
-
measuredPercentageSize?: number;
|
|
200
|
-
measuredPixelSizeBeforeCollapse?: number;
|
|
201
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Layout state of one panel group: the container it was measured against, its panels in DOM order, and
|
|
230
|
+
* whether the panels' constraints can be satisfied at that size.
|
|
231
|
+
* パネルグループのレイアウト状態: 計測対象のコンテナ長・DOM 順のパネル一覧・制約充足可否。
|
|
232
|
+
*/
|
|
233
|
+
export interface PanelGroupLayoutState {
|
|
234
|
+
/** Content-box length of the group along its axis; 0 until the first measurement. 軸方向の内容領域長 (未計測は 0)。 */
|
|
235
|
+
containerSize: number;
|
|
236
|
+
panels: PanelLayoutData[];
|
|
237
|
+
violation: LayoutConstraintViolation | null;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Configuration and preference a panel publishes when it registers with its group.
|
|
241
|
+
* パネルがグループへ登録する際に公開する構成と希望値。
|
|
242
|
+
*/
|
|
243
|
+
export type PanelRegistration = Omit<PanelLayoutData, "size" | "collapsedByDirection" | "preferenceBeforeCollapse" | "authoredPreference">;
|
|
244
|
+
/**
|
|
245
|
+
* One panel's persisted length, kept with its identifier so a stored layout can never be applied to a
|
|
246
|
+
* different set of panels.
|
|
247
|
+
* 保存されたパネル 1 枚分の長さ。別構成のパネルへ誤って適用されないよう識別子を伴う。
|
|
248
|
+
*/
|
|
249
|
+
export type PersistedPanelSize = {
|
|
250
|
+
id: string;
|
|
251
|
+
size: number;
|
|
252
|
+
/** Whether the panel was collapsed when the layout was written. 保存時に折りたたまれていたか。 */
|
|
253
|
+
collapsed: boolean;
|
|
254
|
+
};
|
|
255
|
+
/**
|
|
256
|
+
* Actions accepted by the panel group reducer.
|
|
257
|
+
* パネルグループのリデューサーが受け付けるアクション。
|
|
258
|
+
*/
|
|
259
|
+
export type PanelAction = {
|
|
260
|
+
type: "SET_CONTAINER_SIZE";
|
|
261
|
+
containerSize: number;
|
|
262
|
+
} | {
|
|
263
|
+
type: "REGISTER_PANEL";
|
|
264
|
+
panel: PanelRegistration;
|
|
265
|
+
} | {
|
|
266
|
+
type: "UNREGISTER_PANEL";
|
|
267
|
+
id: string;
|
|
268
|
+
} | {
|
|
269
|
+
type: "REORDER_PANELS";
|
|
270
|
+
ids: string[];
|
|
271
|
+
} | {
|
|
272
|
+
type: "RESIZE_PANELS";
|
|
273
|
+
startId: string;
|
|
274
|
+
endId: string;
|
|
275
|
+
startSize: number;
|
|
276
|
+
} | {
|
|
277
|
+
type: "COLLAPSE_PANEL";
|
|
278
|
+
id: string;
|
|
279
|
+
from: PanelCollapseDirection;
|
|
280
|
+
} | {
|
|
281
|
+
type: "EXPAND_PANEL";
|
|
282
|
+
id: string;
|
|
283
|
+
from: PanelCollapseDirection;
|
|
284
|
+
targetSize?: number;
|
|
285
|
+
} | {
|
|
286
|
+
type: "RESTORE_LAYOUT";
|
|
287
|
+
entries: PersistedPanelSize[];
|
|
288
|
+
};
|
|
202
289
|
/**
|
|
203
290
|
* Props for the Panel component
|
|
204
291
|
* Panel コンポーネントのプロパティ
|
|
205
292
|
*/
|
|
206
|
-
export interface PanelProps {
|
|
293
|
+
export interface PanelProps extends Omit<HTMLAttributes<HTMLDivElement>, "id" | "children" | "className" | "style" | "aria-hidden"> {
|
|
207
294
|
id?: string;
|
|
295
|
+
/**
|
|
296
|
+
* Initial size. A percentage (or bare number) makes the panel flexible, pixels make it fixed.
|
|
297
|
+
* 初期サイズ。パーセンテージ (数値のみの指定を含む) なら柔軟パネル、ピクセルなら固定パネル。
|
|
298
|
+
* @default { value: 50, unit: "percentage" }
|
|
299
|
+
*/
|
|
208
300
|
defaultSize?: FlexibleSize;
|
|
209
301
|
minSize?: FlexibleSize;
|
|
210
302
|
maxSize?: FlexibleSize;
|
|
211
|
-
autoMinSize?: FlexibleSize;
|
|
212
303
|
className?: string;
|
|
213
304
|
style?: CSSProperties;
|
|
214
305
|
children?: ReactNode;
|
|
215
|
-
order?: number;
|
|
216
306
|
collapsible?: CollapsibleConfig;
|
|
217
307
|
defaultCollapsed?: boolean;
|
|
218
308
|
pixelAdjustPriority?: number;
|
|
@@ -223,12 +313,11 @@ export interface PanelProps {
|
|
|
223
313
|
* Props for the PanelGroup component
|
|
224
314
|
* PanelGroup コンポーネントのプロパティ
|
|
225
315
|
*/
|
|
226
|
-
export interface PanelGroupProps {
|
|
316
|
+
export interface PanelGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "id" | "children" | "className" | "style"> {
|
|
227
317
|
id?: string;
|
|
228
318
|
direction: PanelDirection;
|
|
229
|
-
storageKey?: string;
|
|
230
319
|
className?: string;
|
|
231
|
-
style?:
|
|
320
|
+
style?: CSSProperties;
|
|
232
321
|
children?: ReactNode;
|
|
233
322
|
showDebugInfo?: boolean;
|
|
234
323
|
onLayout?: (panelSizes: number[]) => void;
|
|
@@ -240,16 +329,25 @@ export interface PanelGroupProps {
|
|
|
240
329
|
*/
|
|
241
330
|
export interface PanelGroupContextValue {
|
|
242
331
|
direction: PanelDirection;
|
|
243
|
-
registerPanel: (panel:
|
|
332
|
+
registerPanel: (panel: PanelRegistration) => void;
|
|
244
333
|
unregisterPanel: (id: string) => void;
|
|
245
334
|
getPanel: (id: string) => PanelLayoutData | undefined;
|
|
246
335
|
panels: PanelLayoutData[];
|
|
247
|
-
|
|
336
|
+
/** Content-box length of the group along its axis. グループ軸方向の内容領域長。 */
|
|
337
|
+
containerSize: number;
|
|
338
|
+
/**
|
|
339
|
+
* Key that changes whenever the document order of the group's panels and handle anchors changes.
|
|
340
|
+
* グループのパネルとハンドルのアンカーの文書順が変わるたびに変化する鍵。
|
|
341
|
+
*
|
|
342
|
+
* A handle that moves to another boundary leaves the panel id sequence untouched, so the panels alone
|
|
343
|
+
* cannot tell a handle that its neighbours changed.
|
|
344
|
+
* ハンドルが別の境界へ移ってもパネルの id 列は変わらないため、パネルだけではハンドルへ隣の変化を伝えられない。
|
|
345
|
+
*/
|
|
346
|
+
layoutOrderKey: string;
|
|
248
347
|
showDebugInfo: boolean;
|
|
249
|
-
resizePanels: (
|
|
348
|
+
resizePanels: (startId: string, endId: string, startSize: number) => void;
|
|
250
349
|
collapsePanel: (id: string, from: PanelCollapseDirection) => void;
|
|
251
350
|
expandPanel: (id: string, from: PanelCollapseDirection, targetSize?: number) => void;
|
|
252
|
-
containerSize: ContainerSize;
|
|
253
351
|
reportPanelMeasurement: (id: string, measurement: PanelMeasurement | null) => void;
|
|
254
352
|
panelMeasurements: Record<string, PanelMeasurement>;
|
|
255
353
|
reportHandleMeasurement: (id: string, measurement: ResizeHandleLayoutData | null) => void;
|
|
@@ -308,12 +406,17 @@ export interface PanelResizeHandleIndicatorConfig {
|
|
|
308
406
|
* Props for the PanelResizeHandle component
|
|
309
407
|
* PanelResizeHandle コンポーネントのプロパティ
|
|
310
408
|
*/
|
|
311
|
-
|
|
409
|
+
/**
|
|
410
|
+
* ARIA attributes the handle computes from the layout; a consumer value would be silently discarded.
|
|
411
|
+
* ハンドルがレイアウトから算出する ARIA 属性 (利用者の指定は黙って捨てられるため受け付けない)。
|
|
412
|
+
*/
|
|
413
|
+
type OwnedSeparatorAria = "role" | "aria-orientation" | "aria-valuenow" | "aria-valuemin" | "aria-valuemax" | "aria-disabled" | "aria-hidden";
|
|
414
|
+
export interface PanelResizeHandleProps extends Omit<HTMLAttributes<HTMLButtonElement>, "id" | "children" | "className" | "style" | "title" | OwnedSeparatorAria> {
|
|
312
415
|
id?: string;
|
|
313
416
|
disabled?: boolean;
|
|
314
417
|
onDragging?: (isDragging: boolean) => void;
|
|
315
418
|
className?: string;
|
|
316
|
-
style?:
|
|
419
|
+
style?: CSSProperties;
|
|
317
420
|
children?: ReactNode;
|
|
318
421
|
/**
|
|
319
422
|
* Primary axis thickness of the handle's interactive area in pixels.
|
|
@@ -371,7 +474,8 @@ export interface ResizeHandleLayoutData {
|
|
|
371
474
|
thickness: number;
|
|
372
475
|
direction: PanelDirection;
|
|
373
476
|
visible: boolean;
|
|
374
|
-
startPanelId
|
|
375
|
-
endPanelId
|
|
477
|
+
startPanelId: string | null;
|
|
478
|
+
endPanelId: string | null;
|
|
376
479
|
}
|
|
480
|
+
export {};
|
|
377
481
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-logger.d.ts","sourceRoot":"","sources":["../../../src/utils/simple-logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,oBAAY,QAAQ;IAChB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;CACX;AAED;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACpB,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC5D,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC3D,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC3D,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CAC/D;AAED;;;;GAIG;AACH,qBAAa,MAAO,YAAW,OAAO;IAClC,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,IAAI,CAAS;IAErB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAErD;;;;;OAKG;gBACS,KAAK,GAAE,QAAwB,EAAE,MAAM,GAAE,MAA0B,EAAE,IAAI,GAAE,OAAiB;IAOxG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuD;IAE9E;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAMtC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAM7C;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAItC;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMtC;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIpC,OAAO,CAAC,aAAa;IAOrB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI;IAInE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI;IAM5D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI;IAIlE,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI;IAM3D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI;IAIlE,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI;IAM3D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI;IAInE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI;CAK/D"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { ContainerAxisMeasurement, FlexibleSize, PanelDirection, PersistedPanelSize, SizeConfig, SizeUnit } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Number of significant fractional digits to preserve when rounding percentage-based sizes.
|
|
4
|
+
* パーセンテージサイズの丸めで保持する有効小数桁数。
|
|
5
|
+
*/
|
|
6
|
+
export declare const PERCENTAGE_DIGITS = 6;
|
|
7
|
+
/**
|
|
8
|
+
* Convert a pixel measurement to a percentage of the container using banker's rounding.
|
|
9
|
+
* ピクセル寸法をバンカーズラウンディングでコンテナ比率のパーセンテージへ変換する。
|
|
10
|
+
*
|
|
11
|
+
* @param size - Length in pixels / 長さ (px)
|
|
12
|
+
* @param base - Container length the percentage is relative to / 基準となるコンテナ長
|
|
13
|
+
* @returns Percentage of the container, 0 when the base is not positive / コンテナ比 (%)、基準が非正なら 0
|
|
14
|
+
*/
|
|
15
|
+
export declare const toRoundedPercentage: (size: number, base: number) => number;
|
|
16
|
+
/**
|
|
17
|
+
* Translate a percentage-based size back into pixels relative to the container.
|
|
18
|
+
* パーセンテージ指定のサイズをコンテナ基準のピクセル値へ変換する。
|
|
19
|
+
*
|
|
20
|
+
* @param percentage - Share of the container in percent / コンテナ比 (%)
|
|
21
|
+
* @param base - Container length the percentage is relative to / 基準となるコンテナ長
|
|
22
|
+
* @returns Length in pixels / 長さ (px)
|
|
23
|
+
*/
|
|
24
|
+
export declare const percentageToPixels: (percentage: number, base: number) => number;
|
|
25
|
+
/**
|
|
26
|
+
* Normalize a flexible size into a size configuration object.
|
|
27
|
+
* 柔軟なサイズ指定をサイズ設定オブジェクトへ正規化する。
|
|
28
|
+
*
|
|
29
|
+
* @param size - Author-provided size / 利用者が指定したサイズ
|
|
30
|
+
* @param defaultUnit - Unit applied to bare numbers / 数値のみの指定に適用する単位
|
|
31
|
+
* @returns Normalized configuration, or undefined when nothing was provided / 正規化後の設定、未指定なら undefined
|
|
32
|
+
*/
|
|
33
|
+
export declare const normalizeSizeConfig: (size: FlexibleSize | undefined, defaultUnit?: SizeUnit) => SizeConfig | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Convert flexible size constraints into pixel values based on container size.
|
|
36
|
+
* 柔軟サイズ制約をコンテナサイズ基準のピクセル値へ変換する。
|
|
37
|
+
*
|
|
38
|
+
* @param size - Constraint to resolve; bare numbers are percentages / 解決する制約 (数値のみの指定はパーセンテージ)
|
|
39
|
+
* @param defaultValue - Value used when the constraint is absent / 制約が無い場合の値
|
|
40
|
+
* @param containerSize - Container content-box length / コンテナ内容領域長
|
|
41
|
+
* @returns Constraint in pixels / ピクセル換算した制約
|
|
42
|
+
*/
|
|
43
|
+
export declare const getConstraintInPixels: (size: FlexibleSize | undefined, defaultValue: number, containerSize: number) => number;
|
|
44
|
+
/**
|
|
45
|
+
* Clamp a numeric value between the provided bounds.
|
|
46
|
+
* 数値を指定した範囲に収めるためのクリッピング処理。
|
|
47
|
+
*
|
|
48
|
+
* @param value - Value to clamp / 収める値
|
|
49
|
+
* @param min - Lower bound / 下限
|
|
50
|
+
* @param max - Upper bound / 上限
|
|
51
|
+
* @returns Clamped value / 範囲内へ収めた値
|
|
52
|
+
*/
|
|
53
|
+
export declare const clamp: (value: number, min: number, max: number) => number;
|
|
54
|
+
/**
|
|
55
|
+
* Derive a snap-to-zero threshold from the container axis length using shared heuristics.
|
|
56
|
+
* 共通ヒューリスティクスに基づきコンテナ軸長からゼロスナップ閾値を算出する。
|
|
57
|
+
*
|
|
58
|
+
* @param axisSize - Container content-box length along the axis / 軸方向のコンテナ内容領域長
|
|
59
|
+
* @returns Threshold in pixels below which a panel snaps closed / 閉じたとみなすピクセル閾値
|
|
60
|
+
*/
|
|
61
|
+
export declare const calculateSnapThreshold: (axisSize: number) => number;
|
|
62
|
+
/**
|
|
63
|
+
* Measure a container along one axis, returning its content-box and border-box lengths.
|
|
64
|
+
* 指定軸でコンテナを計測し、内容領域長と境界領域長を返す処理。
|
|
65
|
+
*
|
|
66
|
+
* The content box is the authority for every layout number in this package: a panel's `flex-basis` resolves
|
|
67
|
+
* against it, so the allocator must fill exactly this length for the rendered geometry and the reducer state
|
|
68
|
+
* to agree. The measurement is therefore taken in LAYOUT pixels — `getBoundingClientRect` reports the visual
|
|
69
|
+
* rect, so a scaled ancestor would otherwise make the group allocate a container it does not have.
|
|
70
|
+
* このパッケージのレイアウト数値の基準は内容領域である。パネルの `flex-basis` はこの領域に解決されるため、
|
|
71
|
+
* 描画結果とリデューサー状態を一致させるには配分器がこの長さを満たす必要がある。計測は**レイアウトピクセル**で
|
|
72
|
+
* 行う: `getBoundingClientRect` は視覚上の矩形を返すため、拡大縮小された祖先の下では存在しない長さを配ってしまう。
|
|
73
|
+
*
|
|
74
|
+
* @param element - Element to measure / 計測対象の要素
|
|
75
|
+
* @param direction - Axis to measure along / 計測する軸
|
|
76
|
+
* @param entry - Observation that triggered the measurement, when it came from a ResizeObserver / 計測契機となった観測結果
|
|
77
|
+
* @returns Content-box and border-box lengths in pixels / 内容領域長と境界領域長 (px)
|
|
78
|
+
*/
|
|
79
|
+
export declare const getContainerSize: (element: HTMLElement, direction: PanelDirection, entry?: ResizeObserverEntry) => ContainerAxisMeasurement;
|
|
80
|
+
/**
|
|
81
|
+
* Selector that matches the elements a group lays out: its panels and its handle anchors.
|
|
82
|
+
* グループが配置する要素 (パネルとハンドルのアンカー) に一致するセレクタ。
|
|
83
|
+
*/
|
|
84
|
+
export declare const LAYOUT_ELEMENT_SELECTOR = "[data-panel-id], [data-resize-handle-anchor]";
|
|
85
|
+
/**
|
|
86
|
+
* Resolve the innermost panel group that owns an element.
|
|
87
|
+
* ある要素を所有する最も内側のパネルグループを解決する処理。
|
|
88
|
+
*
|
|
89
|
+
* The owner is never simply the parent: a wrapper element (including `display: contents`, which flex layout
|
|
90
|
+
* flattens away) sits between the group and its panels without changing the geometry, and nested groups make
|
|
91
|
+
* "the closest group" the only answer that is right in both directions.
|
|
92
|
+
* 所有者は単なる親要素ではない。中間要素 (フレックスレイアウトが畳む `display: contents` を含む) は幾何を
|
|
93
|
+
* 変えずにグループとパネルの間へ入り込み、入れ子グループもあるため「最も近いグループ」だけが正解となる。
|
|
94
|
+
*
|
|
95
|
+
* @param element - Element to resolve the owner for / 所有者を解決する対象の要素
|
|
96
|
+
* @returns Owning group element, or null when the element is outside every group / 所有するグループ要素、どのグループにも属さないなら null
|
|
97
|
+
*/
|
|
98
|
+
export declare const findOwningGroup: (element: HTMLElement | null | undefined) => HTMLElement | null;
|
|
99
|
+
/**
|
|
100
|
+
* Collect the panels and handle anchors a group owns, in document order.
|
|
101
|
+
* グループが所有するパネルとハンドルのアンカーを、文書順で収集する処理。
|
|
102
|
+
*
|
|
103
|
+
* Direct children are not enough: a wrapper (including `display: contents`, which flex layout flattens away)
|
|
104
|
+
* leaves the geometry intact while hiding the panels from a sibling scan, and the handle would silently lose
|
|
105
|
+
* its neighbours.
|
|
106
|
+
* 直下の子だけでは足りない。中間要素 (フレックスレイアウトが畳む `display: contents` を含む) があると幾何は
|
|
107
|
+
* 保たれたままパネルが兄弟走査から消え、ハンドルが隣接パネルを見失う。
|
|
108
|
+
*
|
|
109
|
+
* @param group - Group element / グループ要素
|
|
110
|
+
* @returns Owned panel and anchor elements in document order / 所有するパネル・アンカー要素 (文書順)
|
|
111
|
+
*/
|
|
112
|
+
export declare const getGroupLayoutElements: (group: HTMLElement) => HTMLElement[];
|
|
113
|
+
/**
|
|
114
|
+
* Report whether a DOM mutation touched an element the group lays out.
|
|
115
|
+
* DOM の変更がグループの配置要素に触れたかどうかを判定する処理。
|
|
116
|
+
*
|
|
117
|
+
* Content inside a panel changes constantly (a virtualised list recycles rows every frame), so a group-wide
|
|
118
|
+
* rescan on every mutation costs time proportional to the whole subtree for changes that can never move a
|
|
119
|
+
* panel. Only additions and removals that carry a layout element can.
|
|
120
|
+
* パネルの内容は絶え間なく変わる (仮想化リストは毎フレーム行を入れ替える) ため、変更のたびにグループ全体を
|
|
121
|
+
* 走査すると、パネルを動かしようのない変更に対して部分木全体に比例した時間を払う。配置要素を含む
|
|
122
|
+
* 追加・削除だけがパネルを動かしうる。
|
|
123
|
+
*
|
|
124
|
+
* @param records - Mutation records delivered by the observer / オブザーバーが届けた変更記録
|
|
125
|
+
* @returns True when at least one record added or removed a layout element / 配置要素の追加・削除が 1 件でもあれば true
|
|
126
|
+
*/
|
|
127
|
+
export declare const touchesLayoutElements: (records: ReadonlyArray<MutationRecord>) => boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Ratio between visual pixels (pointer coordinates) and layout pixels (the lengths the allocator hands out).
|
|
130
|
+
* 視覚ピクセル (ポインタ座標) とレイアウトピクセル (配分器が配る長さ) の比。
|
|
131
|
+
*
|
|
132
|
+
* A transformed ancestor scales pointer coordinates but not the lengths the layout is computed in, so a drag
|
|
133
|
+
* delta read straight from the pointer moves the boundary by `travel × scale` instead of `travel` — the grab
|
|
134
|
+
* point slides out from under the cursor, and the error grows without bound as the gesture continues.
|
|
135
|
+
* 変形された祖先の下ではポインタ座標だけが拡大縮小され、レイアウトが計算される長さは変わらない。
|
|
136
|
+
* ポインタの変位をそのまま使うと境界は `移動量 × 倍率` しか動かず、掴んだ点がカーソルから滑り出し、
|
|
137
|
+
* その誤差はジェスチャーが続く限り増え続ける。
|
|
138
|
+
*
|
|
139
|
+
* @param element - Element whose box is compared in both spaces / 双方の空間で矩形を比べる要素
|
|
140
|
+
* @param direction - Axis to measure along / 計測する軸
|
|
141
|
+
* @returns Visual length divided by layout length, 1 when either is unavailable / 視覚長 ÷ レイアウト長 (いずれか不明なら 1)
|
|
142
|
+
*/
|
|
143
|
+
export declare const getVisualScale: (element: HTMLElement, direction: PanelDirection) => number;
|
|
144
|
+
/**
|
|
145
|
+
* Persist a panel layout to local storage.
|
|
146
|
+
* パネルレイアウトをローカルストレージへ保存する。
|
|
147
|
+
*
|
|
148
|
+
* @param id - Auto-save identifier / 自動保存の識別子
|
|
149
|
+
* @param entries - Panel lengths with their identifiers, in DOM order / DOM 順の識別子つきパネル長
|
|
150
|
+
*/
|
|
151
|
+
export declare const saveLayout: (id: string, entries: PersistedPanelSize[]) => void;
|
|
152
|
+
/**
|
|
153
|
+
* Restore a panel layout from local storage.
|
|
154
|
+
* パネルレイアウトをローカルストレージから復元する。
|
|
155
|
+
*
|
|
156
|
+
* A stored layout is only usable when every entry names the panel it belongs to, so a payload written by a
|
|
157
|
+
* different panel set is rejected instead of being applied by position.
|
|
158
|
+
* 保存レイアウトは各項目が所属パネルを名指ししている場合にだけ利用できる。別構成が書いた内容は位置で当てはめず拒否する。
|
|
159
|
+
*
|
|
160
|
+
* @param id - Auto-save identifier / 自動保存の識別子
|
|
161
|
+
* @returns Stored layout, or null when nothing usable is stored / 保存済みレイアウト、利用できなければ null
|
|
162
|
+
*/
|
|
163
|
+
export declare const loadLayout: (id: string) => PersistedPanelSize[] | null;
|
|
164
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,YAAY,EAAsF,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAE5O;;;GAGG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAElC;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,MAKhE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,YAAY,MAAM,EAAE,MAAM,MAAM,KAAG,MAKrE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,YAAY,GAAG,SAAS,EAAE,cAAa,QAAuB,KAAG,UAAU,GAAG,SAQvH,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,YAAY,GAAG,SAAS,EAAE,cAAc,MAAM,EAAE,eAAe,MAAM,KAAG,MAWnH,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAE/D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,KAAG,MAKzD,CAAA;AAcD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,EAAE,WAAW,cAAc,EAAE,QAAQ,mBAAmB,KAAG,wBAgB/G,CAAA;AAQD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,iDAAiD,CAAA;AAQrF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,WAAW,GAAG,IAAI,GAAG,SAAS,KAAG,WAAW,GAAG,IAA6D,CAAA;AAErJ;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,WAAW,KAAG,WAAW,EASjE,CAAA;AAEN;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,aAAa,CAAC,cAAc,CAAC,KAAG,OAa9E,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,EAAE,WAAW,cAAc,KAAG,MAgBhF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,EAAE,SAAS,kBAAkB,EAAE,KAAG,IAMtE,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,KAAG,kBAAkB,EAAE,GAAG,IAgB9D,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
2
|
/*! @aiquants/resize-panels standalone CSS — 非 Tailwind ホスト専用。ホストの Tailwind ビルドと混在させないこと */
|
|
3
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-700:oklch(37.3% .034 259.733);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--radius-lg:.5rem;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.z-20{z-index:20}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-full{height:100%}.w-full{width:100%}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.overflow-visible{overflow:visible}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-slate-300{border-color:var(--color-slate-300)}.bg-blue-200\/80{background-color:#bedbffcc}@supports (color:color-mix(in lab, red, red)){.bg-blue-200\/80{background-color:color-mix(in oklab, var(--color-blue-200) 80%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-slate-100\/70{background-color:#f1f5f9b3}@supports (color:color-mix(in lab, red, red)){.bg-slate-100\/70{background-color:color-mix(in oklab, var(--color-slate-100) 70%, transparent)}}.bg-slate-600{background-color:var(--color-slate-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-50{opacity:.5}.shadow-\[0_0_0_1px_rgba\(191\,219\,254\,0\.65\)\,0_1px_4px_rgba\(59\,130\,246\,0\.45\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#bfdbfea6), 0 1px 4px var(--tw-shadow-color,#3b82f673);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(255\,255\,255\,0\.9\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffffe6);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(255\,255\,255\,0\.85\)\,0_1px_3px_rgba\(15\,23\,42\,0\.18\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffffd9), 0 1px 3px var(--tw-shadow-color,#0f172a2e);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-blue-300{--tw-ring-color:var(--color-blue-300)}.ring-white\/80{--tw-ring-color:#fffc}@supports (color:color-mix(in lab, red, red)){.ring-white\/80{--tw-ring-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:bg-slate-700:is(:where(.group):hover *){background-color:var(--color-slate-700)}.hover\:bg-gray-200\/70:hover{background-color:#e5e7ebb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-200\/70:hover{background-color:color-mix(in oklab, var(--color-gray-200) 70%, transparent)}}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:bg-blue-300\/60:active{background-color:#90c5ff99}@supports (color:color-mix(in lab, red, red)){.active\:bg-blue-300\/60:active{background-color:color-mix(in oklab, var(--color-blue-300) 60%, transparent)}}.dark\:border-slate-600:where(.dark,.dark *){border-color:var(--color-slate-600)}.dark\:bg-blue-300:where(.dark,.dark *){background-color:var(--color-blue-300)}.dark\:bg-blue-800\/60:where(.dark,.dark *){background-color:#193cb899}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-800) 60%, transparent)}}.dark\:bg-blue-900\/70:where(.dark,.dark *){background-color:#1c398eb3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/70:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-900) 70%, transparent)}}.dark\:bg-slate-200:where(.dark,.dark *){background-color:var(--color-slate-200)}.dark\:bg-slate-800\/50:where(.dark,.dark *){background-color:#1d293d80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 50%, transparent)}}.dark\:bg-slate-800\/95:where(.dark,.dark *){background-color:#1d293df2}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/95:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 95%, transparent)}}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:shadow-\[0_0_0_1px_rgba\(15\,23\,42\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#0f172a8c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(147\,197\,253\,0\.5\)\,0_1px_4px_rgba\(59\,130\,246\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#93c5fd80), 0 1px 4px var(--tw-shadow-color,#3b82f68c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(148\,163\,184\,0\.45\)\,0_1px_3px_rgba\(2\,6\,23\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#94a3b873), 0 1px 3px var(--tw-shadow-color,#0206178c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:ring-blue-400:where(.dark,.dark *){--tw-ring-color:var(--color-blue-400)}.dark\:ring-slate-500\/60:where(.dark,.dark *){--tw-ring-color:#62748e99}@supports (color:color-mix(in lab, red, red)){.dark\:ring-slate-500\/60:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-slate-500) 60%, transparent)}}@media (hover:hover){.dark\:group-hover\:bg-slate-100:where(.dark,.dark *):is(:where(.group):hover *){background-color:var(--color-slate-100)}.dark\:hover\:bg-gray-700\/70:where(.dark,.dark *):hover{background-color:#364153b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-gray-700\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-gray-700) 70%, transparent)}}}.dark\:active\:bg-blue-700\/60:where(.dark,.dark *):active{background-color:#1447e699}@supports (color:color-mix(in lab, red, red)){.dark\:active\:bg-blue-700\/60:where(.dark,.dark *):active{background-color:color-mix(in oklab, var(--color-blue-700) 60%, transparent)}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
|
|
3
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-700:oklch(37.3% .034 259.733);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--radius-lg:.5rem;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.isolate{isolation:isolate}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-full{height:100%}.w-full{width:100%}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.overflow-visible{overflow:visible}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-slate-300{border-color:var(--color-slate-300)}.bg-blue-200\/80{background-color:#bedbffcc}@supports (color:color-mix(in lab, red, red)){.bg-blue-200\/80{background-color:color-mix(in oklab, var(--color-blue-200) 80%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-slate-100\/70{background-color:#f1f5f9b3}@supports (color:color-mix(in lab, red, red)){.bg-slate-100\/70{background-color:color-mix(in oklab, var(--color-slate-100) 70%, transparent)}}.bg-slate-600{background-color:var(--color-slate-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.shadow-\[0_0_0_1px_rgba\(191\,219\,254\,0\.65\)\,0_1px_4px_rgba\(59\,130\,246\,0\.45\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#bfdbfea6), 0 1px 4px var(--tw-shadow-color,#3b82f673);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(255\,255\,255\,0\.9\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffffe6);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(255\,255\,255\,0\.85\)\,0_1px_3px_rgba\(15\,23\,42\,0\.18\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffffd9), 0 1px 3px var(--tw-shadow-color,#0f172a2e);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-blue-300{--tw-ring-color:var(--color-blue-300)}.ring-white\/80{--tw-ring-color:#fffc}@supports (color:color-mix(in lab, red, red)){.ring-white\/80{--tw-ring-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:bg-slate-700:is(:where(.group):hover *){background-color:var(--color-slate-700)}.hover\:bg-gray-200\/70:hover{background-color:#e5e7ebb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-200\/70:hover{background-color:color-mix(in oklab, var(--color-gray-200) 70%, transparent)}}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:bg-blue-300\/60:active{background-color:#90c5ff99}@supports (color:color-mix(in lab, red, red)){.active\:bg-blue-300\/60:active{background-color:color-mix(in oklab, var(--color-blue-300) 60%, transparent)}}.dark\:border-slate-600:where(.dark,.dark *){border-color:var(--color-slate-600)}.dark\:bg-blue-300:where(.dark,.dark *){background-color:var(--color-blue-300)}.dark\:bg-blue-800\/60:where(.dark,.dark *){background-color:#193cb899}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-800) 60%, transparent)}}.dark\:bg-blue-900\/70:where(.dark,.dark *){background-color:#1c398eb3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/70:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-900) 70%, transparent)}}.dark\:bg-slate-200:where(.dark,.dark *){background-color:var(--color-slate-200)}.dark\:bg-slate-800\/50:where(.dark,.dark *){background-color:#1d293d80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 50%, transparent)}}.dark\:bg-slate-800\/95:where(.dark,.dark *){background-color:#1d293df2}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/95:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 95%, transparent)}}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:shadow-\[0_0_0_1px_rgba\(15\,23\,42\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#0f172a8c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(147\,197\,253\,0\.5\)\,0_1px_4px_rgba\(59\,130\,246\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#93c5fd80), 0 1px 4px var(--tw-shadow-color,#3b82f68c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(148\,163\,184\,0\.45\)\,0_1px_3px_rgba\(2\,6\,23\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#94a3b873), 0 1px 3px var(--tw-shadow-color,#0206178c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:ring-blue-400:where(.dark,.dark *){--tw-ring-color:var(--color-blue-400)}.dark\:ring-slate-500\/60:where(.dark,.dark *){--tw-ring-color:#62748e99}@supports (color:color-mix(in lab, red, red)){.dark\:ring-slate-500\/60:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-slate-500) 60%, transparent)}}@media (hover:hover){.dark\:group-hover\:bg-slate-100:where(.dark,.dark *):is(:where(.group):hover *){background-color:var(--color-slate-100)}.dark\:hover\:bg-gray-700\/70:where(.dark,.dark *):hover{background-color:#364153b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-gray-700\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-gray-700) 70%, transparent)}}}.dark\:active\:bg-blue-700\/60:where(.dark,.dark *):active{background-color:#1447e699}@supports (color:color-mix(in lab, red, red)){.dark\:active\:bg-blue-700\/60:where(.dark,.dark *):active{background-color:color-mix(in oklab, var(--color-blue-700) 60%, transparent)}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
|