unipo-ui 1.9.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/{chunk-XZDQLHF3.js → chunk-3GCVMEWH.js} +115 -3
  2. package/dist/chunk-3GCVMEWH.js.map +1 -0
  3. package/dist/{chunk-TG2LFOXY.js → chunk-D2IW3JNM.js} +438 -29
  4. package/dist/chunk-D2IW3JNM.js.map +1 -0
  5. package/dist/{chunk-Y2R2OVLV.js → chunk-D5LSMIRT.js} +3 -3
  6. package/dist/{chunk-Y2R2OVLV.js.map → chunk-D5LSMIRT.js.map} +1 -1
  7. package/dist/{chunk-U3STNBRR.cjs → chunk-F353BYGT.cjs} +16 -16
  8. package/dist/{chunk-U3STNBRR.cjs.map → chunk-F353BYGT.cjs.map} +1 -1
  9. package/dist/{chunk-6O5DDL7S.js → chunk-JVICOFZC.js} +4 -126
  10. package/dist/chunk-JVICOFZC.js.map +1 -0
  11. package/dist/{chunk-L6JXZ7GA.cjs → chunk-M3YX3K3E.cjs} +471 -38
  12. package/dist/chunk-M3YX3K3E.cjs.map +1 -0
  13. package/dist/chunk-NIRXA7SK.js +127 -0
  14. package/dist/chunk-NIRXA7SK.js.map +1 -0
  15. package/dist/chunk-SB33KUBL.cjs +130 -0
  16. package/dist/chunk-SB33KUBL.cjs.map +1 -0
  17. package/dist/{chunk-IHE35VIV.cjs → chunk-UUPG77ZE.cjs} +5 -129
  18. package/dist/chunk-UUPG77ZE.cjs.map +1 -0
  19. package/dist/{chunk-TEBYH4WY.cjs → chunk-WYOQ7RBA.cjs} +121 -2
  20. package/dist/chunk-WYOQ7RBA.cjs.map +1 -0
  21. package/dist/editor.cjs +85 -84
  22. package/dist/editor.cjs.map +1 -1
  23. package/dist/editor.js +4 -2
  24. package/dist/editor.js.map +1 -1
  25. package/dist/index.cjs +208 -112
  26. package/dist/index.d.cts +111 -2
  27. package/dist/index.d.ts +111 -2
  28. package/dist/index.js +4 -4
  29. package/dist/katalog.cjs +45 -46
  30. package/dist/katalog.cjs.map +1 -1
  31. package/dist/katalog.js +2 -3
  32. package/dist/katalog.js.map +1 -1
  33. package/dist/{pemeliharaan-C-wGiwqE.d.ts → landing-B5c1OZvz.d.ts} +161 -1
  34. package/dist/{pemeliharaan-DZRBOGGS.d.cts → landing-CwNnf1Qj.d.cts} +161 -1
  35. package/dist/registry.json +409 -2
  36. package/dist/scss/components/_cbt.scss +37 -1
  37. package/dist/scss/components/_landing.scss +831 -0
  38. package/dist/scss/components/_pmb-maba.scss +741 -0
  39. package/dist/scss/components/_pmb-publik.scss +690 -0
  40. package/dist/scss/components/_tata-letak.scss +283 -0
  41. package/dist/scss/index.scss +4 -0
  42. package/dist/siakad.cjs +10561 -7738
  43. package/dist/siakad.cjs.map +1 -1
  44. package/dist/siakad.d.cts +864 -14
  45. package/dist/siakad.d.ts +864 -14
  46. package/dist/siakad.js +9562 -6829
  47. package/dist/siakad.js.map +1 -1
  48. package/dist/ui-unipo.css +2742 -2
  49. package/dist/ui-unipo.min.css +1 -1
  50. package/package.json +2 -2
  51. package/src/components/landing.tsx +576 -0
  52. package/src/components/tata-letak.tsx +217 -0
  53. package/src/index.ts +2 -0
  54. package/src/siakad/cbt.tsx +155 -29
  55. package/src/siakad/index.ts +2 -0
  56. package/src/siakad/pmb-maba.tsx +1934 -0
  57. package/src/siakad/pmb-publik.tsx +1628 -0
  58. package/src/siakad/pmb.tsx +419 -66
  59. package/dist/chunk-6O5DDL7S.js.map +0 -1
  60. package/dist/chunk-DOVGC3WX.js +0 -122
  61. package/dist/chunk-DOVGC3WX.js.map +0 -1
  62. package/dist/chunk-IHE35VIV.cjs.map +0 -1
  63. package/dist/chunk-JCHQAO4Y.cjs +0 -150
  64. package/dist/chunk-JCHQAO4Y.cjs.map +0 -1
  65. package/dist/chunk-L6JXZ7GA.cjs.map +0 -1
  66. package/dist/chunk-TEBYH4WY.cjs.map +0 -1
  67. package/dist/chunk-TG2LFOXY.js.map +0 -1
  68. package/dist/chunk-XZDQLHF3.js.map +0 -1
@@ -1703,7 +1703,119 @@ function BannerPemeliharaan({ start, end, message, showHoursBefore = 48, dismiss
1703
1703
  )
1704
1704
  ] });
1705
1705
  }
1706
+ var ANIMASI_FITUR = {
1707
+ notifikasi: "lonceng",
1708
+ pengumuman: "lonceng",
1709
+ kalender: "balik",
1710
+ agenda: "balik",
1711
+ portal: "balik",
1712
+ humas: "balik",
1713
+ keu: "naik",
1714
+ keuangan: "naik",
1715
+ pembayaran: "naik",
1716
+ unggah: "naik",
1717
+ berkas: "naik",
1718
+ pddikti: "putar",
1719
+ sinkron: "putar",
1720
+ integrasi: "putar",
1721
+ pemeliharaan: "putar",
1722
+ helpdesk: "denyut",
1723
+ tiket: "denyut",
1724
+ dasbor: "denyut",
1725
+ cbt: "denyut",
1726
+ kelulusan: "pantul",
1727
+ prestasi: "pantul",
1728
+ wisuda: "pantul",
1729
+ kemahasiswaan: "pantul",
1730
+ akses: "goyang",
1731
+ galat: "goyang",
1732
+ ditolak: "goyang",
1733
+ ai: "ketik",
1734
+ editor: "ketik",
1735
+ arsip: "geser",
1736
+ layanan: "geser",
1737
+ sukses: "sukses"
1738
+ };
1739
+ function animasiFitur(fitur) {
1740
+ return fitur && ANIMASI_FITUR[fitur] || "masuk";
1741
+ }
1742
+ var BERULANG = ["denyut", "mengambang", "putar"];
1743
+ function Animasi({ jenis = "masuk", tunda, durasi, pemicu, as = "div", ulang, className, style, children, ...rest }) {
1744
+ const p = pemicu ?? (BERULANG.includes(jenis) ? "selalu" : "muat");
1745
+ const ref = React4.useRef(null);
1746
+ const [terlihat, setTerlihat] = React4.useState(p !== "terlihat");
1747
+ React4.useEffect(() => {
1748
+ if (p !== "terlihat" || !ref.current || typeof IntersectionObserver === "undefined") return setTerlihat(true);
1749
+ const io = new IntersectionObserver(
1750
+ ([e]) => {
1751
+ if (e.isIntersecting) {
1752
+ setTerlihat(true);
1753
+ io.disconnect();
1754
+ }
1755
+ },
1756
+ { rootMargin: "0px 0px -10% 0px" }
1757
+ );
1758
+ io.observe(ref.current);
1759
+ return () => io.disconnect();
1760
+ }, [p]);
1761
+ const ms = tunda === void 0 ? void 0 : tunda > 20 ? tunda : tunda * 60;
1762
+ const Tag = as;
1763
+ return /* @__PURE__ */ jsx(
1764
+ Tag,
1765
+ {
1766
+ ref,
1767
+ className: cn("u-anim", className),
1768
+ "data-anim": jenis,
1769
+ "data-pemicu": p,
1770
+ "data-siap": terlihat || void 0,
1771
+ style: { ...ms !== void 0 ? { ["--u-anim-tunda"]: `${ms}ms` } : {}, ...durasi ? { ["--u-anim-durasi"]: `${durasi}ms` } : {}, ...style },
1772
+ ...rest,
1773
+ children
1774
+ },
1775
+ ulang
1776
+ );
1777
+ }
1778
+ function Bertahap({ jenis = "masuk", jeda = 60, pemicu = "muat", className, children, as = "div" }) {
1779
+ return /* @__PURE__ */ jsx(Fragment, { children: React4.Children.toArray(children).map((c, i) => /* @__PURE__ */ jsx(Animasi, { jenis, tunda: i * jeda + 1, pemicu, className, as, children: c }, c.key ?? i)) });
1780
+ }
1781
+ function kurangiGerak() {
1782
+ return typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
1783
+ }
1784
+ function AngkaBerjalan({ nilai, durasi = 900, format = (n) => formatNumber(Math.round(n)), className }) {
1785
+ const [tampil, setTampil] = React4.useState(nilai);
1786
+ const dari = React4.useRef(0);
1787
+ React4.useEffect(() => {
1788
+ if (kurangiGerak()) return setTampil(nilai);
1789
+ const awal = dari.current;
1790
+ const t0 = performance.now();
1791
+ let id = 0;
1792
+ const langkah = (t) => {
1793
+ const p = Math.min(1, (t - t0) / durasi);
1794
+ const e = 1 - Math.pow(1 - p, 3);
1795
+ setTampil(awal + (nilai - awal) * e);
1796
+ if (p < 1) id = requestAnimationFrame(langkah);
1797
+ else dari.current = nilai;
1798
+ };
1799
+ id = requestAnimationFrame(langkah);
1800
+ return () => cancelAnimationFrame(id);
1801
+ }, [nilai, durasi]);
1802
+ return /* @__PURE__ */ jsx("span", { className: cn("u-angka-berjalan", className), "aria-label": format(nilai), children: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: format(tampil) }) });
1803
+ }
1804
+ function CentangSukses({ ukuran = 56, nada = "success", className, label = "Berhasil" }) {
1805
+ const silang = nada === "danger";
1806
+ return /* @__PURE__ */ jsxs("svg", { className: cn("u-centang", className), "data-nada": nada, width: ukuran, height: ukuran, viewBox: "0 0 52 52", role: "img", "aria-label": label, children: [
1807
+ /* @__PURE__ */ jsx("circle", { className: "u-centang-lingkar", cx: "26", cy: "26", r: "23", fill: "none", strokeWidth: "3" }),
1808
+ silang ? /* @__PURE__ */ jsx("path", { className: "u-centang-tanda", fill: "none", strokeWidth: "4", strokeLinecap: "round", d: "M18 18 34 34M34 18 18 34" }) : /* @__PURE__ */ jsx("path", { className: "u-centang-tanda", fill: "none", strokeWidth: "4", strokeLinecap: "round", strokeLinejoin: "round", d: "M15 27l7 7 15-16" })
1809
+ ] });
1810
+ }
1811
+ function TitikMengetik({ label = "Sedang mengetik", className }) {
1812
+ return /* @__PURE__ */ jsxs("span", { className: cn("u-titik-mengetik", className), role: "status", "aria-label": label, children: [
1813
+ /* @__PURE__ */ jsx("i", {}),
1814
+ /* @__PURE__ */ jsx("i", {}),
1815
+ /* @__PURE__ */ jsx("i", {})
1816
+ ] });
1817
+ }
1706
1818
 
1707
- export { ActionList, ActivityFeed, BannerPemeliharaan, BarChart, BarList, BudgetMeter, CHART_COLORS, Calendar, CodeBlock, CopyButton, CycleSteps, DashboardGrid, DataTable, DatePicker, DonutChart, Dropzone, FacetFilter, FileList, FilterBar, FormGrid, Funnel, GroupedBarChart, InlineCode, KodeLaporan, LineChart, ModePemeliharaan, Panel, SegmentBar, Sparkline, StatCard, StatGrid, Wizard, WizardReview, chartColor, filterToQuery, monthMatrix, parseISODate, requestIdDari, toISODate, tokenize, useCopy, useFilterParams };
1708
- //# sourceMappingURL=chunk-XZDQLHF3.js.map
1709
- //# sourceMappingURL=chunk-XZDQLHF3.js.map
1819
+ export { ANIMASI_FITUR, ActionList, ActivityFeed, AngkaBerjalan, Animasi, BannerPemeliharaan, BarChart, BarList, Bertahap, BudgetMeter, CHART_COLORS, Calendar, CentangSukses, CodeBlock, CopyButton, CycleSteps, DashboardGrid, DataTable, DatePicker, DonutChart, Dropzone, FacetFilter, FileList, FilterBar, FormGrid, Funnel, GroupedBarChart, InlineCode, KodeLaporan, LineChart, ModePemeliharaan, Panel, SegmentBar, Sparkline, StatCard, StatGrid, TitikMengetik, Wizard, WizardReview, animasiFitur, chartColor, filterToQuery, monthMatrix, parseISODate, requestIdDari, toISODate, tokenize, useCopy, useFilterParams };
1820
+ //# sourceMappingURL=chunk-3GCVMEWH.js.map
1821
+ //# sourceMappingURL=chunk-3GCVMEWH.js.map