@almadar/ui 6.7.0 → 6.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +527 -46
- package/dist/avl/index.js +527 -46
- package/dist/{cn-sgpqpN0U.d.ts → cn-C7fvp9gH.d.ts} +37 -10
- package/dist/{cn-CCjFspAo.d.cts → cn-DnLYahyL.d.cts} +37 -10
- package/dist/components/index.cjs +557 -47
- package/dist/components/index.d.cts +8 -6
- package/dist/components/index.d.ts +8 -6
- package/dist/components/index.js +556 -48
- package/dist/hooks/index.cjs +30 -1
- package/dist/hooks/index.d.cts +2 -2
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +29 -2
- package/dist/lib/drawable/three/index.cjs +21 -2
- package/dist/lib/drawable/three/index.js +21 -2
- package/dist/lib/index.cjs +238 -9
- package/dist/lib/index.d.cts +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +234 -10
- package/dist/marketing/index.cjs +12 -3
- package/dist/marketing/index.js +12 -3
- package/dist/providers/index.cjs +527 -46
- package/dist/providers/index.js +527 -46
- package/dist/runtime/index.cjs +573 -56
- package/dist/runtime/index.d.cts +35 -2
- package/dist/runtime/index.d.ts +35 -2
- package/dist/runtime/index.js +573 -56
- package/dist/{useKeyboardRouter-D84cNWmA.d.ts → useKeyboardRouter-B1pIi9jo.d.ts} +11 -1
- package/dist/{useKeyboardRouter-DQEE_9mq.d.cts → useKeyboardRouter-CVn8lfiX.d.cts} +11 -1
- package/package.json +3 -3
package/dist/lib/index.js
CHANGED
|
@@ -2094,6 +2094,48 @@ var JAZARI_COLORS = {
|
|
|
2094
2094
|
};
|
|
2095
2095
|
|
|
2096
2096
|
// lib/editorMotions.ts
|
|
2097
|
+
var EDITOR_MOTIONS = [
|
|
2098
|
+
"left",
|
|
2099
|
+
"right",
|
|
2100
|
+
"up",
|
|
2101
|
+
"down",
|
|
2102
|
+
"word-forward",
|
|
2103
|
+
"word-back",
|
|
2104
|
+
"word-end",
|
|
2105
|
+
"line-start",
|
|
2106
|
+
"line-end",
|
|
2107
|
+
"first-nonblank",
|
|
2108
|
+
"doc-start",
|
|
2109
|
+
"doc-end",
|
|
2110
|
+
"paragraph-forward",
|
|
2111
|
+
"paragraph-back",
|
|
2112
|
+
"line",
|
|
2113
|
+
"selection",
|
|
2114
|
+
"match-bracket"
|
|
2115
|
+
];
|
|
2116
|
+
var EDITOR_OPERATORS = [
|
|
2117
|
+
"delete",
|
|
2118
|
+
"yank",
|
|
2119
|
+
"change",
|
|
2120
|
+
"put",
|
|
2121
|
+
"put-before",
|
|
2122
|
+
"undo",
|
|
2123
|
+
"redo",
|
|
2124
|
+
"join",
|
|
2125
|
+
"toggle-case",
|
|
2126
|
+
"indent",
|
|
2127
|
+
"dedent",
|
|
2128
|
+
"replace"
|
|
2129
|
+
];
|
|
2130
|
+
var EDITOR_MOTION_SET = new Set(EDITOR_MOTIONS);
|
|
2131
|
+
var EDITOR_OPERATOR_SET = new Set(EDITOR_OPERATORS);
|
|
2132
|
+
function isEditorMotion(value) {
|
|
2133
|
+
return EDITOR_MOTION_SET.has(value);
|
|
2134
|
+
}
|
|
2135
|
+
function isEditorOperator(value) {
|
|
2136
|
+
return EDITOR_OPERATOR_SET.has(value);
|
|
2137
|
+
}
|
|
2138
|
+
var INDENT_UNIT = " ";
|
|
2097
2139
|
function clamp(value, min, max) {
|
|
2098
2140
|
return Math.max(min, Math.min(max, value));
|
|
2099
2141
|
}
|
|
@@ -2161,6 +2203,39 @@ function prevParagraphBoundary(lines, fromLineIdx) {
|
|
|
2161
2203
|
}
|
|
2162
2204
|
return 0;
|
|
2163
2205
|
}
|
|
2206
|
+
var BRACKET_PARTNER = {
|
|
2207
|
+
"(": ")",
|
|
2208
|
+
")": "(",
|
|
2209
|
+
"[": "]",
|
|
2210
|
+
"]": "[",
|
|
2211
|
+
"{": "}",
|
|
2212
|
+
"}": "{"
|
|
2213
|
+
};
|
|
2214
|
+
var OPEN_BRACKETS = /* @__PURE__ */ new Set(["(", "[", "{"]);
|
|
2215
|
+
function matchBracket(text, pos) {
|
|
2216
|
+
const ch = text[pos];
|
|
2217
|
+
const partner = ch !== void 0 ? BRACKET_PARTNER[ch] : void 0;
|
|
2218
|
+
if (partner === void 0) return null;
|
|
2219
|
+
let depth = 1;
|
|
2220
|
+
if (OPEN_BRACKETS.has(ch)) {
|
|
2221
|
+
for (let i = pos + 1; i < text.length; i++) {
|
|
2222
|
+
if (text[i] === ch) depth++;
|
|
2223
|
+
else if (text[i] === partner) {
|
|
2224
|
+
depth--;
|
|
2225
|
+
if (depth === 0) return i;
|
|
2226
|
+
}
|
|
2227
|
+
}
|
|
2228
|
+
} else {
|
|
2229
|
+
for (let i = pos - 1; i >= 0; i--) {
|
|
2230
|
+
if (text[i] === ch) depth++;
|
|
2231
|
+
else if (text[i] === partner) {
|
|
2232
|
+
depth--;
|
|
2233
|
+
if (depth === 0) return i;
|
|
2234
|
+
}
|
|
2235
|
+
}
|
|
2236
|
+
}
|
|
2237
|
+
return null;
|
|
2238
|
+
}
|
|
2164
2239
|
function applyMotion(text, caret, motion, count) {
|
|
2165
2240
|
const n = Math.max(1, count);
|
|
2166
2241
|
const lines = computeLines(text);
|
|
@@ -2222,6 +2297,20 @@ function applyMotion(text, caret, motion, count) {
|
|
|
2222
2297
|
}
|
|
2223
2298
|
return pos;
|
|
2224
2299
|
}
|
|
2300
|
+
case "match-bracket": {
|
|
2301
|
+
const chAtCaret = text[caret];
|
|
2302
|
+
if (chAtCaret !== void 0 && BRACKET_PARTNER[chAtCaret] !== void 0) {
|
|
2303
|
+
const target = matchBracket(text, caret);
|
|
2304
|
+
return target === null ? caret : target;
|
|
2305
|
+
}
|
|
2306
|
+
for (let i = caret; i < line.end; i++) {
|
|
2307
|
+
if (BRACKET_PARTNER[text[i]] !== void 0) {
|
|
2308
|
+
const target = matchBracket(text, i);
|
|
2309
|
+
return target === null ? caret : target;
|
|
2310
|
+
}
|
|
2311
|
+
}
|
|
2312
|
+
return caret;
|
|
2313
|
+
}
|
|
2225
2314
|
case "line":
|
|
2226
2315
|
case "selection":
|
|
2227
2316
|
return caret;
|
|
@@ -2249,8 +2338,8 @@ function motionRange(text, caret, motion, count, selection) {
|
|
|
2249
2338
|
const newCaret = applyMotion(text, caret, motion, count);
|
|
2250
2339
|
let start = Math.min(caret, newCaret);
|
|
2251
2340
|
let end = Math.max(caret, newCaret);
|
|
2252
|
-
if (motion === "word-end" || motion === "line-end") {
|
|
2253
|
-
end = Math.min(Math.max(
|
|
2341
|
+
if ((motion === "word-end" || motion === "line-end" || motion === "match-bracket") && newCaret !== caret) {
|
|
2342
|
+
end = Math.min(Math.max(caret, newCaret) + 1, text.length);
|
|
2254
2343
|
} else if (motion === "word-forward" && newCaret > caret) {
|
|
2255
2344
|
const startLine = lineIndexAt(lines, caret);
|
|
2256
2345
|
const endLine = lineIndexAt(lines, newCaret);
|
|
@@ -2260,14 +2349,149 @@ function motionRange(text, caret, motion, count, selection) {
|
|
|
2260
2349
|
}
|
|
2261
2350
|
return [start, end];
|
|
2262
2351
|
}
|
|
2263
|
-
function
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2352
|
+
function toggleCase(s) {
|
|
2353
|
+
return s.replace(/[a-zA-Z]/g, (c) => c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase());
|
|
2354
|
+
}
|
|
2355
|
+
function applyJoin(text, caret, count, register, registerLinewise) {
|
|
2356
|
+
const lines = computeLines(text);
|
|
2357
|
+
const startIdx = lineIndexAt(lines, caret);
|
|
2358
|
+
const n = Math.max(2, count);
|
|
2359
|
+
const endIdx = clamp(startIdx + n - 1, 0, lines.length - 1);
|
|
2360
|
+
if (endIdx <= startIdx) {
|
|
2361
|
+
return { text, caret, register, registerLinewise };
|
|
2362
|
+
}
|
|
2363
|
+
const joinCaret = lines[startIdx].end;
|
|
2364
|
+
let joined = text.slice(lines[startIdx].start, lines[startIdx].end);
|
|
2365
|
+
for (let i = startIdx + 1; i <= endIdx; i++) {
|
|
2366
|
+
const raw = text.slice(lines[i].start, lines[i].end);
|
|
2367
|
+
joined += " " + raw.replace(/^[ \t]+/, "");
|
|
2368
|
+
}
|
|
2369
|
+
const newText = text.slice(0, lines[startIdx].start) + joined + text.slice(lines[endIdx].end);
|
|
2370
|
+
return { text: newText, caret: joinCaret, register, registerLinewise };
|
|
2371
|
+
}
|
|
2372
|
+
function applyIndent(text, start, end, operator, register, registerLinewise) {
|
|
2373
|
+
const lines = computeLines(text);
|
|
2374
|
+
const startLineIdx = lineIndexAt(lines, start);
|
|
2375
|
+
const lastTouchedPos = end > start ? end - 1 : start;
|
|
2376
|
+
const endLineIdx = lineIndexAt(lines, lastTouchedPos);
|
|
2377
|
+
let result = text;
|
|
2378
|
+
for (let i = endLineIdx; i >= startLineIdx; i--) {
|
|
2379
|
+
const lineStart = lines[i].start;
|
|
2380
|
+
if (operator === "indent") {
|
|
2381
|
+
result = result.slice(0, lineStart) + INDENT_UNIT + result.slice(lineStart);
|
|
2382
|
+
} else if (result[lineStart] === " ") {
|
|
2383
|
+
result = result.slice(0, lineStart) + result.slice(lineStart + 1);
|
|
2384
|
+
} else {
|
|
2385
|
+
let removeCount = 0;
|
|
2386
|
+
while (removeCount < INDENT_UNIT.length && result[lineStart + removeCount] === " ") removeCount++;
|
|
2387
|
+
result = result.slice(0, lineStart) + result.slice(lineStart + removeCount);
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2390
|
+
const newLines = computeLines(result);
|
|
2391
|
+
const caret = firstNonBlank(result, newLines[startLineIdx]);
|
|
2392
|
+
return { text: result, caret, register, registerLinewise };
|
|
2393
|
+
}
|
|
2394
|
+
function applyPut(text, caret, operator, register, registerLinewise, count) {
|
|
2395
|
+
if (register.length === 0) {
|
|
2396
|
+
return { text, caret, register, registerLinewise };
|
|
2397
|
+
}
|
|
2398
|
+
const content = register.repeat(count);
|
|
2399
|
+
const lines = computeLines(text);
|
|
2400
|
+
const line = lines[lineIndexAt(lines, caret)];
|
|
2401
|
+
if (registerLinewise) {
|
|
2402
|
+
if (operator === "put-before") {
|
|
2403
|
+
const insertPos3 = line.start;
|
|
2404
|
+
return {
|
|
2405
|
+
text: text.slice(0, insertPos3) + content + text.slice(insertPos3),
|
|
2406
|
+
caret: insertPos3,
|
|
2407
|
+
register,
|
|
2408
|
+
registerLinewise
|
|
2409
|
+
};
|
|
2410
|
+
}
|
|
2411
|
+
const nextLineIdx = lineIndexAt(lines, caret) + 1;
|
|
2412
|
+
if (nextLineIdx < lines.length) {
|
|
2413
|
+
const insertPos3 = lines[nextLineIdx].start;
|
|
2414
|
+
return {
|
|
2415
|
+
text: text.slice(0, insertPos3) + content + text.slice(insertPos3),
|
|
2416
|
+
caret: insertPos3,
|
|
2417
|
+
register,
|
|
2418
|
+
registerLinewise
|
|
2419
|
+
};
|
|
2420
|
+
}
|
|
2421
|
+
const insertPos2 = text.length;
|
|
2422
|
+
return {
|
|
2423
|
+
text: text.slice(0, insertPos2) + "\n" + content,
|
|
2424
|
+
caret: insertPos2 + 1,
|
|
2425
|
+
register,
|
|
2426
|
+
registerLinewise
|
|
2427
|
+
};
|
|
2428
|
+
}
|
|
2429
|
+
const insertPos = operator === "put-before" ? clamp(caret, 0, text.length) : clamp(caret + 1, line.start, line.end);
|
|
2430
|
+
return {
|
|
2431
|
+
text: text.slice(0, insertPos) + content + text.slice(insertPos),
|
|
2432
|
+
caret: insertPos + content.length - 1,
|
|
2433
|
+
register,
|
|
2434
|
+
registerLinewise
|
|
2435
|
+
};
|
|
2436
|
+
}
|
|
2437
|
+
function applyOperator(input) {
|
|
2438
|
+
const { text, caret, operator, motion, register, registerLinewise } = input;
|
|
2439
|
+
const count = Math.max(1, input.count);
|
|
2440
|
+
const start = clamp(input.range[0], 0, text.length);
|
|
2441
|
+
const end = clamp(input.range[1], start, text.length);
|
|
2442
|
+
switch (operator) {
|
|
2443
|
+
case "yank":
|
|
2444
|
+
return { text, caret: start, register: text.slice(start, end), registerLinewise: motion === "line" };
|
|
2445
|
+
case "delete":
|
|
2446
|
+
case "replace": {
|
|
2447
|
+
const removed = text.slice(start, end);
|
|
2448
|
+
return {
|
|
2449
|
+
text: text.slice(0, start) + text.slice(end),
|
|
2450
|
+
caret: start,
|
|
2451
|
+
register: removed,
|
|
2452
|
+
registerLinewise: motion === "line"
|
|
2453
|
+
};
|
|
2454
|
+
}
|
|
2455
|
+
case "change": {
|
|
2456
|
+
if (motion === "line") {
|
|
2457
|
+
const hasTrailingNewline = end > start && text[end - 1] === "\n";
|
|
2458
|
+
const removeEnd = hasTrailingNewline ? end - 1 : end;
|
|
2459
|
+
const removed2 = text.slice(start, removeEnd);
|
|
2460
|
+
return {
|
|
2461
|
+
text: text.slice(0, start) + text.slice(removeEnd),
|
|
2462
|
+
caret: start,
|
|
2463
|
+
register: removed2,
|
|
2464
|
+
registerLinewise: true
|
|
2465
|
+
};
|
|
2466
|
+
}
|
|
2467
|
+
const removed = text.slice(start, end);
|
|
2468
|
+
return {
|
|
2469
|
+
text: text.slice(0, start) + text.slice(end),
|
|
2470
|
+
caret: start,
|
|
2471
|
+
register: removed,
|
|
2472
|
+
registerLinewise: false
|
|
2473
|
+
};
|
|
2474
|
+
}
|
|
2475
|
+
case "put":
|
|
2476
|
+
case "put-before":
|
|
2477
|
+
return applyPut(text, caret, operator, register, registerLinewise, count);
|
|
2478
|
+
case "join":
|
|
2479
|
+
return applyJoin(text, caret, count, register, registerLinewise);
|
|
2480
|
+
case "toggle-case": {
|
|
2481
|
+
const toggled = toggleCase(text.slice(start, end));
|
|
2482
|
+
return { text: text.slice(0, start) + toggled + text.slice(end), caret: end, register, registerLinewise };
|
|
2483
|
+
}
|
|
2484
|
+
case "indent":
|
|
2485
|
+
case "dedent":
|
|
2486
|
+
return applyIndent(text, start, end, operator, register, registerLinewise);
|
|
2487
|
+
case "undo":
|
|
2488
|
+
case "redo":
|
|
2489
|
+
return { text, caret, register, registerLinewise };
|
|
2490
|
+
default: {
|
|
2491
|
+
const _exhaustive = operator;
|
|
2492
|
+
return _exhaustive;
|
|
2493
|
+
}
|
|
2269
2494
|
}
|
|
2270
|
-
return { text: text.slice(0, start) + text.slice(end), caret: start, register: removed };
|
|
2271
2495
|
}
|
|
2272
2496
|
|
|
2273
|
-
export { ApiError, DEFAULT_CONFIG, JAZARI_COLORS, apiClient, applyMotion, applyOperator, arrowheadPath, bindCanvasCapture, bindEventBus, bindLastDrawables, bindTraitStateGetter, brainIconPath, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, clearVerification, cn, compareCellValues, computeJazariLayout, createCommandSendPump, createTickSendRelay, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, eightPointedStarPath, extractOutputsFromTransitions, extractStateMachine, formatDate, formatDateTime, formatGuard, formatNestedFieldLabel, formatTime, formatValue, gearTeethPath, getAllChecks, getAllTicks, getAllTraits, getBridgeHealth, getDebugEvents, getEffectSummary, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getNestedValue, getRecentEvents, getRecentGuardEvaluations, getSnapshot, getSummary, getTick, getTrait, getTraitSnapshots, getTransitions, getTransitionsForTrait, humanizeEnumValue, humanizeFieldName, initDebugShortcut, isDebugEnabled, lockIconPath, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, motionRange, onDebugToggle, parseContentSegments, parseLessonSegments, parseMarkdownWithCodeBlocks, pipeIconPath, profilerOnRender, recordGuardEvaluation, recordServerResponse, recordTransition, registerCheck, registerTick, registerTrait, registerTraitSnapshot, renderStateMachineToDomData, renderStateMachineToSvg, resolveImageUrl, setDebugEnabled, setEntityProvider, setTickActive, sortRows, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, subscribeToVerification, toggleDebug, unregisterTick, unregisterTrait, updateAssetStatus, updateBridgeHealth, updateCheck, updateGuardResult, updateTickExecution, updateTraitState, usePerfBuffer, waitForTransition };
|
|
2497
|
+
export { ApiError, DEFAULT_CONFIG, EDITOR_MOTIONS, EDITOR_OPERATORS, INDENT_UNIT, JAZARI_COLORS, apiClient, applyMotion, applyOperator, arrowheadPath, bindCanvasCapture, bindEventBus, bindLastDrawables, bindTraitStateGetter, brainIconPath, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, clearVerification, cn, compareCellValues, computeJazariLayout, createCommandSendPump, createTickSendRelay, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, eightPointedStarPath, extractOutputsFromTransitions, extractStateMachine, formatDate, formatDateTime, formatGuard, formatNestedFieldLabel, formatTime, formatValue, gearTeethPath, getAllChecks, getAllTicks, getAllTraits, getBridgeHealth, getDebugEvents, getEffectSummary, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getNestedValue, getRecentEvents, getRecentGuardEvaluations, getSnapshot, getSummary, getTick, getTrait, getTraitSnapshots, getTransitions, getTransitionsForTrait, humanizeEnumValue, humanizeFieldName, initDebugShortcut, isDebugEnabled, isEditorMotion, isEditorOperator, lockIconPath, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, motionRange, onDebugToggle, parseContentSegments, parseLessonSegments, parseMarkdownWithCodeBlocks, pipeIconPath, profilerOnRender, recordGuardEvaluation, recordServerResponse, recordTransition, registerCheck, registerTick, registerTrait, registerTraitSnapshot, renderStateMachineToDomData, renderStateMachineToSvg, resolveImageUrl, setDebugEnabled, setEntityProvider, setTickActive, sortRows, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, subscribeToVerification, toggleDebug, unregisterTick, unregisterTrait, updateAssetStatus, updateBridgeHealth, updateCheck, updateGuardResult, updateTickExecution, updateTraitState, usePerfBuffer, waitForTransition };
|
package/dist/marketing/index.cjs
CHANGED
|
@@ -3112,8 +3112,17 @@ var Typography = ({
|
|
|
3112
3112
|
weight && weightStyles[weight],
|
|
3113
3113
|
size && typographySizeStyles[size],
|
|
3114
3114
|
align && `text-${align}`,
|
|
3115
|
-
|
|
3116
|
-
|
|
3115
|
+
// `min-w-0` rides along with truncate/wrap/clamp: a flex or grid
|
|
3116
|
+
// item's default `min-width: auto` refuses to shrink below its
|
|
3117
|
+
// content's intrinsic width, so ellipsis/wrap silently does nothing
|
|
3118
|
+
// in the single most common placement (a row next to a fixed-width
|
|
3119
|
+
// control) unless the item can also shrink to zero. (Spelled out as
|
|
3120
|
+
// just "truncate", not "truncate overflow-hidden text-ellipsis" —
|
|
3121
|
+
// tailwind-merge treats those as the same conflict group and drops
|
|
3122
|
+
// "truncate" as the earlier-declared class, silently losing its
|
|
3123
|
+
// `white-space: nowrap`.)
|
|
3124
|
+
truncate && "truncate min-w-0",
|
|
3125
|
+
overflow && cn(overflowStyles2[overflow], overflow !== "visible" && "min-w-0"),
|
|
3117
3126
|
className
|
|
3118
3127
|
),
|
|
3119
3128
|
style
|
|
@@ -3491,7 +3500,7 @@ var variantStyles2 = {
|
|
|
3491
3500
|
secondary: [
|
|
3492
3501
|
"bg-transparent text-accent",
|
|
3493
3502
|
"border border-accent",
|
|
3494
|
-
"hover:bg-accent hover:text-
|
|
3503
|
+
"hover:bg-accent hover:text-accent-foreground hover:border-accent",
|
|
3495
3504
|
"active:scale-[var(--active-scale)]"
|
|
3496
3505
|
].join(" "),
|
|
3497
3506
|
ghost: [
|
package/dist/marketing/index.js
CHANGED
|
@@ -3091,8 +3091,17 @@ var Typography = ({
|
|
|
3091
3091
|
weight && weightStyles[weight],
|
|
3092
3092
|
size && typographySizeStyles[size],
|
|
3093
3093
|
align && `text-${align}`,
|
|
3094
|
-
|
|
3095
|
-
|
|
3094
|
+
// `min-w-0` rides along with truncate/wrap/clamp: a flex or grid
|
|
3095
|
+
// item's default `min-width: auto` refuses to shrink below its
|
|
3096
|
+
// content's intrinsic width, so ellipsis/wrap silently does nothing
|
|
3097
|
+
// in the single most common placement (a row next to a fixed-width
|
|
3098
|
+
// control) unless the item can also shrink to zero. (Spelled out as
|
|
3099
|
+
// just "truncate", not "truncate overflow-hidden text-ellipsis" —
|
|
3100
|
+
// tailwind-merge treats those as the same conflict group and drops
|
|
3101
|
+
// "truncate" as the earlier-declared class, silently losing its
|
|
3102
|
+
// `white-space: nowrap`.)
|
|
3103
|
+
truncate && "truncate min-w-0",
|
|
3104
|
+
overflow && cn(overflowStyles2[overflow], overflow !== "visible" && "min-w-0"),
|
|
3096
3105
|
className
|
|
3097
3106
|
),
|
|
3098
3107
|
style
|
|
@@ -3470,7 +3479,7 @@ var variantStyles2 = {
|
|
|
3470
3479
|
secondary: [
|
|
3471
3480
|
"bg-transparent text-accent",
|
|
3472
3481
|
"border border-accent",
|
|
3473
|
-
"hover:bg-accent hover:text-
|
|
3482
|
+
"hover:bg-accent hover:text-accent-foreground hover:border-accent",
|
|
3474
3483
|
"active:scale-[var(--active-scale)]"
|
|
3475
3484
|
].join(" "),
|
|
3476
3485
|
ghost: [
|