aplance-ui 1.5.2 → 1.6.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 +1 -1
- package/dist/api.d.ts +2 -1
- package/dist/api.js +103 -68
- package/dist/api.js.map +1 -1
- package/dist/frameworks/vite-react/vite.config.ts.template +1 -1
- package/dist/index.js +103 -68
- package/dist/index.js.map +1 -1
- package/package.json +12 -6
- package/registry/components/primitives/modal/modal.module.css +9 -3
- package/registry/components/primitives/popover/popover-context.ts +2 -0
- package/registry/components/primitives/popover/popover.tsx +47 -2
- package/registry/components/ui/chart/chart.tsx +51 -30
- package/registry/components/ui/chart/types.ts +5 -1
- package/registry/components/ui/data-table/checkbox-column.tsx +12 -8
- package/registry/components/ui/data-table/data-table.module.css +41 -19
- package/registry/components/ui/data-table/data-table.tsx +1285 -1238
- package/registry/components/ui/data-table/filter-bar.tsx +56 -13
- package/registry/components/ui/data-table/filter-modal.tsx +16 -82
- package/registry/components/ui/data-table/filter-sheet.tsx +97 -0
- package/registry/components/ui/data-table/filters.tsx +21 -21
- package/registry/components/ui/data-table/pagination-bar.tsx +4 -6
- package/registry/components/ui/data-table/types.ts +149 -80
- package/registry/components/ui/data-table/useDataTable.tsx +35 -16
- package/registry/components/ui/data-table/utils.ts +691 -471
- package/registry/components/ui/input-fields/date-picker/calendar.tsx +7 -15
- package/registry/components/ui/input-fields/date-picker/date-picker.tsx +1 -1
- package/registry/components/ui/input-fields/date-picker/types.ts +3 -3
- package/registry/components/ui/input-fields/emoji-picker/emoji-palette.tsx +1 -1
- package/registry/registry.json +16 -11
package/dist/index.js
CHANGED
|
@@ -188,10 +188,11 @@ var applyFileOps = async (ops, opts) => {
|
|
|
188
188
|
ensureDir(op.target);
|
|
189
189
|
writeFileSync(op.target, op.content);
|
|
190
190
|
} catch (err) {
|
|
191
|
-
const
|
|
191
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
192
192
|
throw new Error(
|
|
193
|
-
`Failed to write ${rel}: ${
|
|
194
|
-
${written} file(s) were already written before this failure. Fix the underlying issue (permissions? disk space?) and re-run - identical files will be detected as unchanged and skipped
|
|
193
|
+
`Failed to write ${rel}: ${reason}
|
|
194
|
+
${written} file(s) were already written before this failure. Fix the underlying issue (permissions? disk space?) and re-run - identical files will be detected as unchanged and skipped.`,
|
|
195
|
+
{ cause: err }
|
|
195
196
|
);
|
|
196
197
|
}
|
|
197
198
|
logger.ok(`wrote ${rel}`);
|
|
@@ -1118,18 +1119,18 @@ var firstExisting = (cwd, names) => {
|
|
|
1118
1119
|
var readDeclaredDeps = (packageJsonPath) => {
|
|
1119
1120
|
try {
|
|
1120
1121
|
const pkg2 = JSON.parse(readFileSync7(packageJsonPath, "utf8"));
|
|
1121
|
-
return
|
|
1122
|
-
...Object.
|
|
1123
|
-
...Object.
|
|
1124
|
-
...Object.
|
|
1122
|
+
return new Map([
|
|
1123
|
+
...Object.entries(pkg2.peerDependencies ?? {}),
|
|
1124
|
+
...Object.entries(pkg2.devDependencies ?? {}),
|
|
1125
|
+
...Object.entries(pkg2.dependencies ?? {})
|
|
1125
1126
|
]);
|
|
1126
1127
|
} catch {
|
|
1127
|
-
return /* @__PURE__ */ new
|
|
1128
|
+
return /* @__PURE__ */ new Map();
|
|
1128
1129
|
}
|
|
1129
1130
|
};
|
|
1130
1131
|
var detectProject = (cwd) => {
|
|
1131
1132
|
const packageJsonPath = existsSync6(join6(cwd, "package.json")) ? join6(cwd, "package.json") : null;
|
|
1132
|
-
const declaredDeps = packageJsonPath ? readDeclaredDeps(packageJsonPath) : /* @__PURE__ */ new
|
|
1133
|
+
const declaredDeps = packageJsonPath ? readDeclaredDeps(packageJsonPath) : /* @__PURE__ */ new Map();
|
|
1133
1134
|
const viteConfigPath = firstExisting(cwd, VITE_CONFIG_NAMES);
|
|
1134
1135
|
const nextConfigPath = firstExisting(cwd, NEXT_CONFIG_NAMES);
|
|
1135
1136
|
const astroConfigPath = firstExisting(cwd, ASTRO_CONFIG_NAMES);
|
|
@@ -1400,35 +1401,84 @@ var detectPackageManager = (cwd) => {
|
|
|
1400
1401
|
if (existsSync8(join8(cwd, "package-lock.json"))) return "npm";
|
|
1401
1402
|
return "npm";
|
|
1402
1403
|
};
|
|
1403
|
-
var
|
|
1404
|
-
const
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
const devDependencies = { ...meta.baseDevDependencies };
|
|
1408
|
-
if (cfg.utilities.enabled) {
|
|
1409
|
-
Object.assign(devDependencies, meta.utilitiesDevDependencies);
|
|
1404
|
+
var leadingMajor = (spec) => {
|
|
1405
|
+
const value = spec.trim();
|
|
1406
|
+
if (value.includes("||") || value.includes(":") || /\s-\s/.test(value)) {
|
|
1407
|
+
return null;
|
|
1410
1408
|
}
|
|
1409
|
+
const match = /^(?:\^|~|>=|=|v)?\s*(\d+)(?:[.\s]|$)/.exec(value);
|
|
1410
|
+
return match ? Number(match[1]) : null;
|
|
1411
|
+
};
|
|
1412
|
+
var isOlderMajor = (declared, required) => {
|
|
1413
|
+
const have = leadingMajor(declared);
|
|
1414
|
+
const need = leadingMajor(required);
|
|
1415
|
+
return have !== null && need !== null && have < need;
|
|
1416
|
+
};
|
|
1417
|
+
var unitDependencies = (meta, units) => {
|
|
1418
|
+
const deps = {};
|
|
1411
1419
|
for (const unit of units) {
|
|
1412
1420
|
for (const pkg2 of unit.externalDeps) {
|
|
1413
|
-
if (pkg2 in dependencies) continue;
|
|
1414
1421
|
const version = meta.packageVersions[pkg2];
|
|
1415
|
-
if (
|
|
1416
|
-
dependencies[pkg2] = version;
|
|
1422
|
+
if (version) deps[pkg2] = version;
|
|
1417
1423
|
}
|
|
1418
1424
|
}
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
+
return deps;
|
|
1426
|
+
};
|
|
1427
|
+
var settleDeclared = (bags, meta, project) => {
|
|
1428
|
+
const toolchain = /* @__PURE__ */ new Set([
|
|
1429
|
+
...Object.keys(meta.baseDependencies),
|
|
1430
|
+
...Object.keys(meta.baseDevDependencies),
|
|
1431
|
+
...Object.keys(meta.utilitiesDevDependencies)
|
|
1432
|
+
]);
|
|
1433
|
+
const settled = {
|
|
1434
|
+
skipped: [],
|
|
1435
|
+
upgraded: [],
|
|
1436
|
+
outdated: []
|
|
1437
|
+
};
|
|
1438
|
+
for (const bag of bags) {
|
|
1439
|
+
for (const [name, required] of Object.entries(bag)) {
|
|
1440
|
+
const declared = project.declaredDeps.get(name);
|
|
1441
|
+
if (declared === void 0) continue;
|
|
1442
|
+
if (!isOlderMajor(declared, required)) {
|
|
1443
|
+
settled.skipped.push({ name, reason: "already-declared" });
|
|
1444
|
+
} else if (toolchain.has(name)) {
|
|
1445
|
+
settled.outdated.push({ name, declared, required });
|
|
1446
|
+
} else {
|
|
1447
|
+
settled.upgraded.push({ name, from: declared, to: required });
|
|
1448
|
+
continue;
|
|
1425
1449
|
}
|
|
1450
|
+
delete bag[name];
|
|
1426
1451
|
}
|
|
1452
|
+
}
|
|
1453
|
+
return settled;
|
|
1454
|
+
};
|
|
1455
|
+
var computeDependencyPlan = (input) => {
|
|
1456
|
+
const { registry, units, cfg, project } = input;
|
|
1457
|
+
const meta = registry.installMeta;
|
|
1458
|
+
const dependencies = { ...meta.baseDependencies };
|
|
1459
|
+
for (const [name, range] of Object.entries(unitDependencies(meta, units))) {
|
|
1460
|
+
if (!(name in dependencies)) dependencies[name] = range;
|
|
1461
|
+
}
|
|
1462
|
+
const devDependencies = {
|
|
1463
|
+
...meta.baseDevDependencies,
|
|
1464
|
+
...cfg.utilities.enabled ? meta.utilitiesDevDependencies : {}
|
|
1465
|
+
};
|
|
1466
|
+
return {
|
|
1467
|
+
dependencies,
|
|
1468
|
+
devDependencies,
|
|
1469
|
+
...settleDeclared([dependencies, devDependencies], meta, project)
|
|
1470
|
+
};
|
|
1471
|
+
};
|
|
1472
|
+
var computeUnitDependencyPlan = (input) => {
|
|
1473
|
+
const meta = input.registry.installMeta;
|
|
1474
|
+
const dependencies = unitDependencies(meta, input.units);
|
|
1475
|
+
return {
|
|
1476
|
+
dependencies,
|
|
1477
|
+
devDependencies: {},
|
|
1478
|
+
...settleDeclared([dependencies], meta, input.project)
|
|
1427
1479
|
};
|
|
1428
|
-
filter(dependencies);
|
|
1429
|
-
filter(devDependencies);
|
|
1430
|
-
return { dependencies, devDependencies, skipped };
|
|
1431
1480
|
};
|
|
1481
|
+
var quoteArg = (arg) => /^[\w@./:=+-]+$/.test(arg) ? arg : `"${arg}"`;
|
|
1432
1482
|
var buildInstallCommands = (pm, plan) => {
|
|
1433
1483
|
const commands = [];
|
|
1434
1484
|
const runtimeSpecs = Object.entries(plan.dependencies).map(
|
|
@@ -1439,20 +1489,13 @@ var buildInstallCommands = (pm, plan) => {
|
|
|
1439
1489
|
);
|
|
1440
1490
|
const runtimeArgs = installArgs(pm, runtimeSpecs, false);
|
|
1441
1491
|
const devArgs = installArgs(pm, devSpecs, true);
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
if (devSpecs.length > 0) {
|
|
1450
|
-
commands.push({
|
|
1451
|
-
bin: pm,
|
|
1452
|
-
args: devArgs,
|
|
1453
|
-
label: `${pm} ${devArgs.join(" ")}`
|
|
1454
|
-
});
|
|
1455
|
-
}
|
|
1492
|
+
const command = (args) => ({
|
|
1493
|
+
bin: pm,
|
|
1494
|
+
args,
|
|
1495
|
+
label: [pm, ...args].map(quoteArg).join(" ")
|
|
1496
|
+
});
|
|
1497
|
+
if (runtimeSpecs.length > 0) commands.push(command(runtimeArgs));
|
|
1498
|
+
if (devSpecs.length > 0) commands.push(command(devArgs));
|
|
1456
1499
|
return commands;
|
|
1457
1500
|
};
|
|
1458
1501
|
var installArgs = (pm, specs, dev) => {
|
|
@@ -1477,12 +1520,12 @@ var runInstall = async (commands, opts) => {
|
|
|
1477
1520
|
for (const cmd of commands) {
|
|
1478
1521
|
opts.onCommand?.(cmd);
|
|
1479
1522
|
await new Promise((resolve, reject) => {
|
|
1480
|
-
const
|
|
1523
|
+
const spawnOptions = {
|
|
1481
1524
|
cwd: opts.cwd,
|
|
1482
1525
|
stdio: "inherit",
|
|
1483
|
-
env: { ...process.env, ...opts.env }
|
|
1484
|
-
|
|
1485
|
-
});
|
|
1526
|
+
env: { ...process.env, ...opts.env }
|
|
1527
|
+
};
|
|
1528
|
+
const child = process.platform === "win32" ? spawn(cmd.label, { ...spawnOptions, shell: true }) : spawn(cmd.bin, cmd.args, spawnOptions);
|
|
1486
1529
|
child.on("error", reject);
|
|
1487
1530
|
child.on("close", (code) => {
|
|
1488
1531
|
if (code === 0) resolve();
|
|
@@ -1498,7 +1541,11 @@ var runInstall = async (commands, opts) => {
|
|
|
1498
1541
|
};
|
|
1499
1542
|
var describePlan = (plan) => {
|
|
1500
1543
|
const lines = [];
|
|
1501
|
-
const
|
|
1544
|
+
const upgradedFrom = new Map(plan.upgraded.map((u) => [u.name, u.from]));
|
|
1545
|
+
const rows = (bag) => Object.entries(bag).sort(([a], [b]) => a.localeCompare(b)).map(([name, v]) => {
|
|
1546
|
+
const from = upgradedFrom.get(name);
|
|
1547
|
+
return ` ${name} ${v}${from ? ` (upgrades ${from})` : ""}`;
|
|
1548
|
+
});
|
|
1502
1549
|
if (Object.keys(plan.dependencies).length) {
|
|
1503
1550
|
lines.push("dependencies:");
|
|
1504
1551
|
lines.push(...rows(plan.dependencies));
|
|
@@ -1513,6 +1560,13 @@ var describePlan = (plan) => {
|
|
|
1513
1560
|
lines.push("already declared (kept as-is):");
|
|
1514
1561
|
lines.push(...plan.skipped.map((s) => ` ${s.name}`));
|
|
1515
1562
|
}
|
|
1563
|
+
if (plan.outdated.length) {
|
|
1564
|
+
if (lines.length) lines.push("");
|
|
1565
|
+
lines.push("older major kept as-is (upgrade when you can):");
|
|
1566
|
+
lines.push(
|
|
1567
|
+
...plan.outdated.map((o) => ` ${o.name} ${o.declared} (scaffold expects ${o.required})`)
|
|
1568
|
+
);
|
|
1569
|
+
}
|
|
1516
1570
|
if (!lines.length) lines.push("nothing to install - all deps already declared.");
|
|
1517
1571
|
return lines.join("\n");
|
|
1518
1572
|
};
|
|
@@ -1832,7 +1886,7 @@ var runInit = async (opts) => {
|
|
|
1832
1886
|
${snippet.content.split("\n").map((l) => " " + l).join("\n")}`);
|
|
1833
1887
|
}
|
|
1834
1888
|
steps.push(
|
|
1835
|
-
`${pc4.cyan(String(stepIdx
|
|
1889
|
+
`${pc4.cyan(String(stepIdx))} ${pc4.bold("Add more components anytime")}
|
|
1836
1890
|
npx aplance-ui add <name> ${pc4.dim("# e.g. button modal tooltip")}
|
|
1837
1891
|
npx aplance-ui add ${pc4.dim("# interactive multi-select")}
|
|
1838
1892
|
npx aplance-ui list ${pc4.dim("# see everything available")}`
|
|
@@ -1892,7 +1946,7 @@ var runAdd = async (opts) => {
|
|
|
1892
1946
|
});
|
|
1893
1947
|
const summary = `${result.written} written \xB7 ${result.skipped} skipped \xB7 ${result.unchanged} unchanged`;
|
|
1894
1948
|
const project = detectProject(opts.cwd);
|
|
1895
|
-
const plan =
|
|
1949
|
+
const plan = computeUnitDependencyPlan({ registry, units, project });
|
|
1896
1950
|
const pm = opts.packageManager ?? detectPackageManager(opts.cwd);
|
|
1897
1951
|
const installCommands = buildInstallCommands(pm, plan);
|
|
1898
1952
|
const hasWork = installCommands.length > 0;
|
|
@@ -1950,25 +2004,6 @@ var runAdd = async (opts) => {
|
|
|
1950
2004
|
logger.info(summary);
|
|
1951
2005
|
goodbye(`Added ${units.length} unit${units.length === 1 ? "" : "s"}.`);
|
|
1952
2006
|
};
|
|
1953
|
-
var computeRuntimePlan = (registry, units, project) => {
|
|
1954
|
-
const dependencies = {};
|
|
1955
|
-
const skipped = [];
|
|
1956
|
-
const meta = registry.installMeta;
|
|
1957
|
-
for (const unit of units) {
|
|
1958
|
-
for (const pkg2 of unit.externalDeps) {
|
|
1959
|
-
const version = meta.packageVersions[pkg2];
|
|
1960
|
-
if (!version) continue;
|
|
1961
|
-
if (project.declaredDeps.has(pkg2)) {
|
|
1962
|
-
if (!skipped.some((entry) => entry.name === pkg2)) {
|
|
1963
|
-
skipped.push({ name: pkg2, reason: "already-declared" });
|
|
1964
|
-
}
|
|
1965
|
-
continue;
|
|
1966
|
-
}
|
|
1967
|
-
dependencies[pkg2] = version;
|
|
1968
|
-
}
|
|
1969
|
-
}
|
|
1970
|
-
return { dependencies, devDependencies: {}, skipped };
|
|
1971
|
-
};
|
|
1972
2007
|
var pickUnits = async (all) => multiselect2({
|
|
1973
2008
|
message: `Select units to add ${pc5.dim("(space to toggle, enter to confirm)")}`,
|
|
1974
2009
|
options: groupedUnitOptions(all),
|