@chainberry/ui-components 1.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 +73 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +149 -0
- package/dist/index.mjs +256 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +1 -0
- package/package.json +67 -0
package/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# @chainberry/ui-components
|
|
2
|
+
|
|
3
|
+
Chainberry navigation UI components — React + Tailwind. Ported from the
|
|
4
|
+
original Storybook prototype into a publishable, self-contained library.
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
npm install @chainberry/ui-components
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`react` and `react-dom` are peer dependencies (React 18 or 19).
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { NavDrawer } from "@chainberry/ui-components";
|
|
18
|
+
import "@chainberry/ui-components/styles.css"; // once, at your app root
|
|
19
|
+
|
|
20
|
+
export function Sidebar() {
|
|
21
|
+
return (
|
|
22
|
+
<NavDrawer
|
|
23
|
+
preset="primary" // "primary" (trimmed) | "full"
|
|
24
|
+
activeId="dashboard"
|
|
25
|
+
onNavigate={(id) => console.log("navigate →", id)}
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The stylesheet is fully self-contained (compiled Tailwind + design tokens) — you
|
|
32
|
+
do **not** need Tailwind configured in the consuming app.
|
|
33
|
+
|
|
34
|
+
### Theming
|
|
35
|
+
|
|
36
|
+
Tokens are CSS variables. Light values live on `:root`; add the `.dark` class to
|
|
37
|
+
an ancestor (e.g. `<html class="dark">`) to switch to the dark palette.
|
|
38
|
+
|
|
39
|
+
### Exports
|
|
40
|
+
|
|
41
|
+
- **Organism:** `NavDrawer`
|
|
42
|
+
- **Molecules:** `NavItem`, `NavGroup`
|
|
43
|
+
- **Atoms:** `NavBadge`, `NavIcon`, `NavLabel`, `Logo`, `SectionHeading`
|
|
44
|
+
- **Data/types:** `PRIMARY_NAV`, `FULL_NAV`, `NAV_PRESETS`, `ICONS`, `ICON_NAMES`,
|
|
45
|
+
and types `NavItemConfig`, `NavGroupConfig`, `IconName`, `NavPreset`.
|
|
46
|
+
|
|
47
|
+
Custom navigation:
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
import { NavDrawer, type NavGroupConfig } from "@chainberry/ui-components";
|
|
51
|
+
|
|
52
|
+
const config: NavGroupConfig[] = [
|
|
53
|
+
{ label: "Overview", items: [{ id: "home", label: "Home", icon: "grid" }] },
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
<NavDrawer config={config} activeId="home" />;
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Develop
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
npm install
|
|
63
|
+
npm run storybook # explore components
|
|
64
|
+
npm run build # dist/ (ESM + CJS + d.ts + styles.css)
|
|
65
|
+
npm run typecheck
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Publish
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
npm login # must be a member of the @chainberry npm org
|
|
72
|
+
npm publish # runs the build via prepublishOnly; access: public
|
|
73
|
+
```
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("react/jsx-runtime"),n=(...e)=>e.filter(Boolean).join(" "),g={count:"ml-auto rounded-lg bg-cb-blue px-1.5 py-px text-[10px] font-bold text-white",soon:"ml-auto rounded-md bg-cb-orange-soft px-1.5 py-[1.5px] text-[9.5px] font-bold tracking-[0.04em] text-cb-soon",ext:"ml-auto text-xs text-cb-faint"};function c({variant:e="count",value:o}){return A.jsx("span",{className:n(g[e]??g.count),children:e==="soon"?"SOON":e==="ext"?"↗":String(o??"")})}function p({text:e="Label"}){return A.jsx("span",{className:"flex-1 truncate",children:e})}const u={grid:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/></svg>',checkc:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M8.5 12.5l2.5 2.5 4.5-5"/></svg>',swap:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 7h13M14 4l3 3-3 3M20 17H7M10 14l-3 3 3 3"/></svg>',shield:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z"/></svg>',wallet:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="6" width="18" height="13" rx="2.5"/><path d="M3 10h18M16 15h2"/></svg>',down:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 4v11M7 10l5 5 5-5M5 20h14"/></svg>',up:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20V9M7 14l5-5 5 5M5 4h14"/></svg>',convert:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 12a8 8 0 1 1-2.3-5.7M20 3v5h-5"/></svg>',transfer:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 8h14M15 5l3 3-3 3M20 16H6M9 13l-3 3 3 3"/></svg>',autoflow:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 2l4 4-4 4M3 11V9a4 4 0 0 1 4-4h14M7 22l-4-4 4-4M21 13v2a4 4 0 0 1-4 4H3"/></svg>',book:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 4h11a3 3 0 0 1 3 3v13H8a3 3 0 0 1-3-3V4z"/><path d="M5 17a3 3 0 0 1 3-3h11"/></svg>',invoice:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 3h9l4 4v14H6z"/><path d="M14 3v5h5M9 12h6M9 16h6"/></svg>',payout:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6h10M4 12h7M4 18h10M17 9l4 3-4 3M21 12h-7"/></svg>',bank:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-5 9 5M4 9v9M20 9v9M8 12v6M12 12v6M16 12v6M3 21h18"/></svg>',chart:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 20V6M4 20h16M9 16v-5M14 16V8M19 16v-3"/></svg>',code:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M8 8l-5 4 5 4M16 8l5 4-5 4M13 5l-3 14"/></svg>',widget:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="16" rx="2.5"/><path d="M3 9h18M9 9v11"/></svg>',org:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="4" y="3" width="16" height="18" rx="2"/><path d="M9 7h2M13 7h2M9 11h2M13 11h2M9 15h2M13 15h2"/></svg>',users:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="9" cy="8.5" r="3.5"/><path d="M3 20c.8-3.2 3.2-5 6-5s5.2 1.8 6 5M16 5.5a3.5 3.5 0 0 1 0 6M17.5 15.2c2 .7 3 2.2 3.5 4.8"/></svg>',list:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M8 6h13M8 12h13M8 18h13M3.5 6h.01M3.5 12h.01M3.5 18h.01"/></svg>',card:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="5" width="18" height="14" rx="2.5"/><path d="M3 10h18M7 15h4"/></svg>',help:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M9.5 9.5A2.5 2.5 0 1 1 12 12.5v1M12 17h.01"/></svg>'},N=Object.keys(u);function m({name:e="grid",active:o=!1}){return A.jsx("span",{className:n("shrink-0 [&_svg]:h-[18px] [&_svg]:w-[18px]",o?"opacity-100 text-cb-text":"opacity-75"),dangerouslySetInnerHTML:{__html:u[e]??""}})}const k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA90AAACxCAYAAADZEN46AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAD+cSURBVHgB7d3fchTXtT/wtbpHZXFyfhXlJkGqVHm4cyK5LJ7AwxMAT8DoCZBvf8WfAZHcAk+AeALkJ2B4Ao/LkuM7JlUppPJNlDrmIHume529dvcIgf4wvft/9/eTmiBkCUmt/rPX3muvxQStsDbY74nQLQqpZ/7ajd89JOJvF3zZGQ2WxwQAAAAAAACZYoLGW71/8JhC2bzwg0RGxN5zBOAAAAAAAADZQdDdYOuD10uT6WcviXk90SciAAcAAAAAAMgEgu6GWh/sdycBvaT3qeRubADOTxd8GiIABwAAAAAASAZBdwOtD35enwTBC0obcJ82NK/nCMABAAAAAADmg6C7YbRgGgX8QkiWKF9DQgAOAAAAAABwIQTdDbJ27+C2iDyh4g0JATgAAAAAAMApCLobYu3O/n1hGlD5hoQAHAAAAAAAwELQ3QBztQQrx5AQgAMAAAAAQIsh6K4x2xIsWNSCaT2qviEhAAcAAAAAgJZB0F1TtiXYVF4k7sFdDUNCAA4AAAAAAC2AoLuGMuvBXQFCvMMk3y74RzujwZVDAgAAAAAAaBAE3TWjPbinQfiygJZghbMBuO892Bv8cUQAAAAAAAAN4BHUxuq9/VtNDbiVWfG+QUHw3V/v7d8nAAAAAACABsBKd01UqCVYQfjJ3tblbwgAAAAAAKDGEHTXQPsC7gj7dG13sDwkAAAAAACAmuoQVFbcEuyxEPWphSQgTTMfEgAAAAAAQE1hpbuibMA9/exlTVuCZSbw6cpPaCsGAAAAAAA1VfpK99pgvyeBXBfyukyyJMSHUQup9vZwPm4JxvVvCZbWwtTTSYcxAQAAAAAA1FBpK91xYPnMvNm74MOG5vW8TQG4tgSbBMELakAP7iyIyNMfH61sEgAAAAAAQA2VEnQ7BpZDsgH40c5ocOWQGugvd97c8Nl71tSWYC7Msfj2x62VGwQAAAAAAFBDhQfd2muahZ+kCSyFeCdKQW9OAL527+C2WdV9QvARPtzbuvwHAgAAAAAAqKFCg+48AssmBOBtbQk2LxRTAwAAAACAuios6C4isKxjAL56d1/3tfcJzuURbfywtbxNAAAAAAAANVNI0F1SYLntiXz7w6OVHaqguAe37mvvEVwIxdQAAAAAAKCucg26q9BrmokPhWSnSgH4cUswVCif13Bva/kaAQAAAAAA1ExuQXcVA8sqBOAIuF2gmBoAAAAAANRTLkF3HXpNlxGAI+B2h2JqAAAAAABQRx5lbG2w35sGYeUDy7hlWT9kfrF29+Dfuu9cv3fKkQm47xMCbicLAfa+AwAAAABA/WS60t2QXtNj8xqyT893B8tDykhcOO3fBE5QTA0AAAAAAOqoQxmxLcFEBlR/XfPqS0B9s/o9powC8Ol0cb3YrujNwsxfEQAAAAAAQM1kkl6+ev/gcd49uEvSpSgAf6np57paTY6YkVaeTnkV8AEAAAAAAFylCro1CDXB6EsKpQ1pv31tf5Ym8IY0ZOmLwX6XAAAAAAAAasQ56LaVuLUHN7WowBXz+iS4dJ8ciNi94pACiqkBAAAAAEDdOAXdx62vuI0pv7Lpstrd6RyNCFIJRJBiDgAAAAAAtZK4kJr24I5agklr06wnwWd980eiKu2jwZXDuDBbl8AJiqkVT1P6F6ZmsoN5KSReYpYlYfr8+APC9+ezEB+yJ4fR++XQ/L7+w5rhIXIYdjrjBXo71uuAAAAAAABaJFHQvXpv/5YJuJ9IiwNuJVFKffLWaEyvzCd3CRyhmFpeNHtjSovrEvC6Ob+/ZrJZBV0KTPzMs7L7otsk7AVwFtb/EJ74m8Qfqp8fBDShRVq7e3Bo/pUR2Rd/T74/2hv8EVkgAAXS6/2IFpc68STwlGj802B5TAAAAJCLuZtY2ZZgzaxQ7mK8t7V8hRJavXuwaYKNxwTOAp+uYHCYjbXBfk8CuW4i417JW0XGZpV8ZML0bxd8Go7w+wXInAbav4WLt1moT+dnXA3N67l5vm0TAAAAZGauoBsB92kL/tEfkqbKmuPYM8fxJYEzj2jjBwwInc0CbSavX+GMlaF5PTfX2E4d0tFX77557JKF4Yn39IdHf9ohgJyt3Tu4bSbXBgmu+bGZALuGCbD6c70/ESZfAAAydWF6uc6MT4LFx0J2ZhxOCKb/1TN/JBowazE1czwJ3KGYWnLRdXypTyTXxVaA10RwoQrr6WsaXHq8end/xwz+H1R58M9kU/J7lBSHzwkgZxpwi0jS7VC2WOr6YB+Bd8253p9Yt8MBAEBmzq1ebgfqUUuwPsEpIQddSihetRsTOEMxtfnpNfzXe/v3TfD6Ot7W0KMaiVfl+mbw/9oE38/W0acdIBG9ZhwC7hkNvJ8RAAAApHZm0B21BFv8rp0tweYjrgEMZo9Twjk5D13d0mCbk6WUVhmCb4CEzDVzn9Lp6ZYUAgAAgFROBd3aEsz24EZrqwsxOa64CqNScyqy9AWCrnPpAHn1zpvvdHWroV0GbPCtK/gEAJ/Sp5QkfeAOAADQeh8E3X+58+ZG1IMbAfccupq+SwmxCILulBaCeqVJF0HPxdX7B49FJ8xakKGiK/hm1fs1Vr0BzqaFOykTyC4CAABI6zjo1nRUj/lF23twJxEXU0tEi6kRpIJiah/S1W27HSSUTWqXLla9Ac7GnNXkObKLAAAA0rJBt2N109YLKOhRQlpMjRmr3WmgmNp7x6vbLc5O0VXvv949eOGSeQLQVCFxZteDTz6uLQAAgBS8uLpp21bIsuG4kiDE3xOkgHRHm05+d/9lC1e3z8QkN3S1H+nmABGPJLMe92aCObN/CwAAoI28aTRo7xIkxuR9TS5QTC2ldqc7HncXqFkLsALMegt3CaDtJLuge5GOEHQDAACk0DEvt8ARaBb8/TRYHif5LPKnQwp8AndxMbVtapko4C41nXzMttc8H4p3elDPoaa0yhKx1obwNIum6LTUWeB9bZT0ugRoEL/z6zAMFik15pFuiyIAAABw1hFBqm4aC1NPj9840efQZDwhBN1ptLGYmrbzi7oL5B/IMvMhCQ2F6JUn4XjS4dFPDkFsd/B66b+ni+uiFdX1d+aZST7JfcIAgTe0ngbKa3f39RruURoiTwkAAABS6RCkEhdT20nyOXYwdO/NCBMe7tpWTC1a4Q5emDdzC7g10A7D8LlHvLO7dXlIGRhHK2TD+GVpdogfUM+smN+S/FLkEXgDCD0gTnGNMY0D7/21CwAAAG406B4T9nS7S1dMDUG3s/ZMWOSdUs4aEJvBeVaB9qfEK+bb+tIAvDOlvnh0K4cV8O5kKjpRcZUAWmj30fJw7c6bp8J8mxxwSBs/PcSkFQAAQFpmUYteEThDMbWytKOYmlYpzzHg3g58urK7tXxNB+dUAg3Azdce7D1cvmL+uqEra5Ql5vXVuwePCaCldh+tbHLCFHG7vcRcj2XdFwAAAJrGQ/CXlmPwp8XUIJW4mFqjTeTSfco44NaVbQ2297aWN36qUOq1+X62NfhmmxLLGRZuks0v77y5QQAtpYG3+WODWT75vNf7w9STq3o9EgAAAGSiY2bAR8IEKaCYWjmaXkxt7d7BbcmyD7dZRQ5D+eYfj1YS1SAomq58m4ms7U5Az7La8x2y92x98HqIKszQVnEQbbd0LExlXbz3W3RE+FALJv5P59fhGNcIAABA5jqdztFokkVbkRZDMbVysM+/p4aK9nHLE8oIE+/84r3bGD+sx4A6XoG/tnZnf2AmBe9TarL0W3DpmXnjJgG0WHxt6avSk28AAABN4sUrP2MCd+mKqYEjCeQ/1FDxPu5MmKBVi6TdrOMKlq56eyI3s0g3Z5Iba4P9HgEAAAAAFMiz/49iaqmgmFo5mJt5/Mzqbpb7uDd+fLg8oBr7QdPhPe9aFoG3TAVF1QAAAACgUFHQjeAvJRRTK0PgN69/rKaVm5XpAaWk1YdZ6FpTiiHtDf44yiTwttXM9/sEAAAAAFAQG3RrMTWCVOJiask+hyZjAieaMl2lyttZmQacyUpsEIaNa/ejgTeHksWe7Az2iAMAAAAAzMcG3VpMjSCVuJhaIrqffp4WLvARc8zqnjJ9Fl2BFZL0ra1qUKHcVTSRIN9QOl3s7QYAAACAotigG8XUMoBiasUQev7W+/UaNVPqFVjNANj720pmVc+raG9r5YlWY6cUJMBqNwAAAAAUwzt+C8XUUkExtfzZgPLRcr+JfWTjfcZdSqOhGQBn6fjvNlLu7+5htRsAAAAAivA+6EbwlxKKqeVJA+6GB5TpVl6ZxoHHrelBbbNzJF2aeTjNIJUfAAAAAOATOrM3tJiaCWwghYWAeuaP7QSfQnuDP49W7x1oALFEcIpW4RYTXJmAe5saKpNVbmlmYbmLaGX2tbv7t4TsdZcYs3fL/LFJDXTWBOAiHR2OGpglApCV9cHrpSNaPPUsxrWTrdlxNgPQLgdnP/vEj7Y8duhohGM/H73vX3RMLZFD6ZhxFfmHtisIABTmOOjWYmqTYJHAXSCSuIK5YgrHQuz0uU1mA27Pu9b0B4OZ69LA0Z2ZMNt7tLJNbWQmG8wB7JETWdIU891BPau868B1SovrEph7hydfmRvQuplI6Ir5uSg4/fETEzqYCR59cxy9tIgjf0++P8LgC9pEgxOdJA9JvhLyukzm2iFemgSy5J/x8R9fO+Z5fWju26/Yl1Fd7x9FWh38vE5B2LP3qZB6ExMU6nGW+HWm+B6mx37t7oEJEvV+JSNP6JXf+XXY5kD8/b1frs/OX9KJ++ATx1Qxx8c2sOe0Oe8/OrZsJjnaNYEPUJTjoFtvYOYCHFPaFbcWM0HiV+RG99Mj6D6JaTz15NpPgz+OqcFWB/8yD07XoDESdNqTVv4xrWa+em9/bEYZXXIQp5gPqUZ0oiAM+PbUnDc2wNYhVkh2MCU01/RNN3pxz/4tsIOvsXlryD49r1MQMVvR98lfYgqWTq7wyBnFLc37Pqc5sNA/7ccLH3piJkXNytDUBFttyyZpEnvdhPS1+d32TbzRDe17TcgRXzNJrp34c26Ye7cNCEO9dki+1ewbAkuPtwaFTF5fgiDKHgjJSXSf0+ck90KmzTCwkyBD877nCz4N2xAkaqA9CS71zdG4PjkeM7w/f12dPrZmXHLnzYjYM8dWdhCAn83+Puh3XS8I1kMzYWdO7s/J49MZqyG9qtt9wU5KTs1EDvOSPkdF5Pdn/WxmyFGr8UIVdD74mxZTEwTd7txWq1l4lO622TAsI92f3IoBbuDfpnS22x4IcEjPzYPBaU88e44FEAumD/jfwsXbnvCmGcguzR1ez69rXmZwTP04AH9QxYGC+d6emT96uir54Yp+cHqF56wDNOdBkxNvhfHKkB99fZtZIuyNPZbvyaNhmemv0Qpi8JgKEPi0kfW9Zu2OCczmvHbNOX+4u7WSeIIxCv7ovk5u5rGDTs9D8+/q5N0Nc37ozzI0geCDtgYr8XapW9Fkcg53qvd6+poE9mtuN/WYz87fKNAuaKTIOpaVdfM1H88mN6ryPIgmHxZfzPvxWd23ot8Dr5vfwNeePe90siKI55H098JnTypFlbO2aQ5F3A8/djJrQmMY82zVt5fsc09J9NXO+tmY3hfgXr1vns1h8vgxNJOV/9iqV8eddTMpYa6NZ5SUx6MPg25bTE1uETiKiqklvcBDPxjpnQHsRTz8xfv1ZhMrlJ+jRymY0+YBtVync/TEPITdCtGJrOtDp8qpijqInQb82Dxkl6SYQVfXvJ5pAGFWvjeqNJNt7g9dsa8SpylZByayLmICLR0M02zVjb8l3xsWmarP00BXInpUU8z299mb52OFeEwJnAy2qThd8+qbAVn/r/f2Bz8+XG7N/TkOtvU+3KXi2WNur0Pf/6YJ22VKOn/P0tNXPKFU+mSs1gLwqZhj8mG2RpRVpqFoXk+fPO+HH7M/m9AtM7a4EWU7cPzvuv10HNA/zbOoTwl55OkYbLtO20Um5piZI9WjpEJ5/kHQjWJq6aGYmjsRebr3aKWRha3O8uWdNzfCdAOU1q9yK71Zr5nBlmtBtWD6Xz3zxw5VjJ2BDi49Mw/BGyUFmV0z4Hu5evfgyd7W5VSV4lugZx/CmqpvUzP5aVvSXqvGroTJJROsSKnPEhYa2EA08G/u/b25NRPs4H0qmm1RhS1yeg1+V+eV7woF2x/rUjwZa47ttSbf2z78HeSarVG42eSYxFuxsvrZ3Bc/xK60U422+Zkz4rrLUTOLZEPv5Du0mBpBKs7F1ERafextS7AWBdwqZL5OKWCV+wR5n+aUVEBBjyomSl9a/E4DbiqdbJoH9et1l5aIbWRTM+mZWUHQwf8zHLfizK4bs6JQlWdJl/zgO7Pq7ZaJU3Gr9w8e68RcfM5Xia58v67TcdfJouPjSZULuE/S1NrXZjK2kG0tRdL7h7lnv6zB7yAxnUjQ57h5U9Oiu5QxXfxgx8BZJzioJvQ6dVrgYR7pItkHQXe8vD8mcOZaTM38Ep9TW4W2JdiA2oY5TUA1xCr3B4bkiqtVx2J98PO6BmxUraKWOtB6iQByfnGBIh38v/zL3TetmlAsQ0WvG0tXvZsUeNvg5M6bKk1unCnONqj8hKGeuxWbLJpDsyZj1+4d3I7vHz1qEDuZYyZ/44mELuVIdIuVE7bb/KgGzHXqNG6XMLQLQ96p/8LuK0ag3GZ8dZ8M16yKclraEsw8FK/t/a1eRRSyoAUzUm4naO8kzRlslo45n8gBk3PXgcxFgUP4Mg7YqgaBt5uuR6wFiXDsclLx68ZqSuAdFxGq4ur2eez3q9u5qII02JsEQSUni+Zgji1/V+dJxTgofSkiT6p8/3BxnPlDyfdau1jw3227jcNkaRJ81qd6+JoceB22WxhPB922mBq4c79opz5taKssagPzc2oPbm35RG3kpUkb5kO0pvlQlNoUjslNtwqzrNEDMnhR8Qd/HHjXY1a6YnqYtMieHs+qB9wzGnjXO0CJA+76BYjdkPlF1SY9zOT7fQ32qNZkSScV6zihdCIo7VHDlJH5Y8dhzltl0223LFCPkjLxzqwg7amgu+17i8uk6cIL3tFVkoavYpoTMPDMCncDKow6kzSrq1K5ol9VIMTfkyPtt0klq9FgtpukZQt8ANkCGZoFgXVaodIARfdXUs3UOOA+VqVsA5vyyzSghqhbJkcTzufzlJr5I861hnpVn8y3Gaou54u8z2I+FXSjmFpKnC5TQGeK9h4t9wOfrpi/bjQu5Zxl9NZMLLR9P7KkmFn1xHPcN9NsYWgmIzzadnr9RqXSAjpUr4d/D/uUnSHwzsgkKK1FVSoS0LM6ZYs0KUCpQnAY3+/71DB1CrwnU9GJ4y41TNkZczZ71XGrX+VTzB0zVE+O2Tsf/0cN+swM3JgaeDIWIqNMgTgo3daX9v72A+oxy22R2uyjOs2s4O9trfSp5XS2LE2TBr/zv0OCU/7xaEUzAGqXBbBqZqUpCGoXwHrk3TcP+B20xXLSjQd9VwmcxK1v+lRPZmB8SYOTWrTiMwF3LhWPyxIHh1RGH3WbUl6rgmnJlHls52V/B1yJFneZq8LkGFP4XIhvU2I2xbzK2y2c9nOfHLN7Z34Eiqk50cJgebRx0gBc9/DuPly5Gq2A8zcmAK9VRoK2BNMVfAJzLFJNnAzjLgPQFGZWmlLiaGZ5fOJVAC1+Ygfj4MLcB8zgdEDgKpMVtY+vHXZcpUlONuuQZq4BCqXc86rjFRF5agacG+T7dhzz1j/6gxnX8Oylf9f/psVVdYxjt9nlWOPGVja/t3+LCqRF03JKKR/bjC1z3DyRm3p89XXy+J51jJl4J49jrMe2soXrtAd3g9L6T4qv1S6VLWTXxY/eFxXNANMMAsdFzw/G7J0zP8QWU5NCb0ZNIEH44KeHK2PKUbwCrjNBT6IVcL7BHN6q9Aq4tgRrYYXy85hZwK/NLCC5MAMX533LUD3xal03wafYAWwY0iufeTTxz28d1x28Xvrv6eK6TvKYs+3rnHp+93QQMysSUnUaUJlr6PDD95m/yzmBFsuSubdqml6X8vh+hDRbYNs1W6DTofE0TDLRa38ehxWIarErVW6/k7H5/X+r107o+6O39HY8PmcSUzNQvOm0G5hznD2zAiPZnwNxf9ohVVScVj4gB7o1TlsIvfXfbY/nmCiOP2a2mDCcvX82zjEXy+3MfwfCT1b//8/f7/09//oyUcG/7II9OzkUylPp+Dvz1sc54xjbcVkexzhk75n5mUdVy4SShk4Up7lWs6Yp5mv33oxc4hIvtNlLA6oYc2x75OaDGl1nBt1aTE3cYoL2MoFl0a2vqh6AxwNcPS7bBCew814bn/whQZPMtVo3G2CZN4e7WyvDeT4nHmAN49cTDcJ/pz0m2XzNDAevRQYOOogXCb/3PNtucBy9Uw7N++2g3gxADwMKjgf4R3R0OM4oMyTeBmAmMPh6lhMYcbbANXIQD2gH8358vFWp1kF3PLjsz/vxeu2EYfjcM6t6SbplxIGMvnTVZtP+/qfBprl+slyQqPSkVZyqOrfZfWraoe2s6racHOfo6ql4dD+7MY4skR+8WB+8vppnBpnu34+OZQb7bM3KtGfGmz9sLWe2lerkMbYTwZk8I44zoZzubXlwmeQ+yZ7fJj4KzeKHTtzps2fSeV/HqcxaRXF9C2fRz2ae4yzf67NVzMtcx+PZf0/8s4X8LTmk8Juv7ZTCnTcTEt9y2RYa+B+Ojc4MurWY2iRYJPg0m1Iehhv/+NtKZjdAFx8H4J0p9c3D6VYes/NziVqC3Wx1hfJz2PRycdvVHXZ4TNAIIdnBe/dTH6dpmW/9o8H4YbpBYRx8busru4GVVVjgsLd1ubSMmRNB2HGdjYyOYU8DOtwr5xOvOHTn+disrh0V/3765nc/8KdmoiOj4DsMbObBkCrGPKLmuj+9//jsjvV5fojrdmR8/+r+FlzS4PAm5WQiun9fupSCXcQIwgd5L+7E7UjNM+KNmWDyzDFONVFgC27+Y6symY6JA9MPJu22Lg+pgpJORM7MslECX3Z+GlweU4ZMHPnExJEuEwGVm4iMJ816lJSZmPn4uJ65pzue8RsTXCzuNR0XcKoMDcDNjP5g7+HyFd2/ow/DQvt/oyXYuWzFWueHGB/imDZK78L/aq4j3Xv346OVzXHGqzA6sNJr1O7py0AcOLTGrM6GHsMsWjzKdNonmNenB3I5Xjv2d2/rk0gmRdCY5EZFK5l35/oollFex/o8eu1pe1UWm/2Tmv4O8tqDbDMk0hZOi8eaRWZT7plAOfDkatqxY1Rws/zzO+kqtwakel7vPrz8Bz23k2TJFC3pKvfxz7a1fE0nsvNYobc9ux0nE8OwWn3Tg+lnPXIgYXiqPpp37kejmNrFahJY6venN4zCAnDzANbj0vaWYOeZThdTpMXVq3gepBC31svzQW8n57Yu32RJX/yRa9BjMw+zACztMWT2UENlDvP0SdWBXt7XjtKgRJ+pru1xTqp8q5xz6Hhi7+HK1TICEh3U75qxjZ38yOB3EDI/zuUelrZQZvwsKGOsqfc3ndygVIV7Nc188TGVjGnOzBQzPg5FbmpAWuVAeyZuPdmf52NPBttF/Gy6ik4OuGJ1R8y94To58DqnFzXOD7qFMcA/T4pe03pTX717sLl6f/+ZmXl7+de7By90Bq6Inq25B+Bmxeet9ysC7gtwij1dQvIfgsbT1We9jopaNdKsmPSBtw6s6hk4ZCH9MZSlOlSyLpt8KqXbPIN0QFnYiqsGQmYFMn3Q5zaoK5UWSLVBb7ns5EcmvwPq/hYuZvrzpN1DHI01i3sWnEUnNxbM95Au8KZCxrjnsZWn56nAb8ewR1erlr16kbnTns31WvREwoL/btvtuqzc87BHSZnY6qwU+XODbhasqp0pDixdboJ/vbd/fxpcem3+kccUVejrcVSQ55m5cF5rEF5WAJ62PYed8TYrPmU+HOogZK9LjjzGRFjjmYHNL/67jaKvoyhoTJuqWcPAIUNpj2E4zaW6fNP0zv0v5topoy2lPks5lLT7geuWKbKxV6GOJFlNfugKW8a/B/fiVmY8VnbAPfM+8HYfI/42La83+UQrs3/CrK1t3cawn1rB1z3purpdxvUabVUWp9XuqjwPVwf/0uzULiUlZ6fWnxt0azE1gg+4XpTR6vb+S+1dKBevdPaopABcfy4NwG3/xoQBuB6XKsx41wGz+0r3cbVmaCa7ZYVvlvXQ73R+HaRbzeD1NqaYnxQdQ7eBP3teJau2VscFrdvia4dKoqtHaSetAu0sUA8bcbGtSslm8kOWslrtTrXKHW9frFIAqAGUrWHhen9j71ZZzwezuHXhhLAdwz5cHlDN6PG8cAXfnEdTT66WmSbPoS3emvzzKrLlikPf6b7siXfmZMO5QbfdBM9Y7Z5xvShtVcHpZ9p2o0fJ9KiEAFwvznkD8Nn+kDrerMoilCLVTDxkETSZ0IMyt2bYe37IKYpDydKU0tQsqL/oGDoGXyKtn7S42PkTllWoI2L3F6dYCQy9arbKOckuPFQw4J6Jgot0Be4yXO12X+Uu+VlwHvs9Sei4jSa7CY3EX/mC8XddA251UY0g2wLM82+Wf18012StU8zFKYPP7/zv8Kz3exd9khB/Ty3H0cmy4Rxwa29GTt1TskdVCMCJv2FzgzInzYampNel0ERTSCdE0N1c21UYzNrrOUU1bgmk1UG30lYprqtBE/pdlyCp7aoEKGZVZ4NcVaxi7xm26xCc6B5vTtWCLX1wmHIvdyWeBedJc3zLKJC1cPGe51qc0+fyLphM0PZyFSn07DoRHbctLI2tBSBO8dtwdE6WyoVBd9uLqdm+iNqmweEGuD74eX0a8HeUZmXzbD0qKwDfuvxk19ygfjDHA62r3LDI78mRkI+gu6ECP30F8cx0Aue9X0KVDxxyl2YfmxcErZ+0SKpK145NM3cP+LqVzXTQdOcq3aM+YeqbyY8U+7s5TFefgh1Xx2pznJ2LRha/ehnIORPBumfeP8qk7V9p5NzsmO0q1Vwg13tiyKW2U3TqzR05d+HiwqDbvfJcA8R7IVyCy9V7+7cmQfCdpKhUPacelRCAQxrsfE4EFCDobqbKrNSpvcGfR84rGcRfEZAnbsdPOPNJ2qar1LWjXNvkqGD6Xz2qooqmO59Hv1fnbR6KZd01OIwqZX+6cNdZzKTl8zoc5zSTS0UXyOLztm2Yc7ruhX/ljCxaXSys2sSN+/kiS2XeE10nz8zxH5733y4MulPtT6uzFL2m1+7s3zcX8zYVr0enAnDsDwSouiqubKQIHKq7Wlegie8cdH9OMD/fr9z4xC5WOAo56FLVmAWIKqc7nyfNNg/lGhy6r47xYeiVMnZ04tyDuegCWXLmQsewjuf0h8zPJacX9kKSp1WcuHE9X0IOS+vZLez1KCnm0UXH/+L0coraoKTZ41c3Ohvj2mt69f7BYzNoGlD5emQD8MV/v+8DjoEwQOV84gZdlsCXHXKEfclxwSGHAb+E8geC+WgwWMFtTnaxwjWd0qtgpojUJ638pLSLRq7B4adaOJ1PduqUTZCmB/Pq4Ocit9F0z3hfA2KaszNpqzpx4z4ZWU5XFLOA2jtrUuNTJAxfXfTfPxl0Ky2mxTW98Sahvaa1OJhjS7BnFJbXh/A87/uAIwAHqBp23Pubt3jwNyYH2JccE0k8IDUDfax0z0vSFMvKGYtTEdrKTbrUdJV7Jt1qt1twKK6FcyuYtXGRNLUrKJj2qCw1P6c/oXLbbWbcJyNlaRJ81qeCmQVUp8kzr8MXLljMFXQrXfEOfLqigWmathhV5dpr+kRLsD5VHAJwgIrxqhs4mPuF0ypimH8ti1pgl0kLwbGb13l9UKuAHYvQVq0mgtR8RTAa6IfuP0PC4NB1dayqWRuf4oWOGVFlZnRUebIuJfarfb2y8/0kXWFDRz1KylzHu4OLOzrNHXQrnUHRwHSeHs61Eso3JbcEK9zHAfiXd94UWtwCAMxk5qDCLfeY/kkORFAMDPIXdnhMFRX6gWMAxZWadGHPd95mUhkhO/8MSbsxOK9y1zQQ9Du/DslFie3xqh6YuuPDSo8nSJM5jnYcM096RS4Qrg7+pddxl5Ka4zpOFHSfdKqHcw0DcK3yp9+7S2l9bQlmA26q/wBTA/CQ+cXa3YN/a5o8AvD8iGMgAw3E1W7JKOKNyQH77NwWD2BeVV4ZDJzbO1Yo06Gmq68f07EqOW6VYfK+TvbxYaKPP/68mgaCNpOAnTKiSiq4Wf3A1J1U/lpNk3lSaIp50OmRg3myr5yD7pNqGYCb7097cMc35ES0Jdg0CBsRcJ8UtzjrawBugu/XaD9WLZ2GnW9tJxJWegLGI3EKHFAMDAowpgpLs6/yi6o8dxuUhmsCQ8etCLKU6Pfh2PKvQ0e1ndwQYqf6BeUU3Kx+YOqKmV5RHThnnhSXYu7aKuyHR3/65M/WoYzFQay+7P4W0b3O2ievSimHJuCOWoL9cUwJrd07uC0iT0QTj5rNps6bwPvaqEYVNavOXMyHojtbXD43QNDdKNK82hiKqVor3TpoXpjKuhmVLIUkX5HHSxSaa0n3XnKe6bz6bzf+OQGN5VYMrop0j73rlbgw9TTVdDzPx4o4pJczj0Z17hdt6xdI4qJTccHNQoNgM3ZvzDn9MQ69WkwoaIy4eu/g0KH2QU+f5XkXiou3DfcoIZmzqGDmQfdJlQzAWUbaEmzscJPTHtzmoh1Qe3TjFPorBBnh+j5cIVOe19Bzgcvdl2orDgehPm++9syDWgJZCnk20cW6nzB+023ya14tmJgt05ggV+xXe/tLEhOfhn5ATubtnW73gbp8DZHDtcF+j2oqDOX37HCrK6PgJjewCPRMlWtcfExb+QnTfUrIC23B6gHlyCXgVmaxYa4V/FyD7pMqEYALPd/bWumTA93rLDWoUJ6D7urdN5vmuCXe9w6nmYfT2HUoHojUrmAftFAJFbh10GqC6+tMXl+CwH59DakR9kLdxNuIxlSyaYMmNnR1zHF1be7CkDz1l8RtHs/cu8orLJaW69RlGQU3PfHH1FB1qr8gnWCHAj9x0G3Gz5pRMaAcaWq5SzZq4M+3HSeTPd1JlbEHXFuC6dekhOIe3LVoCZafUsr1N5OI8+omClQ1Czc0vbxI2vZQ789iM3J4U9CuDCATVe3364opHJODeZ+7zCVmcNZQGeMZ6YTINKyAvcGfR249u6mbd1aIsNejpJhH894vC1vpPs9ZK+Ds8XXJcrVEW4I5VSjf7zalQnk69WuJVlWTDo9c09xI8HsAUBpsmz90prxLAJCx5m19iQt+JX+GhvPdY0SDbqTWVFqTsjc+MqaaMdfjt+b/e5RQGLWbG1IObAzqEHsyzV+osZSV7vPMVsB3H17+gydyU1fAmd1v/vHnbuwh4E5Jluw+SUgt1eoB+h9Dy2mrxjjz6Bnh3gyQE2lc0M2oAwBQGQv+u21ywMK3KS+e3CAH4vlzV2SvVNB90g+PVnZSBeBxS7C9reVtSkjTF6YBf0cY1B2LK01CNsbkJGH7EoAG0c4RkyDQ+3KPAAASEHFewOnO80GC8SLA3KKe3S4r1rKUY4r515SUiTWT7KevbNB9UtIAXH+R2hLMpbCA9uDW/YHYG/ghFPHKUIp+igs1LrgC4Gr1/sFjbdVIAAAOvAau3gPUmtADchBO3VakL6LZzU4t/yTZxEHpe7qT0gDc/GGX8r+88+ZGYFY9POavdA9SKOE/PeKdeJ94YlFLsHwr49UVe17yGSA4m2NfS4XJD2gb7RxBofQJAAAAGqHTORpNwkuJuwowezp+3qQMubYK88Sbez+3ql3QfdLJADwtu5ISSqa/xEbBfuLMsMjIsbWI1inQSvI4T6EV9L6MgBsAAKBZNMV87d6b50JJ92lHKea7A7cF1rOYIfmt5HUQ+fCHR39KFIPWOujOgrYEmwaXnpmAO/N0hWaJiqnVqRdgVdnZvWCRHHV1X3fT2rkAfMxmHuU7ETrW/8urwJIwr5fRsxwAAKAWQt4xD+HExdEk6tk9pAxoHOiy0i0UJt4q2uqg21Yon8oLs/SIlN05xMXUEHSnFM/ujcSxBZgf2Aki7G89h247Ec/t2E492saERvni7hEDyoitASI0NDPZr8j3hm/p7XhsrkPK0Zr2D0fRNwAAgDPpduDVu/tjSlqIMOQbJlj+ZpTBczyYftYjh+xTJk6cad3aoPu4JRhzl2Au2E+cKZ0hczyeNsUcQfc5zArjbTML2iMHi3SE41oBcbvG9NisYgs//cV7t513kA0A1RUSL5FLI23Ot2e5mRDcZJH/UMsIo4UbRFjouTkf7if6JJKlIFjUBahtSimMtm0mFvjJV9pbGXSjB7cbFFPLkGNKTayn6TAjBBFnitN6KTk+xDEtn5n17lPKe7OubEsQPtj72womUQDA3BNkyemxIPNVPWeSQ3FYLpt68i2yq6DNOp2jJ5NgMWHQrRNpNsV8m9LrUXJDl+u2Fi3DsmYCbv3ldgmSQTG1zOi+7jQz6L+FiyimdobVwb9S7KMVbJ2ohsQP3w+YFRQzkL2KgBsAZvLvo+32PPfJR90HaDX3nt3RAhSlsHbH9vzuUmKSqGr5TOuCbjsoJ+oTOIiKqRGkZm8y4h7ksbDrKnmzBb7z+Ski3xOUyv0BGDMBd+DRNawcAaTBjQsEWehzcuHNlwZt/v25Pu7UPx/VygFoNSF2CmInwWd9SsNzLKLtd4bkoHVBN4c+qpSngAdEdszM3nNyFrVMIPgAkzjtzVFmxWFIUCphcupfbyHgBshI86ru221HDkww/U/KUdjAYw2Q1IL/btst+5Odx3yx5NtmzVjDtZNT+9LLRb4icIZiatnx/aOdNCnmEqRMw20gYa9HjvzO/w4JytYjV0IPEHADZENbU1JDaB0f121H865gh37glrnmMcak0Hopsj+dU8z1vuDURUjcW5W1ck83uEMxteykTTE3eljtfs8W4HLvizxEEbVyxVt/uuRme29reZsAIBOdBtW9CabuiwXizxd0L9Bkro87/QUYCxkAykyckwPXFHOX3tyKffcs1fYF3ZxvqlDjmZXutIUL4ATHm8zxp2O1+xiTe2oys23hBiXypl6XXPn+UwKAzEjQnKw28dwzaDp0NNfEeDxpO6akhLoYUwFEPbuLTDF3247Ih7sD8306at+ebmFUKE5pQr/rEmQiusmk6lfZi1sstZpNE0qRmiyev0NQKvEcV3yYR677qwDgHM1Ke3bL0DP3liQZUOzUAUOWprSI1W4A0msodFlF7rlshxHixDW+hMJUCzStC7onvnsuPsSCaY8gMxymKahm/4XHbZ8pn6RZ8U9RFAMy5Fhvgx1bdwDABcLkA9Iqct63qZJu/3LMpAzDFLUsAJokZKcFEC9M1pXqyztvnO5vTJxqgaZ1QbcttJOieBUQCn9krNM5epLunJSlSXCptWnm69EMZ59cpUzxh6w4tinyqjmRKg3aEwtt1IwOGdOp+7PBEy/RhJ6ZQB+SAxZCrRwAirI/mZNnjJhrKNH2wpDdUtKDlAu3rSyklrJ4FaDwR6ZsQbVQUu5JlU3Xmbu6m6Tc1x4g+6USXIPUKaXanpGnLgHUWDiV2j9T0rQhnHTCRGNFv/PrkNz0sK8bIBY69ezuJpwkTPKxM8O0HVLaWb2c5XsCdyimlrn0q916n/KerTeozcs84v3sfXK3jTZT9VbF319ciR2g1pi9W3V+1sfPhy65STzAthPo5DaJ+1u4uEkAEI2HHcw7SejeKSX9VrYOtZAWUxOCNOJiasgYyIg+rNfu7D81s/IpVm1laTKVF2aQdK0N7a90giGDVW6klkP2Ah9BNzSALMXB4IDqKc3zwa3WitAr4uSraGZceptqeJy/dCjk6vtHO2jRCeex4+G7+8OkxXF1ktD88enJq6DTs7l1SfmdIaXUypVuFFPLAIqpZS5a7U6ZKsu8PgkWH1ML6AQDpUvhxSo35AV7NKERNBis42p3ylXuNNuOhuRElurWiURXDEOiZ0lf6IADnyLkkmI+Xx0Kp1ZhGRXcbWXQjWJqGUAxtcxFe7tpg9Lr//XefqMLq63eP3isEwyUAla5m+GLam6p6BFAI9SvUGc8SeD8PQvJt64TsrYQlHPgTffrNMHBU99hzz8folsIfMqC/27bJU77VIq5c3tZyWaxtp17ugnF1FJDMbVcpHxgH2OhQVMD77U75ucKJe3+N6xyVww7FkRbmHqVuheZ87NHKKIGjSKbdapkPhE7SdAlR77425SC2yqd1a3T3m6XInVp+xxDO0TbD5Lvof5UHYpJ4DYhzn7a1r6R1gbdKKaWEoqp5Wbqm9XuDDIxNPBevbv/jBpEA27zoB9QSljlrh5x7HEbeGGlgu401ZIBqkoCqkWhzr9oF480k7JM4x8e/WmHUnBdpbNf3qbzV/8428lvh4mNtH2OoT04pG1KTJamtHjumMAptZz4cHewPKQMtHilm7HSnRL25eTDrsBKmFVQ2F+98+a7ulc11wkenUDIIuA2/8YDrHJXj3kYOg5Sq7N/OnXPeIDq6saFOis72a7Xn8ecrqaJpJ+QTdcGVNP56WXVj7OZVHCa2FjwjxB0w1w089Nl8kou6Nkt7PUo6b+XYXZGa4NuFFPLAIqp5WZva+VJFmnmli2uRi/rlB54kq1SPv3sJWURzJhVjB8fLg8IKifFRGivKue2uc4alVkC8AF9lph7cRUDwribhT4nuuRKiyVtLW9TBlK2Ae1WtSCq/u71OIuZHKDktlG1HJJwmrwK+cZZ9yi79UuSn7dZZme0NuhGMbUMoJharjr+0c3U1czf64p5UK7ePXhcp20Ba/cObk8D/i5t0bSZwKNrBJUU+oFz9pGkbB2XhTjdskcATVbBwDuTgFtJdtuO0q12W5UriGoD7mgCvEsOstoXC60ypMRkKQgWTxVUc936FWS4SNvePd2EYmqpoZharjKsZn6CbJoZ9O+q3ppEVy7N9/hSRJ44zqifgrTyatsb/HmUYiK096Xu5SzJ+uDn9Sy2PgCUae7sqqg1ZSW2LWUWcGe4yj2TcrW7UgVRjwNu1wlwc3yz2hcL7eFaXDikMwPsHiU3zHLc2OqgG8XUUkIxtdzZPS0k31C2uub1TIPaqqWcHwfb0SCqRxnRmzbSyutAXKv+UsheKYWeNOCeBuHL8/57ZttEAPLG9CrB+WqCXS51AlefFzYTKoNuAXlkQdlU6pT1WWzgfffgRZkTHNHExmK6jDNB8VJw49gNoHcyPtGe8uR0n3Afk5yl5SvdKKaWFoqp5c/u787ngdWLUs73X5a98p1XsG2ZGXZbER4qz61a6cysAFFxg9No0B9esL+RD1O0DwIoXqJnjT3vdQK30AkvW1jz/sFjcd9b/IE8s6CyqM/CJDfKqstyvMUr3cTGMOssAmgP2w3AgdZF+NKMbfVFgX+bXPidIWWo1UE3iqllAMXUCmFWvAdmMJTXfqgeRQOn1zp4KurBHgXabx6v3T34dy7BtjIBt65gIK28Hjqdo1HKWhvdoganmvb56UG/7HiOVdkByuCYztk3193rIoLvKAi89DpVW7CTCiiumVEb0LguSzETHFlu8Qow6Q0p2K2WbhNX/dCMbfVFLoV4dcvJ4I+ZLs52qMV0IL567+DQpZodxFBMrTB7j5b7q3f29UaQVx/grnn1zYO9bwLhQ3Oj0sHXK/Zl1KGjUZqqo7oyob0TJeB1Ifras6vset2ZOXzzvzywGeSI5938afDHMUEt6Dm2dmf/qVl5SrOPcTY43V7w6cEo4wkXHYzKVB6b0/aTqZbaD94LUFwN6kWDRD80q5vJx0YafPf12tOiWVnt4dXnx2/h4m1PeFOyHK/Fk7KUMzvWvPvmgfmCWVQkz+UYq/fPadIJxR5lALVUIAssYsYF3KMiSfYLs60OupUWUxNUnHUX4tgVSQPvtTtvDs3Nxy1VZk46s20Cbi1MdcM8fGlCi6SBuHl/NOvn0ZiF/nnu5zN9LiEvsYRdZs+sPs4GSqJ7XHMKs9+LA+5rWc9SQv60+NAkvHQ7g8nQ48Ep+f7TNOdC1CbnUt+cudftYJR5nk/b1sHml3f3CaBOMggS7eStufbGFK1QvTLX4Gjea9Beb7p1LQh7es2Z67gXPTeyfXJoodKfHhYTEGqauXmGfm1+hqwKPn5wjD2Rb8NOJ/HK3Org53V7nD35ahrwjawKl1po0QkZ8Tu/DsPwUqGLpHlU22990G2LqUnBsyfN0tUHJHovFmf30cqmWQ08TLkamFj8MO7Zv4SfCJwlWsPW4ERyD7E/Yh70usKNgLue9F6S4aqQ6lMQnAgA+HvN3pgSjRfp6PDje9cXg/2uT/6SFwTrIclX5uN1P2U36VSRrnITQE1pkLh6Z389ZWZVl6K0Tr0Go4lbCaN2rd4Z7TBD+/Hd6HoLKE+6Aru3VWw17Y7/bmMSLq6bW0mXstMlTaNltsd4VSf5tDPPecdYxcfZvoJg9r5sn9UFZRFAO9gsuHtvnptlm1wXnN7jw93B5SFlDCvdwqOCQ4LGiYupIcApkO7xNoHJYYaBSTMc7+FGSnmdRatC+9czzkLqkg0ARPt6k09RBsfqxyvRQfR/of3LXCvapyClEppgoXO0OQk/+yqr9qB24nZWATuk0uj1WcYKrAYOZlLvmh/Sy4wD7w+VfIyxtQtyEfKOeSQXEnQLha8oB+1uGUYoppYFXREiKJwGJmY17YoGmgS2NdNb7+gqgp1myKj4UPGQUgkNoUFi4PHNJj1jygq4Z/T5ZFeAG/zcDsJwA5lmkDXbQregMQGTCfBz0Pqg2w7Q6ziwqxLxcPxKcvwAz6+yeT2E8s3u1vK1MbY5NIae2xzKTaoRXeFBSiU0SaOCRPOcqMKEWFMDb73/hSI3//FoJZeABcCMCZ5SARb8IwTdedFiagTOwg6PCUqjD3AtsGbe3Gjdqjeba9f3r+79beUJQePYmW2qT7sZLd6HTAtomtoHiWwLf16r0nNCj+mCd3Q1rxW1wkW1VK4h4IY8TTu0Tfkb5lWnCkG30mJq4CaHPnbgZm9rebstq946o24GUQ/2Hq5cxfnXbHpeE1U71Zyj7w0pldBYdQ28dduRft/xBF6l6MB+d+vyTX2WUZ2ZyW89xrj/Qd5sBhzlvS1YvqWcIOimqJgagZu6PywaZrbqrXu9878xlWZ76slVLSZH0ArRhJJcreSAP17hiScHABrLPl8eLl/RnrlUcXYiLN52VPXsE32W1bU+i5hzQSe/keEDRRHi3IJiFfj5ZZ8g6CYUU3OlaVEYaFaTPgB1sOGJ3GRuxvYJnUSwKYJbyxt4wLdPFesXzFbRsMIDbaJtK6nC25n0utSJ2TptO3o/oWEWMmoQfM+exz9G5wJAYRb8d9uUF3Pt5Tm+RJ9uim52q/cOCm26XncacP/iv6vNXsu2+iHaX7Wzdme/J9ouKV3P1cLZ1iMiO+bh/ryK6YFQrPhh2P/yzpud0OPHubbduYA9L4PwwS5qCUBL6YT7F4P9YWcqm8JF9c69mM3uMkFrnZ8Vuuptjuu2P6VBJZ/XOiGgxxgLLlAS3ZZhxgA3zYP43Jgt1PaEDi11JZRcV9ERdMe0mFrGPWEby6YTPVrG7GaNxIOQoXmYD/yAb5gT/nZZAcs8dPCkKUS/eO+2UZEcPjabTFq9u98358qtou7dccrqUzPh+GT8EOcltFs8CbZpnitPygwSmxBsnzSbXLTPaz2uHn1d9vP6+BhvYfIbyvfDJwr2maD8RsiUmNfJt7Ahgu4ZLaYm3CO4kO1xubUyIKil+GGuq3NPVgc/r1MQ9pjketkTTjaYsRNf/G3gy06d0sd/8Y9uLtJi4iyZt3RU6aDtf/yjHfNzDanC4u0tuuLW1ckk5vCWCK9ThmbnZjTgvDykhKp0HPW6MsfqCjnI45qswznmyu7RdXCU8X0hyf3J9Wt/ECQG1GMzqZv1dfix2QSYhP7O7t+bub1jdlz17aInGGNa9V238wyrMqFRtXtYlpp8PyxayHydEuPD3UHyZ3yir0BgfWluaCHRM4KLbGAPdzN1B6+X/nu6uG5m1HtmZuUr4rCb86BpzMSaXfJKs0x+6RyNsKINWdBz+f9NP+uJZ85ft3PZnpsm0NauFkOcmwDJHU+EmUldEyGvS8rteycmv15RhYLAos3ub4EJvj2zAp7lczo6xpplZo6x7w1RqwLqykxSvTZ/dCmZba0ZRDlC0B2LHhD0muCUeEb5JvbUto+uhnvTaTdkr2tWL5aE6XMOdR9NPIDS98mH+2rMTWUcv3UonhxKIP9h9saehOOw0xm/pbdjBDFQNB2s6opfZ3r6QTztROcsCvQB5GP2LNHJsOg5El+HHz1DoudH9Owwq6z/NK9x6PsjBIDnO3lsw1CWPPY+nz2j5aPAY/Z8Fo/GJ5/Nkw6PcP+DJlgd/GudAv87Si73hUUE3Ses3jv4N4qpfYTJVgzGzRgAAAAAAKpq7d7+QITuU0IL/tEfRjkvCKFl2Ama5krwHgJuAAAAAACoBXHYz03DUQEZmAi6T2K7hw8oqlT51ju6ioAbAAAAAACqbH2w71qP6DkVANXLT2CxhZ0g6oncJwAAAAAAgIqbBG7V/QOfhlQArHSf4PtHufZnqwNtCbaHgBsAAAAAAOoj8V5u4uKKCCLoPkHz+TWtmtoqlG9+fLg8IAAAAAAAgBpYu7Pfo+RtwkjC8BUVBEH3x4QeUMtoS7BQ5Obe31aeEAAAAAAAQE0I0y1y4HW4sCxntAw7g5ktGZhfXvIUhTpiGpPn30QPTAAAAAAAqBNd5TZx20tKysRAew+Xr1BBsNJ9ht1HmmIt39iAtMnilmAIuAEAAAAAoG5MwP2MXEixW4oRdJ9jb2vliQak5s0N5gb27zY/E3pwAwAAAABAHZlVbs1M7pKDwC92SzHSy+f0xWC/6wd8gzm85dgDrjqEnr/tHG2OC2gEDwAAAAAAkKW1ewe3RcS1HtVwb2v5GhUIQbcDDcC9qWyyx9dNANulGtGWYKhQDgAAAAAAdZQy4Cb26druYHlIBULQndLq4Od1mU77dQjAEXADAAAAAEAdrQ9eL03k0n0KZZPcFb7KrRB0Z6jiAfiGOcG2CQAAAAAAoCY02P4tXLztCW8KyRKlEfhX9/5efBFpBN05qUoArj24xfNQoRwAAAAAACpPg+wpLa5LoHW05Lp5V4+ysW0WITeoBAi6C2D7xxH1yaOvCw3A45ZgqFAOAAAAAABFiHtn30/0SWJWsJmXmHgp9Wr2WUqOixB0F6ywANy2BOObCLgBAAAAAKAoX97d74fk2D87P6Vute0QFGr3ka2Up6/cAnAzkzL8xfv1JlqCAQAAAABAm8XFpLepRAi6S5RHAC4iT/ceraSp6AcAAAAAAFB7TLyz9/DygEqGoLsisgjA7SzO1sqAAAAAAAAA2oxl9It3VErhtI8h6K6gpAG4rVAu8k3ZaRMAAAAAAABlq9p2WwTdFfdxAB6S3PCYv9K/i0djCvn7X7x329i/DQAAAAAAbVfF7bYIumvkZAAOAAAAAAAAkePs30cr21QxHgEAAAAAAADUlBZMm3pytcy2YBfBSjcAAAAAAADUju7dJqEHu48uD6nCEHQDAAAAAABALWgaOYXy9JfO0ZO61LVC0A0AAAAAAACVFa9ovzJvDne3qr2qfRYE3QAAAAAAAFC4uPjZ8Wq1Ca7H2qFJAvmPzzwKfX/0lt6O696p6f8A9GA8MyP9tzwAAAAASUVORK5CYII=";function f({src:e=k,alt:o="Chainberry",href:a,collapsed:t=!1}){const s=A.jsx("img",{src:e,alt:o,className:t?"h-[22px] w-[22px] object-cover object-left":"h-6 w-auto"}),r=n("flex items-center",t&&"justify-center");return a?A.jsx("a",{href:a,className:r,children:s}):A.jsx("span",{className:r,children:s})}function w({label:e="Section"}){return A.jsx("h6",{className:"mx-2.5 mt-2 mb-1 text-[11px] font-semibold uppercase tracking-[0.09em] text-cb-faint",children:e})}function h({id:e,label:o,icon:a,active:t=!1,collapsed:s=!1,badge:r,soon:d=!1,ext:l,onNavigate:i}){const v=n("group flex w-full items-center rounded-lg text-[14.5px] transition-colors",s?"justify-center gap-0 px-0 py-2":"gap-2.5 px-2.5 py-[7px] text-left mb-px",t?"bg-cb-seg text-cb-text font-medium":"font-normal text-cb-muted hover:bg-cb-seg hover:text-cb-ink2"),x=A.jsxs(A.Fragment,{children:[A.jsx(m,{name:a,active:t}),!s&&A.jsxs(A.Fragment,{children:[A.jsx(p,{text:o}),d?A.jsx(c,{variant:"soon"}):l?A.jsx(c,{variant:"ext"}):r!=null?A.jsx(c,{variant:"count",value:r}):null]})]});return l?A.jsx("a",{href:l,target:"_blank",rel:"noopener",className:v,title:o,children:x}):A.jsx("button",{type:"button","data-nav":e,className:v,title:o,onClick:i?()=>i(e):void 0,children:x})}function B({label:e,items:o=[],activeId:a,collapsed:t=!1,onNavigate:s}){return A.jsxs("div",{className:n("mb-[7px]",t&&"mb-1 border-b border-cb-line pb-1 last:border-b-0"),children:[!t&&e&&A.jsx(w,{label:e}),o.map(r=>A.jsx(h,{...r,active:r.id===a,collapsed:t,onNavigate:s},r.id))]})}const z=[{label:"Overview",items:[{id:"dashboard",label:"Dashboard",icon:"grid"},{id:"approvals",label:"Approval Required",icon:"checkc",badge:3}]},{label:"Transactions",items:[{id:"transactions",label:"All Transactions",icon:"swap"},{id:"actionreq",label:"Action Required",icon:"shield",badge:2}]},{label:"Treasury",items:[{id:"wallets",label:"Wallets",icon:"wallet"},{id:"deposit",label:"Deposit",icon:"down"},{id:"withdraw",label:"Withdraw",icon:"up"},{id:"conversion",label:"Convert",icon:"convert"},{id:"itransfer",label:"Internal Transfer",icon:"transfer"},{id:"autotransfer",label:"Automatic Transfers",icon:"autoflow"},{id:"addressbook",label:"Address Book",icon:"book"}]},{label:"Payments",items:[{id:"invoices",label:"Invoices",icon:"invoice"},{id:"payouts",label:"Payouts",icon:"payout"}]},{label:"Banking",items:[{id:"banking",label:"Banking",icon:"bank",soon:!0}]},{label:"Reports",items:[{id:"reports",label:"Reports",icon:"chart"}]},{label:"Developers",items:[{id:"devhub",label:"Developer Hub",icon:"code"},{id:"checkout",label:"Checkout Widget",icon:"widget"},{id:"devdocs",label:"Developer Docs",icon:"book",ext:"#"}]},{label:"Administration",items:[{id:"organization",label:"Organization",icon:"org"},{id:"users",label:"Users & Roles",icon:"users"},{id:"audit",label:"Audit Log",icon:"list"},{id:"billing",label:"Billing & Usage",icon:"card"}]},{label:"Help",items:[{id:"help",label:"Help & Support",icon:"help"}]}],b=[{label:"Overview",items:[{id:"dashboard",label:"Dashboard",icon:"grid"}]},{label:"Transactions",items:[{id:"transactions",label:"All Transactions",icon:"swap"}]},{label:"Treasury",items:[{id:"wallets",label:"Wallets",icon:"wallet"},{id:"deposit",label:"Deposit",icon:"down"},{id:"withdraw",label:"Withdraw",icon:"up"},{id:"conversion",label:"Convert",icon:"convert"},{id:"itransfer",label:"Internal Transfer",icon:"transfer"}]},{label:"Reports",items:[{id:"reports",label:"Reports",icon:"chart"}]},{label:"Developers",items:[{id:"devhub",label:"Developer Hub",icon:"code"},{id:"devdocs",label:"Developer Docs",icon:"book",ext:"#"}]},{label:"Administration",items:[{id:"organization",label:"Organization",icon:"org"},{id:"users",label:"Users & Roles",icon:"users"},{id:"billing",label:"Billing & Usage",icon:"card"}]}],T={primary:b,full:z};function C({config:e,preset:o="primary",activeId:a="dashboard",collapsed:t=!1,logoSrc:s,onNavigate:r}){const d=e??T[o]??b;return A.jsxs("aside",{className:n("flex h-full shrink-0 flex-col overflow-y-auto bg-cb-sidebar border-r border-cb-line",t?"w-[62px] px-[9px] pt-[14px] pb-2.5":"w-[260px] px-2.5 pt-[18px] pb-2.5"),children:[A.jsx("div",{className:n("mb-1 flex items-center pb-2.5",t?"justify-center px-0":"px-2.5"),children:A.jsx(f,{src:s,collapsed:t})}),d.map((l,i)=>A.jsx(B,{...l,activeId:a,collapsed:t,onNavigate:r},l.label||i))]})}exports.FULL_NAV=z;exports.ICONS=u;exports.ICON_NAMES=N;exports.Logo=f;exports.NAV_PRESETS=T;exports.NavBadge=c;exports.NavDrawer=C;exports.NavGroup=B;exports.NavIcon=m;exports.NavItem=h;exports.NavLabel=p;exports.PRIMARY_NAV=b;exports.SectionHeading=w;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/lib/cx.ts","../src/atoms/NavBadge.tsx","../src/atoms/NavLabel.tsx","../src/lib/icons.ts","../src/atoms/NavIcon.tsx","../src/assets/logo.png","../src/atoms/Logo.tsx","../src/atoms/SectionHeading.tsx","../src/molecules/NavItem.tsx","../src/molecules/NavGroup.tsx","../src/lib/navConfig.ts","../src/organisms/NavDrawer.tsx"],"sourcesContent":["/** Join truthy class fragments into a single className string. */\nexport const cx = (...c: Array<string | false | null | undefined>): string =>\n c.filter(Boolean).join(\" \");\n","import { cx } from \"../lib/cx\";\n\n/* ATOM · NavBadge — trailing indicator on a nav item.\n Variants:\n \"count\" → blue pill with a number\n \"soon\" → amber \"SOON\" tag\n \"ext\" → faint ↗ arrow (external link) */\n\nexport type NavBadgeVariant = \"count\" | \"soon\" | \"ext\";\n\nconst VARIANTS: Record<NavBadgeVariant, string> = {\n count: \"ml-auto rounded-lg bg-cb-blue px-1.5 py-px text-[10px] font-bold text-white\",\n soon: \"ml-auto rounded-md bg-cb-orange-soft px-1.5 py-[1.5px] text-[9.5px] font-bold tracking-[0.04em] text-cb-soon\",\n ext: \"ml-auto text-xs text-cb-faint\",\n};\n\nexport interface NavBadgeProps {\n variant?: NavBadgeVariant;\n /** Text for the count variant; ignored by soon/ext. */\n value?: string | number;\n}\n\nexport function NavBadge({ variant = \"count\", value }: NavBadgeProps) {\n return (\n <span className={cx(VARIANTS[variant] ?? VARIANTS.count)}>\n {variant === \"soon\" ? \"SOON\" : variant === \"ext\" ? \"↗\" : String(value ?? \"\")}\n </span>\n );\n}\n\nexport default NavBadge;\n","/* ATOM · NavLabel — the text label of a nav item (truncates, fills row). */\n\nexport interface NavLabelProps {\n text?: string;\n}\n\nexport function NavLabel({ text = \"Label\" }: NavLabelProps) {\n return <span className=\"flex-1 truncate\">{text}</span>;\n}\n\nexport default NavLabel;\n","/* Icon set — inline SVG strings using `currentColor` for theming.\n Copied verbatim from the prototype so visuals match 1:1. */\nexport const ICONS = {\n grid: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\"/></svg>',\n checkc: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M8.5 12.5l2.5 2.5 4.5-5\"/></svg>',\n swap: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 7h13M14 4l3 3-3 3M20 17H7M10 14l-3 3 3 3\"/></svg>',\n shield: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z\"/></svg>',\n wallet: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"6\" width=\"18\" height=\"13\" rx=\"2.5\"/><path d=\"M3 10h18M16 15h2\"/></svg>',\n down: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 4v11M7 10l5 5 5-5M5 20h14\"/></svg>',\n up: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 20V9M7 14l5-5 5 5M5 4h14\"/></svg>',\n convert: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 12a8 8 0 1 1-2.3-5.7M20 3v5h-5\"/></svg>',\n transfer: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 8h14M15 5l3 3-3 3M20 16H6M9 13l-3 3 3 3\"/></svg>',\n autoflow: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M17 2l4 4-4 4M3 11V9a4 4 0 0 1 4-4h14M7 22l-4-4 4-4M21 13v2a4 4 0 0 1-4 4H3\"/></svg>',\n book: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 4h11a3 3 0 0 1 3 3v13H8a3 3 0 0 1-3-3V4z\"/><path d=\"M5 17a3 3 0 0 1 3-3h11\"/></svg>',\n invoice: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 3h9l4 4v14H6z\"/><path d=\"M14 3v5h5M9 12h6M9 16h6\"/></svg>',\n payout: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 6h10M4 12h7M4 18h10M17 9l4 3-4 3M21 12h-7\"/></svg>',\n bank: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M3 9l9-5 9 5M4 9v9M20 9v9M8 12v6M12 12v6M16 12v6M3 21h18\"/></svg>',\n chart: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 20V6M4 20h16M9 16v-5M14 16V8M19 16v-3\"/></svg>',\n code: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M8 8l-5 4 5 4M16 8l5 4-5 4M13 5l-3 14\"/></svg>',\n widget: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2.5\"/><path d=\"M3 9h18M9 9v11\"/></svg>',\n org: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"4\" y=\"3\" width=\"16\" height=\"18\" rx=\"2\"/><path d=\"M9 7h2M13 7h2M9 11h2M13 11h2M9 15h2M13 15h2\"/></svg>',\n users: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"9\" cy=\"8.5\" r=\"3.5\"/><path d=\"M3 20c.8-3.2 3.2-5 6-5s5.2 1.8 6 5M16 5.5a3.5 3.5 0 0 1 0 6M17.5 15.2c2 .7 3 2.2 3.5 4.8\"/></svg>',\n list: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M8 6h13M8 12h13M8 18h13M3.5 6h.01M3.5 12h.01M3.5 18h.01\"/></svg>',\n card: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2.5\"/><path d=\"M3 10h18M7 15h4\"/></svg>',\n help: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M9.5 9.5A2.5 2.5 0 1 1 12 12.5v1M12 17h.01\"/></svg>',\n} as const;\n\n/** Valid icon keys for the nav components. */\nexport type IconName = keyof typeof ICONS;\n\n/** Icon names, handy for control lists / selects. */\nexport const ICON_NAMES = Object.keys(ICONS) as IconName[];\n","import { cx } from \"../lib/cx\";\nimport { ICONS, type IconName } from \"../lib/icons\";\n\n/* ATOM · NavIcon — a single 18px line icon from the shared set. */\n\nexport interface NavIconProps {\n name?: IconName;\n /** Full-opacity + text color when active. */\n active?: boolean;\n}\n\nexport function NavIcon({ name = \"grid\", active = false }: NavIconProps) {\n return (\n <span\n className={cx(\n \"shrink-0 [&_svg]:h-[18px] [&_svg]:w-[18px]\",\n active ? \"opacity-100 text-cb-text\" : \"opacity-75\",\n )}\n dangerouslySetInnerHTML={{ __html: ICONS[name] ?? \"\" }}\n />\n );\n}\n\nexport default NavIcon;\n","export default \"data:image/png;base64,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\"","import cbLogo from \"../assets/logo.png\";\nimport { cx } from \"../lib/cx\";\n\n/* ATOM · Logo — brand mark at the top of the drawer. */\n\nexport interface LogoProps {\n /** Image source (defaults to the Chainberry mark). */\n src?: string;\n alt?: string;\n /** Optional link wrapping the mark. */\n href?: string;\n /** Mini-rail sizing. */\n collapsed?: boolean;\n}\n\nexport function Logo({ src = cbLogo, alt = \"Chainberry\", href, collapsed = false }: LogoProps) {\n const img = (\n <img\n src={src}\n alt={alt}\n className={collapsed ? \"h-[22px] w-[22px] object-cover object-left\" : \"h-6 w-auto\"}\n />\n );\n\n const className = cx(\"flex items-center\", collapsed && \"justify-center\");\n\n return href ? (\n <a href={href} className={className}>\n {img}\n </a>\n ) : (\n <span className={className}>{img}</span>\n );\n}\n\nexport default Logo;\n","/* ATOM · SectionHeading — the uppercase group label (e.g. \"Overview\"). */\n\nexport interface SectionHeadingProps {\n label?: string;\n}\n\nexport function SectionHeading({ label = \"Section\" }: SectionHeadingProps) {\n return (\n <h6 className=\"mx-2.5 mt-2 mb-1 text-[11px] font-semibold uppercase tracking-[0.09em] text-cb-faint\">\n {label}\n </h6>\n );\n}\n\nexport default SectionHeading;\n","import { cx } from \"../lib/cx\";\nimport type { NavItemConfig } from \"../lib/types\";\nimport { NavIcon } from \"../atoms/NavIcon\";\nimport { NavLabel } from \"../atoms/NavLabel\";\nimport { NavBadge } from \"../atoms/NavBadge\";\n\n/* MOLECULE · NavItem — one navigation row.\n Composes NavIcon + NavLabel + NavBadge into a button (or an anchor for\n external links). Renders as an icon-only target when `collapsed`. */\n\nexport interface NavItemProps extends NavItemConfig {\n /** Active/selected styling. */\n active?: boolean;\n /** Icon-only rail. */\n collapsed?: boolean;\n onNavigate?: (id: string) => void;\n}\n\nexport function NavItem({\n id,\n label,\n icon,\n active = false,\n collapsed = false,\n badge,\n soon = false,\n ext,\n onNavigate,\n}: NavItemProps) {\n const className = cx(\n \"group flex w-full items-center rounded-lg text-[14.5px] transition-colors\",\n collapsed ? \"justify-center gap-0 px-0 py-2\" : \"gap-2.5 px-2.5 py-[7px] text-left mb-px\",\n active\n ? \"bg-cb-seg text-cb-text font-medium\"\n : \"font-normal text-cb-muted hover:bg-cb-seg hover:text-cb-ink2\",\n );\n\n const inner = (\n <>\n <NavIcon name={icon} active={active} />\n {!collapsed && (\n <>\n <NavLabel text={label} />\n {soon ? (\n <NavBadge variant=\"soon\" />\n ) : ext ? (\n <NavBadge variant=\"ext\" />\n ) : badge != null ? (\n <NavBadge variant=\"count\" value={badge} />\n ) : null}\n </>\n )}\n </>\n );\n\n if (ext) {\n return (\n <a href={ext} target=\"_blank\" rel=\"noopener\" className={className} title={label}>\n {inner}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n data-nav={id}\n className={className}\n title={label}\n onClick={onNavigate ? () => onNavigate(id) : undefined}\n >\n {inner}\n </button>\n );\n}\n\nexport default NavItem;\n","import { cx } from \"../lib/cx\";\nimport type { NavItemConfig } from \"../lib/types\";\nimport { SectionHeading } from \"../atoms/SectionHeading\";\nimport { NavItem } from \"./NavItem\";\n\n/* MOLECULE · NavGroup — a SectionHeading atom + its NavItem rows. */\n\nexport interface NavGroupProps {\n /** Section heading (hidden when collapsed). */\n label?: string;\n items?: NavItemConfig[];\n /** Id of the active item. */\n activeId?: string;\n /** Icon-only rail. */\n collapsed?: boolean;\n onNavigate?: (id: string) => void;\n}\n\nexport function NavGroup({\n label,\n items = [],\n activeId,\n collapsed = false,\n onNavigate,\n}: NavGroupProps) {\n return (\n <div\n className={cx(\n \"mb-[7px]\",\n collapsed && \"mb-1 border-b border-cb-line pb-1 last:border-b-0\",\n )}\n >\n {!collapsed && label && <SectionHeading label={label} />}\n {items.map((it) => (\n <NavItem\n key={it.id}\n {...it}\n active={it.id === activeId}\n collapsed={collapsed}\n onNavigate={onNavigate}\n />\n ))}\n </div>\n );\n}\n\nexport default NavGroup;\n","import type { NavGroupConfig } from \"./types\";\n\n/* Navigation presets — data sources for the NavDrawer organism.\n Pass an explicit `config`, or a `preset` name. */\n\n/** FULL_NAV — the complete app navigation. */\nexport const FULL_NAV: NavGroupConfig[] = [\n { label: \"Overview\", items: [\n { id: \"dashboard\", label: \"Dashboard\", icon: \"grid\" },\n { id: \"approvals\", label: \"Approval Required\", icon: \"checkc\", badge: 3 },\n ]},\n { label: \"Transactions\", items: [\n { id: \"transactions\", label: \"All Transactions\", icon: \"swap\" },\n { id: \"actionreq\", label: \"Action Required\", icon: \"shield\", badge: 2 },\n ]},\n { label: \"Treasury\", items: [\n { id: \"wallets\", label: \"Wallets\", icon: \"wallet\" },\n { id: \"deposit\", label: \"Deposit\", icon: \"down\" },\n { id: \"withdraw\", label: \"Withdraw\", icon: \"up\" },\n { id: \"conversion\", label: \"Convert\", icon: \"convert\" },\n { id: \"itransfer\", label: \"Internal Transfer\", icon: \"transfer\" },\n { id: \"autotransfer\", label: \"Automatic Transfers\", icon: \"autoflow\" },\n { id: \"addressbook\", label: \"Address Book\", icon: \"book\" },\n ]},\n { label: \"Payments\", items: [\n { id: \"invoices\", label: \"Invoices\", icon: \"invoice\" },\n { id: \"payouts\", label: \"Payouts\", icon: \"payout\" },\n ]},\n { label: \"Banking\", items: [\n { id: \"banking\", label: \"Banking\", icon: \"bank\", soon: true },\n ]},\n { label: \"Reports\", items: [\n { id: \"reports\", label: \"Reports\", icon: \"chart\" },\n ]},\n { label: \"Developers\", items: [\n { id: \"devhub\", label: \"Developer Hub\", icon: \"code\" },\n { id: \"checkout\", label: \"Checkout Widget\", icon: \"widget\" },\n { id: \"devdocs\", label: \"Developer Docs\", icon: \"book\", ext: \"#\" },\n ]},\n { label: \"Administration\", items: [\n { id: \"organization\", label: \"Organization\", icon: \"org\" },\n { id: \"users\", label: \"Users & Roles\", icon: \"users\" },\n { id: \"audit\", label: \"Audit Log\", icon: \"list\" },\n { id: \"billing\", label: \"Billing & Usage\", icon: \"card\" },\n ]},\n { label: \"Help\", items: [\n { id: \"help\", label: \"Help & Support\", icon: \"help\" },\n ]},\n];\n\n/** PRIMARY_NAV — trimmed navigation. */\nexport const PRIMARY_NAV: NavGroupConfig[] = [\n { label: \"Overview\", items: [\n { id: \"dashboard\", label: \"Dashboard\", icon: \"grid\" },\n ]},\n { label: \"Transactions\", items: [\n { id: \"transactions\", label: \"All Transactions\", icon: \"swap\" },\n ]},\n { label: \"Treasury\", items: [\n { id: \"wallets\", label: \"Wallets\", icon: \"wallet\" },\n { id: \"deposit\", label: \"Deposit\", icon: \"down\" },\n { id: \"withdraw\", label: \"Withdraw\", icon: \"up\" },\n { id: \"conversion\", label: \"Convert\", icon: \"convert\" },\n { id: \"itransfer\", label: \"Internal Transfer\", icon: \"transfer\" },\n ]},\n { label: \"Reports\", items: [\n { id: \"reports\", label: \"Reports\", icon: \"chart\" },\n ]},\n { label: \"Developers\", items: [\n { id: \"devhub\", label: \"Developer Hub\", icon: \"code\" },\n { id: \"devdocs\", label: \"Developer Docs\", icon: \"book\", ext: \"#\" },\n ]},\n { label: \"Administration\", items: [\n { id: \"organization\", label: \"Organization\", icon: \"org\" },\n { id: \"users\", label: \"Users & Roles\", icon: \"users\" },\n { id: \"billing\", label: \"Billing & Usage\", icon: \"card\" },\n ]},\n];\n\n/** Named presets, for app wiring and control selects. */\nexport const NAV_PRESETS = {\n primary: PRIMARY_NAV,\n full: FULL_NAV,\n} as const;\n\nexport type NavPreset = keyof typeof NAV_PRESETS;\n","import { cx } from \"../lib/cx\";\nimport type { NavGroupConfig } from \"../lib/types\";\nimport { NAV_PRESETS, PRIMARY_NAV, type NavPreset } from \"../lib/navConfig\";\nimport { Logo } from \"../atoms/Logo\";\nimport { NavGroup } from \"../molecules/NavGroup\";\n\n/* ORGANISM · NavDrawer — the full sidebar.\n Data-driven: pass an explicit `config` (array of groups) or a `preset` name\n (\"primary\" | \"full\"). Composes the Logo atom + NavGroup molecules. */\n\nexport interface NavDrawerProps {\n /** Explicit nav config; overrides `preset`. */\n config?: NavGroupConfig[];\n preset?: NavPreset;\n activeId?: string;\n collapsed?: boolean;\n /** Override the logo image. */\n logoSrc?: string;\n onNavigate?: (id: string) => void;\n}\n\nexport function NavDrawer({\n config,\n preset = \"primary\",\n activeId = \"dashboard\",\n collapsed = false,\n logoSrc,\n onNavigate,\n}: NavDrawerProps) {\n const groups = config ?? NAV_PRESETS[preset] ?? PRIMARY_NAV;\n\n return (\n <aside\n className={cx(\n \"flex h-full shrink-0 flex-col overflow-y-auto bg-cb-sidebar border-r border-cb-line\",\n collapsed ? \"w-[62px] px-[9px] pt-[14px] pb-2.5\" : \"w-[260px] px-2.5 pt-[18px] pb-2.5\",\n )}\n >\n <div\n className={cx(\n \"mb-1 flex items-center pb-2.5\",\n collapsed ? \"justify-center px-0\" : \"px-2.5\",\n )}\n >\n <Logo src={logoSrc} collapsed={collapsed} />\n </div>\n\n {groups.map((group, i) => (\n <NavGroup\n key={group.label || i}\n {...group}\n activeId={activeId}\n collapsed={collapsed}\n onNavigate={onNavigate}\n />\n ))}\n </aside>\n );\n}\n\nexport default NavDrawer;\n"],"names":["cx","c","VARIANTS","NavBadge","variant","value","NavLabel","text","jsx","ICONS","ICON_NAMES","NavIcon","name","active","cbLogo","Logo","src","alt","href","collapsed","img","className","SectionHeading","label","NavItem","id","icon","badge","soon","ext","onNavigate","inner","jsxs","Fragment","NavGroup","items","activeId","it","FULL_NAV","PRIMARY_NAV","NAV_PRESETS","NavDrawer","config","preset","logoSrc","groups","group"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { JSX } from 'react';
|
|
2
|
+
|
|
3
|
+
/** FULL_NAV — the complete app navigation. */
|
|
4
|
+
export declare const FULL_NAV: NavGroupConfig[];
|
|
5
|
+
|
|
6
|
+
/** Icon names, handy for control lists / selects. */
|
|
7
|
+
export declare const ICON_NAMES: IconName[];
|
|
8
|
+
|
|
9
|
+
/** Valid icon keys for the nav components. */
|
|
10
|
+
export declare type IconName = keyof typeof ICONS;
|
|
11
|
+
|
|
12
|
+
export declare const ICONS: {
|
|
13
|
+
readonly grid: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\"/></svg>";
|
|
14
|
+
readonly checkc: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M8.5 12.5l2.5 2.5 4.5-5\"/></svg>";
|
|
15
|
+
readonly swap: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 7h13M14 4l3 3-3 3M20 17H7M10 14l-3 3 3 3\"/></svg>";
|
|
16
|
+
readonly shield: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z\"/></svg>";
|
|
17
|
+
readonly wallet: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"6\" width=\"18\" height=\"13\" rx=\"2.5\"/><path d=\"M3 10h18M16 15h2\"/></svg>";
|
|
18
|
+
readonly down: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 4v11M7 10l5 5 5-5M5 20h14\"/></svg>";
|
|
19
|
+
readonly up: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 20V9M7 14l5-5 5 5M5 4h14\"/></svg>";
|
|
20
|
+
readonly convert: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 12a8 8 0 1 1-2.3-5.7M20 3v5h-5\"/></svg>";
|
|
21
|
+
readonly transfer: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 8h14M15 5l3 3-3 3M20 16H6M9 13l-3 3 3 3\"/></svg>";
|
|
22
|
+
readonly autoflow: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M17 2l4 4-4 4M3 11V9a4 4 0 0 1 4-4h14M7 22l-4-4 4-4M21 13v2a4 4 0 0 1-4 4H3\"/></svg>";
|
|
23
|
+
readonly book: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 4h11a3 3 0 0 1 3 3v13H8a3 3 0 0 1-3-3V4z\"/><path d=\"M5 17a3 3 0 0 1 3-3h11\"/></svg>";
|
|
24
|
+
readonly invoice: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 3h9l4 4v14H6z\"/><path d=\"M14 3v5h5M9 12h6M9 16h6\"/></svg>";
|
|
25
|
+
readonly payout: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 6h10M4 12h7M4 18h10M17 9l4 3-4 3M21 12h-7\"/></svg>";
|
|
26
|
+
readonly bank: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M3 9l9-5 9 5M4 9v9M20 9v9M8 12v6M12 12v6M16 12v6M3 21h18\"/></svg>";
|
|
27
|
+
readonly chart: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 20V6M4 20h16M9 16v-5M14 16V8M19 16v-3\"/></svg>";
|
|
28
|
+
readonly code: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M8 8l-5 4 5 4M16 8l5 4-5 4M13 5l-3 14\"/></svg>";
|
|
29
|
+
readonly widget: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2.5\"/><path d=\"M3 9h18M9 9v11\"/></svg>";
|
|
30
|
+
readonly org: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"4\" y=\"3\" width=\"16\" height=\"18\" rx=\"2\"/><path d=\"M9 7h2M13 7h2M9 11h2M13 11h2M9 15h2M13 15h2\"/></svg>";
|
|
31
|
+
readonly users: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"9\" cy=\"8.5\" r=\"3.5\"/><path d=\"M3 20c.8-3.2 3.2-5 6-5s5.2 1.8 6 5M16 5.5a3.5 3.5 0 0 1 0 6M17.5 15.2c2 .7 3 2.2 3.5 4.8\"/></svg>";
|
|
32
|
+
readonly list: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M8 6h13M8 12h13M8 18h13M3.5 6h.01M3.5 12h.01M3.5 18h.01\"/></svg>";
|
|
33
|
+
readonly card: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2.5\"/><path d=\"M3 10h18M7 15h4\"/></svg>";
|
|
34
|
+
readonly help: "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M9.5 9.5A2.5 2.5 0 1 1 12 12.5v1M12 17h.01\"/></svg>";
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export declare function Logo({ src, alt, href, collapsed }: LogoProps): JSX.Element;
|
|
38
|
+
|
|
39
|
+
export declare interface LogoProps {
|
|
40
|
+
/** Image source (defaults to the Chainberry mark). */
|
|
41
|
+
src?: string;
|
|
42
|
+
alt?: string;
|
|
43
|
+
/** Optional link wrapping the mark. */
|
|
44
|
+
href?: string;
|
|
45
|
+
/** Mini-rail sizing. */
|
|
46
|
+
collapsed?: boolean;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Named presets, for app wiring and control selects. */
|
|
50
|
+
export declare const NAV_PRESETS: {
|
|
51
|
+
readonly primary: NavGroupConfig[];
|
|
52
|
+
readonly full: NavGroupConfig[];
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export declare function NavBadge({ variant, value }: NavBadgeProps): JSX.Element;
|
|
56
|
+
|
|
57
|
+
export declare interface NavBadgeProps {
|
|
58
|
+
variant?: NavBadgeVariant;
|
|
59
|
+
/** Text for the count variant; ignored by soon/ext. */
|
|
60
|
+
value?: string | number;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export declare type NavBadgeVariant = "count" | "soon" | "ext";
|
|
64
|
+
|
|
65
|
+
export declare function NavDrawer({ config, preset, activeId, collapsed, logoSrc, onNavigate, }: NavDrawerProps): JSX.Element;
|
|
66
|
+
|
|
67
|
+
export declare interface NavDrawerProps {
|
|
68
|
+
/** Explicit nav config; overrides `preset`. */
|
|
69
|
+
config?: NavGroupConfig[];
|
|
70
|
+
preset?: NavPreset;
|
|
71
|
+
activeId?: string;
|
|
72
|
+
collapsed?: boolean;
|
|
73
|
+
/** Override the logo image. */
|
|
74
|
+
logoSrc?: string;
|
|
75
|
+
onNavigate?: (id: string) => void;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export declare function NavGroup({ label, items, activeId, collapsed, onNavigate, }: NavGroupProps): JSX.Element;
|
|
79
|
+
|
|
80
|
+
/** A titled group of nav items. */
|
|
81
|
+
export declare interface NavGroupConfig {
|
|
82
|
+
/** Section heading (hidden when the drawer is collapsed). */
|
|
83
|
+
label: string;
|
|
84
|
+
items: NavItemConfig[];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export declare interface NavGroupProps {
|
|
88
|
+
/** Section heading (hidden when collapsed). */
|
|
89
|
+
label?: string;
|
|
90
|
+
items?: NavItemConfig[];
|
|
91
|
+
/** Id of the active item. */
|
|
92
|
+
activeId?: string;
|
|
93
|
+
/** Icon-only rail. */
|
|
94
|
+
collapsed?: boolean;
|
|
95
|
+
onNavigate?: (id: string) => void;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export declare function NavIcon({ name, active }: NavIconProps): JSX.Element;
|
|
99
|
+
|
|
100
|
+
export declare interface NavIconProps {
|
|
101
|
+
name?: IconName;
|
|
102
|
+
/** Full-opacity + text color when active. */
|
|
103
|
+
active?: boolean;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export declare function NavItem({ id, label, icon, active, collapsed, badge, soon, ext, onNavigate, }: NavItemProps): JSX.Element;
|
|
107
|
+
|
|
108
|
+
/** A single navigation entry. */
|
|
109
|
+
export declare interface NavItemConfig {
|
|
110
|
+
/** Stable key + route id. */
|
|
111
|
+
id: string;
|
|
112
|
+
/** Visible label text. */
|
|
113
|
+
label: string;
|
|
114
|
+
/** Icon key (see ICONS). */
|
|
115
|
+
icon: IconName;
|
|
116
|
+
/** Count pill shown on the trailing edge. */
|
|
117
|
+
badge?: number;
|
|
118
|
+
/** Renders a "SOON" tag instead of a badge. */
|
|
119
|
+
soon?: boolean;
|
|
120
|
+
/** External URL → renders as an anchor with a ↗ indicator. */
|
|
121
|
+
ext?: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export declare interface NavItemProps extends NavItemConfig {
|
|
125
|
+
/** Active/selected styling. */
|
|
126
|
+
active?: boolean;
|
|
127
|
+
/** Icon-only rail. */
|
|
128
|
+
collapsed?: boolean;
|
|
129
|
+
onNavigate?: (id: string) => void;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export declare function NavLabel({ text }: NavLabelProps): JSX.Element;
|
|
133
|
+
|
|
134
|
+
export declare interface NavLabelProps {
|
|
135
|
+
text?: string;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export declare type NavPreset = keyof typeof NAV_PRESETS;
|
|
139
|
+
|
|
140
|
+
/** PRIMARY_NAV — trimmed navigation. */
|
|
141
|
+
export declare const PRIMARY_NAV: NavGroupConfig[];
|
|
142
|
+
|
|
143
|
+
export declare function SectionHeading({ label }: SectionHeadingProps): JSX.Element;
|
|
144
|
+
|
|
145
|
+
export declare interface SectionHeadingProps {
|
|
146
|
+
label?: string;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export { }
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { jsx as e, jsxs as c, Fragment as v } from "react/jsx-runtime";
|
|
2
|
+
const l = (...A) => A.filter(Boolean).join(" "), g = {
|
|
3
|
+
count: "ml-auto rounded-lg bg-cb-blue px-1.5 py-px text-[10px] font-bold text-white",
|
|
4
|
+
soon: "ml-auto rounded-md bg-cb-orange-soft px-1.5 py-[1.5px] text-[9.5px] font-bold tracking-[0.04em] text-cb-soon",
|
|
5
|
+
ext: "ml-auto text-xs text-cb-faint"
|
|
6
|
+
};
|
|
7
|
+
function u({ variant: A = "count", value: o }) {
|
|
8
|
+
return /* @__PURE__ */ e("span", { className: l(g[A] ?? g.count), children: A === "soon" ? "SOON" : A === "ext" ? "↗" : String(o ?? "") });
|
|
9
|
+
}
|
|
10
|
+
function f({ text: A = "Label" }) {
|
|
11
|
+
return /* @__PURE__ */ e("span", { className: "flex-1 truncate", children: A });
|
|
12
|
+
}
|
|
13
|
+
const m = {
|
|
14
|
+
grid: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/></svg>',
|
|
15
|
+
checkc: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M8.5 12.5l2.5 2.5 4.5-5"/></svg>',
|
|
16
|
+
swap: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 7h13M14 4l3 3-3 3M20 17H7M10 14l-3 3 3 3"/></svg>',
|
|
17
|
+
shield: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z"/></svg>',
|
|
18
|
+
wallet: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="6" width="18" height="13" rx="2.5"/><path d="M3 10h18M16 15h2"/></svg>',
|
|
19
|
+
down: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 4v11M7 10l5 5 5-5M5 20h14"/></svg>',
|
|
20
|
+
up: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20V9M7 14l5-5 5 5M5 4h14"/></svg>',
|
|
21
|
+
convert: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 12a8 8 0 1 1-2.3-5.7M20 3v5h-5"/></svg>',
|
|
22
|
+
transfer: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 8h14M15 5l3 3-3 3M20 16H6M9 13l-3 3 3 3"/></svg>',
|
|
23
|
+
autoflow: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 2l4 4-4 4M3 11V9a4 4 0 0 1 4-4h14M7 22l-4-4 4-4M21 13v2a4 4 0 0 1-4 4H3"/></svg>',
|
|
24
|
+
book: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 4h11a3 3 0 0 1 3 3v13H8a3 3 0 0 1-3-3V4z"/><path d="M5 17a3 3 0 0 1 3-3h11"/></svg>',
|
|
25
|
+
invoice: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 3h9l4 4v14H6z"/><path d="M14 3v5h5M9 12h6M9 16h6"/></svg>',
|
|
26
|
+
payout: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6h10M4 12h7M4 18h10M17 9l4 3-4 3M21 12h-7"/></svg>',
|
|
27
|
+
bank: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-5 9 5M4 9v9M20 9v9M8 12v6M12 12v6M16 12v6M3 21h18"/></svg>',
|
|
28
|
+
chart: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 20V6M4 20h16M9 16v-5M14 16V8M19 16v-3"/></svg>',
|
|
29
|
+
code: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M8 8l-5 4 5 4M16 8l5 4-5 4M13 5l-3 14"/></svg>',
|
|
30
|
+
widget: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="16" rx="2.5"/><path d="M3 9h18M9 9v11"/></svg>',
|
|
31
|
+
org: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="4" y="3" width="16" height="18" rx="2"/><path d="M9 7h2M13 7h2M9 11h2M13 11h2M9 15h2M13 15h2"/></svg>',
|
|
32
|
+
users: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="9" cy="8.5" r="3.5"/><path d="M3 20c.8-3.2 3.2-5 6-5s5.2 1.8 6 5M16 5.5a3.5 3.5 0 0 1 0 6M17.5 15.2c2 .7 3 2.2 3.5 4.8"/></svg>',
|
|
33
|
+
list: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M8 6h13M8 12h13M8 18h13M3.5 6h.01M3.5 12h.01M3.5 18h.01"/></svg>',
|
|
34
|
+
card: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="5" width="18" height="14" rx="2.5"/><path d="M3 10h18M7 15h4"/></svg>',
|
|
35
|
+
help: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M9.5 9.5A2.5 2.5 0 1 1 12 12.5v1M12 17h.01"/></svg>'
|
|
36
|
+
}, q = Object.keys(m);
|
|
37
|
+
function h({ name: A = "grid", active: o = !1 }) {
|
|
38
|
+
return /* @__PURE__ */ e(
|
|
39
|
+
"span",
|
|
40
|
+
{
|
|
41
|
+
className: l(
|
|
42
|
+
"shrink-0 [&_svg]:h-[18px] [&_svg]:w-[18px]",
|
|
43
|
+
o ? "opacity-100 text-cb-text" : "opacity-75"
|
|
44
|
+
),
|
|
45
|
+
dangerouslySetInnerHTML: { __html: m[A] ?? "" }
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
const w = "data:image/png;base64,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";
|
|
50
|
+
function B({ src: A = w, alt: o = "Chainberry", href: s, collapsed: t = !1 }) {
|
|
51
|
+
const a = /* @__PURE__ */ e(
|
|
52
|
+
"img",
|
|
53
|
+
{
|
|
54
|
+
src: A,
|
|
55
|
+
alt: o,
|
|
56
|
+
className: t ? "h-[22px] w-[22px] object-cover object-left" : "h-6 w-auto"
|
|
57
|
+
}
|
|
58
|
+
), r = l("flex items-center", t && "justify-center");
|
|
59
|
+
return s ? /* @__PURE__ */ e("a", { href: s, className: r, children: a }) : /* @__PURE__ */ e("span", { className: r, children: a });
|
|
60
|
+
}
|
|
61
|
+
function z({ label: A = "Section" }) {
|
|
62
|
+
return /* @__PURE__ */ e("h6", { className: "mx-2.5 mt-2 mb-1 text-[11px] font-semibold uppercase tracking-[0.09em] text-cb-faint", children: A });
|
|
63
|
+
}
|
|
64
|
+
function T({
|
|
65
|
+
id: A,
|
|
66
|
+
label: o,
|
|
67
|
+
icon: s,
|
|
68
|
+
active: t = !1,
|
|
69
|
+
collapsed: a = !1,
|
|
70
|
+
badge: r,
|
|
71
|
+
soon: d = !1,
|
|
72
|
+
ext: n,
|
|
73
|
+
onNavigate: i
|
|
74
|
+
}) {
|
|
75
|
+
const b = l(
|
|
76
|
+
"group flex w-full items-center rounded-lg text-[14.5px] transition-colors",
|
|
77
|
+
a ? "justify-center gap-0 px-0 py-2" : "gap-2.5 px-2.5 py-[7px] text-left mb-px",
|
|
78
|
+
t ? "bg-cb-seg text-cb-text font-medium" : "font-normal text-cb-muted hover:bg-cb-seg hover:text-cb-ink2"
|
|
79
|
+
), p = /* @__PURE__ */ c(v, { children: [
|
|
80
|
+
/* @__PURE__ */ e(h, { name: s, active: t }),
|
|
81
|
+
!a && /* @__PURE__ */ c(v, { children: [
|
|
82
|
+
/* @__PURE__ */ e(f, { text: o }),
|
|
83
|
+
d ? /* @__PURE__ */ e(u, { variant: "soon" }) : n ? /* @__PURE__ */ e(u, { variant: "ext" }) : r != null ? /* @__PURE__ */ e(u, { variant: "count", value: r }) : null
|
|
84
|
+
] })
|
|
85
|
+
] });
|
|
86
|
+
return n ? /* @__PURE__ */ e("a", { href: n, target: "_blank", rel: "noopener", className: b, title: o, children: p }) : /* @__PURE__ */ e(
|
|
87
|
+
"button",
|
|
88
|
+
{
|
|
89
|
+
type: "button",
|
|
90
|
+
"data-nav": A,
|
|
91
|
+
className: b,
|
|
92
|
+
title: o,
|
|
93
|
+
onClick: i ? () => i(A) : void 0,
|
|
94
|
+
children: p
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
function k({
|
|
99
|
+
label: A,
|
|
100
|
+
items: o = [],
|
|
101
|
+
activeId: s,
|
|
102
|
+
collapsed: t = !1,
|
|
103
|
+
onNavigate: a
|
|
104
|
+
}) {
|
|
105
|
+
return /* @__PURE__ */ c(
|
|
106
|
+
"div",
|
|
107
|
+
{
|
|
108
|
+
className: l(
|
|
109
|
+
"mb-[7px]",
|
|
110
|
+
t && "mb-1 border-b border-cb-line pb-1 last:border-b-0"
|
|
111
|
+
),
|
|
112
|
+
children: [
|
|
113
|
+
!t && A && /* @__PURE__ */ e(z, { label: A }),
|
|
114
|
+
o.map((r) => /* @__PURE__ */ e(
|
|
115
|
+
T,
|
|
116
|
+
{
|
|
117
|
+
...r,
|
|
118
|
+
active: r.id === s,
|
|
119
|
+
collapsed: t,
|
|
120
|
+
onNavigate: a
|
|
121
|
+
},
|
|
122
|
+
r.id
|
|
123
|
+
))
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
const C = [
|
|
129
|
+
{ label: "Overview", items: [
|
|
130
|
+
{ id: "dashboard", label: "Dashboard", icon: "grid" },
|
|
131
|
+
{ id: "approvals", label: "Approval Required", icon: "checkc", badge: 3 }
|
|
132
|
+
] },
|
|
133
|
+
{ label: "Transactions", items: [
|
|
134
|
+
{ id: "transactions", label: "All Transactions", icon: "swap" },
|
|
135
|
+
{ id: "actionreq", label: "Action Required", icon: "shield", badge: 2 }
|
|
136
|
+
] },
|
|
137
|
+
{ label: "Treasury", items: [
|
|
138
|
+
{ id: "wallets", label: "Wallets", icon: "wallet" },
|
|
139
|
+
{ id: "deposit", label: "Deposit", icon: "down" },
|
|
140
|
+
{ id: "withdraw", label: "Withdraw", icon: "up" },
|
|
141
|
+
{ id: "conversion", label: "Convert", icon: "convert" },
|
|
142
|
+
{ id: "itransfer", label: "Internal Transfer", icon: "transfer" },
|
|
143
|
+
{ id: "autotransfer", label: "Automatic Transfers", icon: "autoflow" },
|
|
144
|
+
{ id: "addressbook", label: "Address Book", icon: "book" }
|
|
145
|
+
] },
|
|
146
|
+
{ label: "Payments", items: [
|
|
147
|
+
{ id: "invoices", label: "Invoices", icon: "invoice" },
|
|
148
|
+
{ id: "payouts", label: "Payouts", icon: "payout" }
|
|
149
|
+
] },
|
|
150
|
+
{ label: "Banking", items: [
|
|
151
|
+
{ id: "banking", label: "Banking", icon: "bank", soon: !0 }
|
|
152
|
+
] },
|
|
153
|
+
{ label: "Reports", items: [
|
|
154
|
+
{ id: "reports", label: "Reports", icon: "chart" }
|
|
155
|
+
] },
|
|
156
|
+
{ label: "Developers", items: [
|
|
157
|
+
{ id: "devhub", label: "Developer Hub", icon: "code" },
|
|
158
|
+
{ id: "checkout", label: "Checkout Widget", icon: "widget" },
|
|
159
|
+
{ id: "devdocs", label: "Developer Docs", icon: "book", ext: "#" }
|
|
160
|
+
] },
|
|
161
|
+
{ label: "Administration", items: [
|
|
162
|
+
{ id: "organization", label: "Organization", icon: "org" },
|
|
163
|
+
{ id: "users", label: "Users & Roles", icon: "users" },
|
|
164
|
+
{ id: "audit", label: "Audit Log", icon: "list" },
|
|
165
|
+
{ id: "billing", label: "Billing & Usage", icon: "card" }
|
|
166
|
+
] },
|
|
167
|
+
{ label: "Help", items: [
|
|
168
|
+
{ id: "help", label: "Help & Support", icon: "help" }
|
|
169
|
+
] }
|
|
170
|
+
], x = [
|
|
171
|
+
{ label: "Overview", items: [
|
|
172
|
+
{ id: "dashboard", label: "Dashboard", icon: "grid" }
|
|
173
|
+
] },
|
|
174
|
+
{ label: "Transactions", items: [
|
|
175
|
+
{ id: "transactions", label: "All Transactions", icon: "swap" }
|
|
176
|
+
] },
|
|
177
|
+
{ label: "Treasury", items: [
|
|
178
|
+
{ id: "wallets", label: "Wallets", icon: "wallet" },
|
|
179
|
+
{ id: "deposit", label: "Deposit", icon: "down" },
|
|
180
|
+
{ id: "withdraw", label: "Withdraw", icon: "up" },
|
|
181
|
+
{ id: "conversion", label: "Convert", icon: "convert" },
|
|
182
|
+
{ id: "itransfer", label: "Internal Transfer", icon: "transfer" }
|
|
183
|
+
] },
|
|
184
|
+
{ label: "Reports", items: [
|
|
185
|
+
{ id: "reports", label: "Reports", icon: "chart" }
|
|
186
|
+
] },
|
|
187
|
+
{ label: "Developers", items: [
|
|
188
|
+
{ id: "devhub", label: "Developer Hub", icon: "code" },
|
|
189
|
+
{ id: "devdocs", label: "Developer Docs", icon: "book", ext: "#" }
|
|
190
|
+
] },
|
|
191
|
+
{ label: "Administration", items: [
|
|
192
|
+
{ id: "organization", label: "Organization", icon: "org" },
|
|
193
|
+
{ id: "users", label: "Users & Roles", icon: "users" },
|
|
194
|
+
{ id: "billing", label: "Billing & Usage", icon: "card" }
|
|
195
|
+
] }
|
|
196
|
+
], M = {
|
|
197
|
+
primary: x,
|
|
198
|
+
full: C
|
|
199
|
+
};
|
|
200
|
+
function H({
|
|
201
|
+
config: A,
|
|
202
|
+
preset: o = "primary",
|
|
203
|
+
activeId: s = "dashboard",
|
|
204
|
+
collapsed: t = !1,
|
|
205
|
+
logoSrc: a,
|
|
206
|
+
onNavigate: r
|
|
207
|
+
}) {
|
|
208
|
+
const d = A ?? M[o] ?? x;
|
|
209
|
+
return /* @__PURE__ */ c(
|
|
210
|
+
"aside",
|
|
211
|
+
{
|
|
212
|
+
className: l(
|
|
213
|
+
"flex h-full shrink-0 flex-col overflow-y-auto bg-cb-sidebar border-r border-cb-line",
|
|
214
|
+
t ? "w-[62px] px-[9px] pt-[14px] pb-2.5" : "w-[260px] px-2.5 pt-[18px] pb-2.5"
|
|
215
|
+
),
|
|
216
|
+
children: [
|
|
217
|
+
/* @__PURE__ */ e(
|
|
218
|
+
"div",
|
|
219
|
+
{
|
|
220
|
+
className: l(
|
|
221
|
+
"mb-1 flex items-center pb-2.5",
|
|
222
|
+
t ? "justify-center px-0" : "px-2.5"
|
|
223
|
+
),
|
|
224
|
+
children: /* @__PURE__ */ e(B, { src: a, collapsed: t })
|
|
225
|
+
}
|
|
226
|
+
),
|
|
227
|
+
d.map((n, i) => /* @__PURE__ */ e(
|
|
228
|
+
k,
|
|
229
|
+
{
|
|
230
|
+
...n,
|
|
231
|
+
activeId: s,
|
|
232
|
+
collapsed: t,
|
|
233
|
+
onNavigate: r
|
|
234
|
+
},
|
|
235
|
+
n.label || i
|
|
236
|
+
))
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
export {
|
|
242
|
+
C as FULL_NAV,
|
|
243
|
+
m as ICONS,
|
|
244
|
+
q as ICON_NAMES,
|
|
245
|
+
B as Logo,
|
|
246
|
+
M as NAV_PRESETS,
|
|
247
|
+
u as NavBadge,
|
|
248
|
+
H as NavDrawer,
|
|
249
|
+
k as NavGroup,
|
|
250
|
+
h as NavIcon,
|
|
251
|
+
T as NavItem,
|
|
252
|
+
f as NavLabel,
|
|
253
|
+
x as PRIMARY_NAV,
|
|
254
|
+
z as SectionHeading
|
|
255
|
+
};
|
|
256
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/lib/cx.ts","../src/atoms/NavBadge.tsx","../src/atoms/NavLabel.tsx","../src/lib/icons.ts","../src/atoms/NavIcon.tsx","../src/assets/logo.png","../src/atoms/Logo.tsx","../src/atoms/SectionHeading.tsx","../src/molecules/NavItem.tsx","../src/molecules/NavGroup.tsx","../src/lib/navConfig.ts","../src/organisms/NavDrawer.tsx"],"sourcesContent":["/** Join truthy class fragments into a single className string. */\nexport const cx = (...c: Array<string | false | null | undefined>): string =>\n c.filter(Boolean).join(\" \");\n","import { cx } from \"../lib/cx\";\n\n/* ATOM · NavBadge — trailing indicator on a nav item.\n Variants:\n \"count\" → blue pill with a number\n \"soon\" → amber \"SOON\" tag\n \"ext\" → faint ↗ arrow (external link) */\n\nexport type NavBadgeVariant = \"count\" | \"soon\" | \"ext\";\n\nconst VARIANTS: Record<NavBadgeVariant, string> = {\n count: \"ml-auto rounded-lg bg-cb-blue px-1.5 py-px text-[10px] font-bold text-white\",\n soon: \"ml-auto rounded-md bg-cb-orange-soft px-1.5 py-[1.5px] text-[9.5px] font-bold tracking-[0.04em] text-cb-soon\",\n ext: \"ml-auto text-xs text-cb-faint\",\n};\n\nexport interface NavBadgeProps {\n variant?: NavBadgeVariant;\n /** Text for the count variant; ignored by soon/ext. */\n value?: string | number;\n}\n\nexport function NavBadge({ variant = \"count\", value }: NavBadgeProps) {\n return (\n <span className={cx(VARIANTS[variant] ?? VARIANTS.count)}>\n {variant === \"soon\" ? \"SOON\" : variant === \"ext\" ? \"↗\" : String(value ?? \"\")}\n </span>\n );\n}\n\nexport default NavBadge;\n","/* ATOM · NavLabel — the text label of a nav item (truncates, fills row). */\n\nexport interface NavLabelProps {\n text?: string;\n}\n\nexport function NavLabel({ text = \"Label\" }: NavLabelProps) {\n return <span className=\"flex-1 truncate\">{text}</span>;\n}\n\nexport default NavLabel;\n","/* Icon set — inline SVG strings using `currentColor` for theming.\n Copied verbatim from the prototype so visuals match 1:1. */\nexport const ICONS = {\n grid: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\"/></svg>',\n checkc: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M8.5 12.5l2.5 2.5 4.5-5\"/></svg>',\n swap: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 7h13M14 4l3 3-3 3M20 17H7M10 14l-3 3 3 3\"/></svg>',\n shield: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z\"/></svg>',\n wallet: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"6\" width=\"18\" height=\"13\" rx=\"2.5\"/><path d=\"M3 10h18M16 15h2\"/></svg>',\n down: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 4v11M7 10l5 5 5-5M5 20h14\"/></svg>',\n up: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 20V9M7 14l5-5 5 5M5 4h14\"/></svg>',\n convert: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 12a8 8 0 1 1-2.3-5.7M20 3v5h-5\"/></svg>',\n transfer: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 8h14M15 5l3 3-3 3M20 16H6M9 13l-3 3 3 3\"/></svg>',\n autoflow: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M17 2l4 4-4 4M3 11V9a4 4 0 0 1 4-4h14M7 22l-4-4 4-4M21 13v2a4 4 0 0 1-4 4H3\"/></svg>',\n book: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 4h11a3 3 0 0 1 3 3v13H8a3 3 0 0 1-3-3V4z\"/><path d=\"M5 17a3 3 0 0 1 3-3h11\"/></svg>',\n invoice: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 3h9l4 4v14H6z\"/><path d=\"M14 3v5h5M9 12h6M9 16h6\"/></svg>',\n payout: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 6h10M4 12h7M4 18h10M17 9l4 3-4 3M21 12h-7\"/></svg>',\n bank: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M3 9l9-5 9 5M4 9v9M20 9v9M8 12v6M12 12v6M16 12v6M3 21h18\"/></svg>',\n chart: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 20V6M4 20h16M9 16v-5M14 16V8M19 16v-3\"/></svg>',\n code: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M8 8l-5 4 5 4M16 8l5 4-5 4M13 5l-3 14\"/></svg>',\n widget: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2.5\"/><path d=\"M3 9h18M9 9v11\"/></svg>',\n org: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"4\" y=\"3\" width=\"16\" height=\"18\" rx=\"2\"/><path d=\"M9 7h2M13 7h2M9 11h2M13 11h2M9 15h2M13 15h2\"/></svg>',\n users: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"9\" cy=\"8.5\" r=\"3.5\"/><path d=\"M3 20c.8-3.2 3.2-5 6-5s5.2 1.8 6 5M16 5.5a3.5 3.5 0 0 1 0 6M17.5 15.2c2 .7 3 2.2 3.5 4.8\"/></svg>',\n list: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M8 6h13M8 12h13M8 18h13M3.5 6h.01M3.5 12h.01M3.5 18h.01\"/></svg>',\n card: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2.5\"/><path d=\"M3 10h18M7 15h4\"/></svg>',\n help: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M9.5 9.5A2.5 2.5 0 1 1 12 12.5v1M12 17h.01\"/></svg>',\n} as const;\n\n/** Valid icon keys for the nav components. */\nexport type IconName = keyof typeof ICONS;\n\n/** Icon names, handy for control lists / selects. */\nexport const ICON_NAMES = Object.keys(ICONS) as IconName[];\n","import { cx } from \"../lib/cx\";\nimport { ICONS, type IconName } from \"../lib/icons\";\n\n/* ATOM · NavIcon — a single 18px line icon from the shared set. */\n\nexport interface NavIconProps {\n name?: IconName;\n /** Full-opacity + text color when active. */\n active?: boolean;\n}\n\nexport function NavIcon({ name = \"grid\", active = false }: NavIconProps) {\n return (\n <span\n className={cx(\n \"shrink-0 [&_svg]:h-[18px] [&_svg]:w-[18px]\",\n active ? \"opacity-100 text-cb-text\" : \"opacity-75\",\n )}\n dangerouslySetInnerHTML={{ __html: ICONS[name] ?? \"\" }}\n />\n );\n}\n\nexport default NavIcon;\n","export default \"data:image/png;base64,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\"","import cbLogo from \"../assets/logo.png\";\nimport { cx } from \"../lib/cx\";\n\n/* ATOM · Logo — brand mark at the top of the drawer. */\n\nexport interface LogoProps {\n /** Image source (defaults to the Chainberry mark). */\n src?: string;\n alt?: string;\n /** Optional link wrapping the mark. */\n href?: string;\n /** Mini-rail sizing. */\n collapsed?: boolean;\n}\n\nexport function Logo({ src = cbLogo, alt = \"Chainberry\", href, collapsed = false }: LogoProps) {\n const img = (\n <img\n src={src}\n alt={alt}\n className={collapsed ? \"h-[22px] w-[22px] object-cover object-left\" : \"h-6 w-auto\"}\n />\n );\n\n const className = cx(\"flex items-center\", collapsed && \"justify-center\");\n\n return href ? (\n <a href={href} className={className}>\n {img}\n </a>\n ) : (\n <span className={className}>{img}</span>\n );\n}\n\nexport default Logo;\n","/* ATOM · SectionHeading — the uppercase group label (e.g. \"Overview\"). */\n\nexport interface SectionHeadingProps {\n label?: string;\n}\n\nexport function SectionHeading({ label = \"Section\" }: SectionHeadingProps) {\n return (\n <h6 className=\"mx-2.5 mt-2 mb-1 text-[11px] font-semibold uppercase tracking-[0.09em] text-cb-faint\">\n {label}\n </h6>\n );\n}\n\nexport default SectionHeading;\n","import { cx } from \"../lib/cx\";\nimport type { NavItemConfig } from \"../lib/types\";\nimport { NavIcon } from \"../atoms/NavIcon\";\nimport { NavLabel } from \"../atoms/NavLabel\";\nimport { NavBadge } from \"../atoms/NavBadge\";\n\n/* MOLECULE · NavItem — one navigation row.\n Composes NavIcon + NavLabel + NavBadge into a button (or an anchor for\n external links). Renders as an icon-only target when `collapsed`. */\n\nexport interface NavItemProps extends NavItemConfig {\n /** Active/selected styling. */\n active?: boolean;\n /** Icon-only rail. */\n collapsed?: boolean;\n onNavigate?: (id: string) => void;\n}\n\nexport function NavItem({\n id,\n label,\n icon,\n active = false,\n collapsed = false,\n badge,\n soon = false,\n ext,\n onNavigate,\n}: NavItemProps) {\n const className = cx(\n \"group flex w-full items-center rounded-lg text-[14.5px] transition-colors\",\n collapsed ? \"justify-center gap-0 px-0 py-2\" : \"gap-2.5 px-2.5 py-[7px] text-left mb-px\",\n active\n ? \"bg-cb-seg text-cb-text font-medium\"\n : \"font-normal text-cb-muted hover:bg-cb-seg hover:text-cb-ink2\",\n );\n\n const inner = (\n <>\n <NavIcon name={icon} active={active} />\n {!collapsed && (\n <>\n <NavLabel text={label} />\n {soon ? (\n <NavBadge variant=\"soon\" />\n ) : ext ? (\n <NavBadge variant=\"ext\" />\n ) : badge != null ? (\n <NavBadge variant=\"count\" value={badge} />\n ) : null}\n </>\n )}\n </>\n );\n\n if (ext) {\n return (\n <a href={ext} target=\"_blank\" rel=\"noopener\" className={className} title={label}>\n {inner}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n data-nav={id}\n className={className}\n title={label}\n onClick={onNavigate ? () => onNavigate(id) : undefined}\n >\n {inner}\n </button>\n );\n}\n\nexport default NavItem;\n","import { cx } from \"../lib/cx\";\nimport type { NavItemConfig } from \"../lib/types\";\nimport { SectionHeading } from \"../atoms/SectionHeading\";\nimport { NavItem } from \"./NavItem\";\n\n/* MOLECULE · NavGroup — a SectionHeading atom + its NavItem rows. */\n\nexport interface NavGroupProps {\n /** Section heading (hidden when collapsed). */\n label?: string;\n items?: NavItemConfig[];\n /** Id of the active item. */\n activeId?: string;\n /** Icon-only rail. */\n collapsed?: boolean;\n onNavigate?: (id: string) => void;\n}\n\nexport function NavGroup({\n label,\n items = [],\n activeId,\n collapsed = false,\n onNavigate,\n}: NavGroupProps) {\n return (\n <div\n className={cx(\n \"mb-[7px]\",\n collapsed && \"mb-1 border-b border-cb-line pb-1 last:border-b-0\",\n )}\n >\n {!collapsed && label && <SectionHeading label={label} />}\n {items.map((it) => (\n <NavItem\n key={it.id}\n {...it}\n active={it.id === activeId}\n collapsed={collapsed}\n onNavigate={onNavigate}\n />\n ))}\n </div>\n );\n}\n\nexport default NavGroup;\n","import type { NavGroupConfig } from \"./types\";\n\n/* Navigation presets — data sources for the NavDrawer organism.\n Pass an explicit `config`, or a `preset` name. */\n\n/** FULL_NAV — the complete app navigation. */\nexport const FULL_NAV: NavGroupConfig[] = [\n { label: \"Overview\", items: [\n { id: \"dashboard\", label: \"Dashboard\", icon: \"grid\" },\n { id: \"approvals\", label: \"Approval Required\", icon: \"checkc\", badge: 3 },\n ]},\n { label: \"Transactions\", items: [\n { id: \"transactions\", label: \"All Transactions\", icon: \"swap\" },\n { id: \"actionreq\", label: \"Action Required\", icon: \"shield\", badge: 2 },\n ]},\n { label: \"Treasury\", items: [\n { id: \"wallets\", label: \"Wallets\", icon: \"wallet\" },\n { id: \"deposit\", label: \"Deposit\", icon: \"down\" },\n { id: \"withdraw\", label: \"Withdraw\", icon: \"up\" },\n { id: \"conversion\", label: \"Convert\", icon: \"convert\" },\n { id: \"itransfer\", label: \"Internal Transfer\", icon: \"transfer\" },\n { id: \"autotransfer\", label: \"Automatic Transfers\", icon: \"autoflow\" },\n { id: \"addressbook\", label: \"Address Book\", icon: \"book\" },\n ]},\n { label: \"Payments\", items: [\n { id: \"invoices\", label: \"Invoices\", icon: \"invoice\" },\n { id: \"payouts\", label: \"Payouts\", icon: \"payout\" },\n ]},\n { label: \"Banking\", items: [\n { id: \"banking\", label: \"Banking\", icon: \"bank\", soon: true },\n ]},\n { label: \"Reports\", items: [\n { id: \"reports\", label: \"Reports\", icon: \"chart\" },\n ]},\n { label: \"Developers\", items: [\n { id: \"devhub\", label: \"Developer Hub\", icon: \"code\" },\n { id: \"checkout\", label: \"Checkout Widget\", icon: \"widget\" },\n { id: \"devdocs\", label: \"Developer Docs\", icon: \"book\", ext: \"#\" },\n ]},\n { label: \"Administration\", items: [\n { id: \"organization\", label: \"Organization\", icon: \"org\" },\n { id: \"users\", label: \"Users & Roles\", icon: \"users\" },\n { id: \"audit\", label: \"Audit Log\", icon: \"list\" },\n { id: \"billing\", label: \"Billing & Usage\", icon: \"card\" },\n ]},\n { label: \"Help\", items: [\n { id: \"help\", label: \"Help & Support\", icon: \"help\" },\n ]},\n];\n\n/** PRIMARY_NAV — trimmed navigation. */\nexport const PRIMARY_NAV: NavGroupConfig[] = [\n { label: \"Overview\", items: [\n { id: \"dashboard\", label: \"Dashboard\", icon: \"grid\" },\n ]},\n { label: \"Transactions\", items: [\n { id: \"transactions\", label: \"All Transactions\", icon: \"swap\" },\n ]},\n { label: \"Treasury\", items: [\n { id: \"wallets\", label: \"Wallets\", icon: \"wallet\" },\n { id: \"deposit\", label: \"Deposit\", icon: \"down\" },\n { id: \"withdraw\", label: \"Withdraw\", icon: \"up\" },\n { id: \"conversion\", label: \"Convert\", icon: \"convert\" },\n { id: \"itransfer\", label: \"Internal Transfer\", icon: \"transfer\" },\n ]},\n { label: \"Reports\", items: [\n { id: \"reports\", label: \"Reports\", icon: \"chart\" },\n ]},\n { label: \"Developers\", items: [\n { id: \"devhub\", label: \"Developer Hub\", icon: \"code\" },\n { id: \"devdocs\", label: \"Developer Docs\", icon: \"book\", ext: \"#\" },\n ]},\n { label: \"Administration\", items: [\n { id: \"organization\", label: \"Organization\", icon: \"org\" },\n { id: \"users\", label: \"Users & Roles\", icon: \"users\" },\n { id: \"billing\", label: \"Billing & Usage\", icon: \"card\" },\n ]},\n];\n\n/** Named presets, for app wiring and control selects. */\nexport const NAV_PRESETS = {\n primary: PRIMARY_NAV,\n full: FULL_NAV,\n} as const;\n\nexport type NavPreset = keyof typeof NAV_PRESETS;\n","import { cx } from \"../lib/cx\";\nimport type { NavGroupConfig } from \"../lib/types\";\nimport { NAV_PRESETS, PRIMARY_NAV, type NavPreset } from \"../lib/navConfig\";\nimport { Logo } from \"../atoms/Logo\";\nimport { NavGroup } from \"../molecules/NavGroup\";\n\n/* ORGANISM · NavDrawer — the full sidebar.\n Data-driven: pass an explicit `config` (array of groups) or a `preset` name\n (\"primary\" | \"full\"). Composes the Logo atom + NavGroup molecules. */\n\nexport interface NavDrawerProps {\n /** Explicit nav config; overrides `preset`. */\n config?: NavGroupConfig[];\n preset?: NavPreset;\n activeId?: string;\n collapsed?: boolean;\n /** Override the logo image. */\n logoSrc?: string;\n onNavigate?: (id: string) => void;\n}\n\nexport function NavDrawer({\n config,\n preset = \"primary\",\n activeId = \"dashboard\",\n collapsed = false,\n logoSrc,\n onNavigate,\n}: NavDrawerProps) {\n const groups = config ?? NAV_PRESETS[preset] ?? PRIMARY_NAV;\n\n return (\n <aside\n className={cx(\n \"flex h-full shrink-0 flex-col overflow-y-auto bg-cb-sidebar border-r border-cb-line\",\n collapsed ? \"w-[62px] px-[9px] pt-[14px] pb-2.5\" : \"w-[260px] px-2.5 pt-[18px] pb-2.5\",\n )}\n >\n <div\n className={cx(\n \"mb-1 flex items-center pb-2.5\",\n collapsed ? \"justify-center px-0\" : \"px-2.5\",\n )}\n >\n <Logo src={logoSrc} collapsed={collapsed} />\n </div>\n\n {groups.map((group, i) => (\n <NavGroup\n key={group.label || i}\n {...group}\n activeId={activeId}\n collapsed={collapsed}\n onNavigate={onNavigate}\n />\n ))}\n </aside>\n );\n}\n\nexport default NavDrawer;\n"],"names":["cx","c","VARIANTS","NavBadge","variant","value","NavLabel","text","jsx","ICONS","ICON_NAMES","NavIcon","name","active","cbLogo","Logo","src","alt","href","collapsed","img","className","SectionHeading","label","NavItem","id","icon","badge","soon","ext","onNavigate","inner","jsxs","Fragment","NavGroup","items","activeId","it","FULL_NAV","PRIMARY_NAV","NAV_PRESETS","NavDrawer","config","preset","logoSrc","groups","group"],"mappings":";AACO,MAAMA,IAAK,IAAIC,MACpBA,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GCQtBC,IAA4C;AAAA,EAChD,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AACP;AAQO,SAASC,EAAS,EAAE,SAAAC,IAAU,SAAS,OAAAC,KAAwB;AACpE,2BACG,QAAA,EAAK,WAAWL,EAAGE,EAASE,CAAO,KAAKF,EAAS,KAAK,GACpD,UAAAE,MAAY,SAAS,SAASA,MAAY,QAAQ,MAAM,OAAOC,KAAS,EAAE,GAC7E;AAEJ;ACtBO,SAASC,EAAS,EAAE,MAAAC,IAAO,WAA0B;AAC1D,SAAO,gBAAAC,EAAC,QAAA,EAAK,WAAU,mBAAmB,UAAAD,GAAK;AACjD;ACNO,MAAME,IAAQ;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR,GAMaC,IAAa,OAAO,KAAKD,CAAK;ACpBpC,SAASE,EAAQ,EAAE,MAAAC,IAAO,QAAQ,QAAAC,IAAS,MAAuB;AACvE,SACE,gBAAAL;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWR;AAAA,QACT;AAAA,QACAa,IAAS,6BAA6B;AAAA,MAAA;AAAA,MAExC,yBAAyB,EAAE,QAAQJ,EAAMG,CAAI,KAAK,GAAA;AAAA,IAAG;AAAA,EAAA;AAG3D;ACrBA,MAAAE,IAAe;ACeR,SAASC,EAAK,EAAE,KAAAC,IAAMF,GAAQ,KAAAG,IAAM,cAAc,MAAAC,GAAM,WAAAC,IAAY,MAAoB;AAC7F,QAAMC,IACJ,gBAAAZ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAQ;AAAA,MACA,KAAAC;AAAA,MACA,WAAWE,IAAY,+CAA+C;AAAA,IAAA;AAAA,EAAA,GAIpEE,IAAYrB,EAAG,qBAAqBmB,KAAa,gBAAgB;AAEvE,SAAOD,IACL,gBAAAV,EAAC,KAAA,EAAE,MAAAU,GAAY,WAAAG,GACZ,aACH,IAEA,gBAAAb,EAAC,QAAA,EAAK,WAAAa,GAAuB,UAAAD,GAAI;AAErC;AC3BO,SAASE,EAAe,EAAE,OAAAC,IAAQ,aAAkC;AACzE,SACE,gBAAAf,EAAC,MAAA,EAAG,WAAU,wFACX,UAAAe,GACH;AAEJ;ACMO,SAASC,EAAQ;AAAA,EACtB,IAAAC;AAAA,EACA,OAAAF;AAAA,EACA,MAAAG;AAAA,EACA,QAAAb,IAAS;AAAA,EACT,WAAAM,IAAY;AAAA,EACZ,OAAAQ;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,KAAAC;AAAA,EACA,YAAAC;AACF,GAAiB;AACf,QAAMT,IAAYrB;AAAA,IAChB;AAAA,IACAmB,IAAY,mCAAmC;AAAA,IAC/CN,IACI,uCACA;AAAA,EAAA,GAGAkB,IACJ,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAzB,EAACG,GAAA,EAAQ,MAAMe,GAAM,QAAAb,EAAA,CAAgB;AAAA,IACpC,CAACM,KACA,gBAAAa,EAAAC,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAzB,EAACF,GAAA,EAAS,MAAMiB,EAAA,CAAO;AAAA,MACtBK,sBACEzB,GAAA,EAAS,SAAQ,QAAO,IACvB0B,sBACD1B,GAAA,EAAS,SAAQ,OAAM,IACtBwB,KAAS,OACX,gBAAAnB,EAACL,GAAA,EAAS,SAAQ,SAAQ,OAAOwB,GAAO,IACtC;AAAA,IAAA,EAAA,CACN;AAAA,EAAA,GAEJ;AAGF,SAAIE,IAEA,gBAAArB,EAAC,KAAA,EAAE,MAAMqB,GAAK,QAAO,UAAS,KAAI,YAAW,WAAAR,GAAsB,OAAOE,GACvE,UAAAQ,EAAA,CACH,IAKF,gBAAAvB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAUiB;AAAA,MACV,WAAAJ;AAAA,MACA,OAAOE;AAAA,MACP,SAASO,IAAa,MAAMA,EAAWL,CAAE,IAAI;AAAA,MAE5C,UAAAM;AAAA,IAAA;AAAA,EAAA;AAGP;ACxDO,SAASG,EAAS;AAAA,EACvB,OAAAX;AAAA,EACA,OAAAY,IAAQ,CAAA;AAAA,EACR,UAAAC;AAAA,EACA,WAAAjB,IAAY;AAAA,EACZ,YAAAW;AACF,GAAkB;AAChB,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWhC;AAAA,QACT;AAAA,QACAmB,KAAa;AAAA,MAAA;AAAA,MAGd,UAAA;AAAA,QAAA,CAACA,KAAaI,KAAS,gBAAAf,EAACc,GAAA,EAAe,OAAAC,EAAA,CAAc;AAAA,QACrDY,EAAM,IAAI,CAACE,MACV,gBAAA7B;AAAA,UAACgB;AAAA,UAAA;AAAA,YAEE,GAAGa;AAAA,YACJ,QAAQA,EAAG,OAAOD;AAAA,YAClB,WAAAjB;AAAA,YACA,YAAAW;AAAA,UAAA;AAAA,UAJKO,EAAG;AAAA,QAAA,CAMX;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;ACtCO,MAAMC,IAA6B;AAAA,EACxC,EAAE,OAAO,YAAY,OAAO;AAAA,IAC1B,EAAE,IAAI,aAAa,OAAO,aAAa,MAAM,OAAA;AAAA,IAC7C,EAAE,IAAI,aAAa,OAAO,qBAAqB,MAAM,UAAU,OAAO,EAAA;AAAA,EAAE,EAC1E;AAAA,EACA,EAAE,OAAO,gBAAgB,OAAO;AAAA,IAC9B,EAAE,IAAI,gBAAgB,OAAO,oBAAoB,MAAM,OAAA;AAAA,IACvD,EAAE,IAAI,aAAa,OAAO,mBAAmB,MAAM,UAAU,OAAO,EAAA;AAAA,EAAE,EACxE;AAAA,EACA,EAAE,OAAO,YAAY,OAAO;AAAA,IAC1B,EAAE,IAAI,WAAW,OAAO,WAAW,MAAM,SAAA;AAAA,IACzC,EAAE,IAAI,WAAW,OAAO,WAAW,MAAM,OAAA;AAAA,IACzC,EAAE,IAAI,YAAY,OAAO,YAAY,MAAM,KAAA;AAAA,IAC3C,EAAE,IAAI,cAAc,OAAO,WAAW,MAAM,UAAA;AAAA,IAC5C,EAAE,IAAI,aAAa,OAAO,qBAAqB,MAAM,WAAA;AAAA,IACrD,EAAE,IAAI,gBAAgB,OAAO,uBAAuB,MAAM,WAAA;AAAA,IAC1D,EAAE,IAAI,eAAe,OAAO,gBAAgB,MAAM,OAAA;AAAA,EAAO,EAC3D;AAAA,EACA,EAAE,OAAO,YAAY,OAAO;AAAA,IAC1B,EAAE,IAAI,YAAY,OAAO,YAAY,MAAM,UAAA;AAAA,IAC3C,EAAE,IAAI,WAAW,OAAO,WAAW,MAAM,SAAA;AAAA,EAAS,EACpD;AAAA,EACA,EAAE,OAAO,WAAW,OAAO;AAAA,IACzB,EAAE,IAAI,WAAW,OAAO,WAAW,MAAM,QAAQ,MAAM,GAAA;AAAA,EAAK,EAC9D;AAAA,EACA,EAAE,OAAO,WAAW,OAAO;AAAA,IACzB,EAAE,IAAI,WAAW,OAAO,WAAW,MAAM,QAAA;AAAA,EAAQ,EACnD;AAAA,EACA,EAAE,OAAO,cAAc,OAAO;AAAA,IAC5B,EAAE,IAAI,UAAU,OAAO,iBAAiB,MAAM,OAAA;AAAA,IAC9C,EAAE,IAAI,YAAY,OAAO,mBAAmB,MAAM,SAAA;AAAA,IAClD,EAAE,IAAI,WAAW,OAAO,kBAAkB,MAAM,QAAQ,KAAK,IAAA;AAAA,EAAI,EACnE;AAAA,EACA,EAAE,OAAO,kBAAkB,OAAO;AAAA,IAChC,EAAE,IAAI,gBAAgB,OAAO,gBAAgB,MAAM,MAAA;AAAA,IACnD,EAAE,IAAI,SAAS,OAAO,iBAAiB,MAAM,QAAA;AAAA,IAC7C,EAAE,IAAI,SAAS,OAAO,aAAa,MAAM,OAAA;AAAA,IACzC,EAAE,IAAI,WAAW,OAAO,mBAAmB,MAAM,OAAA;AAAA,EAAO,EAC1D;AAAA,EACA,EAAE,OAAO,QAAQ,OAAO;AAAA,IACtB,EAAE,IAAI,QAAQ,OAAO,kBAAkB,MAAM,OAAA;AAAA,EAAO,EACtD;AACF,GAGaC,IAAgC;AAAA,EAC3C,EAAE,OAAO,YAAY,OAAO;AAAA,IAC1B,EAAE,IAAI,aAAa,OAAO,aAAa,MAAM,OAAA;AAAA,EAAO,EACtD;AAAA,EACA,EAAE,OAAO,gBAAgB,OAAO;AAAA,IAC9B,EAAE,IAAI,gBAAgB,OAAO,oBAAoB,MAAM,OAAA;AAAA,EAAO,EAChE;AAAA,EACA,EAAE,OAAO,YAAY,OAAO;AAAA,IAC1B,EAAE,IAAI,WAAW,OAAO,WAAW,MAAM,SAAA;AAAA,IACzC,EAAE,IAAI,WAAW,OAAO,WAAW,MAAM,OAAA;AAAA,IACzC,EAAE,IAAI,YAAY,OAAO,YAAY,MAAM,KAAA;AAAA,IAC3C,EAAE,IAAI,cAAc,OAAO,WAAW,MAAM,UAAA;AAAA,IAC5C,EAAE,IAAI,aAAa,OAAO,qBAAqB,MAAM,WAAA;AAAA,EAAW,EAClE;AAAA,EACA,EAAE,OAAO,WAAW,OAAO;AAAA,IACzB,EAAE,IAAI,WAAW,OAAO,WAAW,MAAM,QAAA;AAAA,EAAQ,EACnD;AAAA,EACA,EAAE,OAAO,cAAc,OAAO;AAAA,IAC5B,EAAE,IAAI,UAAU,OAAO,iBAAiB,MAAM,OAAA;AAAA,IAC9C,EAAE,IAAI,WAAW,OAAO,kBAAkB,MAAM,QAAQ,KAAK,IAAA;AAAA,EAAI,EACnE;AAAA,EACA,EAAE,OAAO,kBAAkB,OAAO;AAAA,IAChC,EAAE,IAAI,gBAAgB,OAAO,gBAAgB,MAAM,MAAA;AAAA,IACnD,EAAE,IAAI,SAAS,OAAO,iBAAiB,MAAM,QAAA;AAAA,IAC7C,EAAE,IAAI,WAAW,OAAO,mBAAmB,MAAM,OAAA;AAAA,EAAO,EAC1D;AACF,GAGaC,IAAc;AAAA,EACzB,SAASD;AAAA,EACT,MAAMD;AACR;AC9DO,SAASG,EAAU;AAAA,EACxB,QAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,UAAAP,IAAW;AAAA,EACX,WAAAjB,IAAY;AAAA,EACZ,SAAAyB;AAAA,EACA,YAAAd;AACF,GAAmB;AACjB,QAAMe,IAASH,KAAUF,EAAYG,CAAM,KAAKJ;AAEhD,SACE,gBAAAP;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWhC;AAAA,QACT;AAAA,QACAmB,IAAY,uCAAuC;AAAA,MAAA;AAAA,MAGrD,UAAA;AAAA,QAAA,gBAAAX;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWR;AAAA,cACT;AAAA,cACAmB,IAAY,wBAAwB;AAAA,YAAA;AAAA,YAGtC,UAAA,gBAAAX,EAACO,GAAA,EAAK,KAAK6B,GAAS,WAAAzB,EAAA,CAAsB;AAAA,UAAA;AAAA,QAAA;AAAA,QAG3C0B,EAAO,IAAI,CAACC,GAAO,MAClB,gBAAAtC;AAAA,UAAC0B;AAAA,UAAA;AAAA,YAEE,GAAGY;AAAA,YACJ,UAAAV;AAAA,YACA,WAAAjB;AAAA,YACA,YAAAW;AAAA,UAAA;AAAA,UAJKgB,EAAM,SAAS;AAAA,QAAA,CAMvB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-2\.5{margin-left:.625rem;margin-right:.625rem}.mb-1{margin-bottom:.25rem}.mb-\[7px\]{margin-bottom:7px}.mb-px{margin-bottom:1px}.ml-auto{margin-left:auto}.mt-2{margin-top:.5rem}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-6{height:1.5rem}.h-\[22px\]{height:22px}.h-full{height:100%}.w-\[22px\]{width:22px}.w-\[260px\]{width:260px}.w-\[62px\]{width:62px}.w-auto{width:auto}.w-full{width:100%}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-0{gap:0}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-cb-line{border-color:var(--cb-line)}.bg-cb-blue{background-color:var(--cb-blue)}.bg-cb-orange-soft{background-color:var(--cb-orange-soft)}.bg-cb-seg{background-color:var(--cb-seg)}.bg-cb-sidebar{background-color:var(--cb-sidebar)}.object-cover{-o-object-fit:cover;object-fit:cover}.object-left{-o-object-position:left;object-position:left}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-\[9px\]{padding-left:9px;padding-right:9px}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-\[1\.5px\]{padding-top:1.5px;padding-bottom:1.5px}.py-\[7px\]{padding-top:7px;padding-bottom:7px}.py-px{padding-top:1px;padding-bottom:1px}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pt-\[14px\]{padding-top:14px}.pt-\[18px\]{padding-top:18px}.text-left{text-align:left}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[14\.5px\]{font-size:14.5px}.text-\[9\.5px\]{font-size:9.5px}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-\[0\.04em\]{letter-spacing:.04em}.tracking-\[0\.09em\]{letter-spacing:.09em}.text-cb-faint{color:var(--cb-faint)}.text-cb-muted{color:var(--cb-muted)}.text-cb-soon{color:var(--cb-soon)}.text-cb-text{color:var(--cb-text)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-100{opacity:1}.opacity-75{opacity:.75}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--cb-sidebar:#f8fafc;--cb-card:#fff;--cb-line:#e8eaee;--cb-text:#0f172a;--cb-muted:#64748b;--cb-faint:#94a3b8;--cb-blue:#2b7de7;--cb-blue-soft:#eff5fd;--cb-orange-soft:#fffbeb;--cb-seg:#f1f4f8;--cb-ink2:#334155;--cb-soon:#b45309}.dark{--cb-sidebar:#0e141d;--cb-card:#111722;--cb-line:#222b38;--cb-text:#e7eaf1;--cb-muted:#98a2b3;--cb-faint:#64748b;--cb-blue:#5593f0;--cb-blue-soft:#16233c;--cb-orange-soft:#26200f;--cb-seg:#1c2534;--cb-ink2:#c3cad6;--cb-soon:#f0b558}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:bg-cb-seg:hover{background-color:var(--cb-seg)}.hover\:text-cb-ink2:hover{color:var(--cb-ink2)}.\[\&_svg\]\:h-\[18px\] svg{height:18px}.\[\&_svg\]\:w-\[18px\] svg{width:18px}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@chainberry/ui-components",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Chainberry navigation UI components (React + Tailwind).",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "ISC",
|
|
7
|
+
"author": "",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/Chainberry-com/ui-components.git"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/Chainberry-com/ui-components#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/Chainberry-com/ui-components/issues"
|
|
15
|
+
},
|
|
16
|
+
"sideEffects": [
|
|
17
|
+
"**/*.css"
|
|
18
|
+
],
|
|
19
|
+
"main": "./dist/index.cjs",
|
|
20
|
+
"module": "./dist/index.mjs",
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"import": "./dist/index.mjs",
|
|
26
|
+
"require": "./dist/index.cjs"
|
|
27
|
+
},
|
|
28
|
+
"./styles.css": "./dist/styles.css"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "npm run build:js && npm run build:css",
|
|
38
|
+
"build:js": "vite build",
|
|
39
|
+
"build:css": "tailwindcss -i ./src/styles.css -o ./dist/styles.css --minify",
|
|
40
|
+
"typecheck": "tsc --noEmit",
|
|
41
|
+
"prepublishOnly": "npm run build",
|
|
42
|
+
"storybook": "storybook dev -p 6006",
|
|
43
|
+
"build-storybook": "storybook build"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"react": ">=18",
|
|
47
|
+
"react-dom": ">=18"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@chromatic-com/storybook": "^5.2.1",
|
|
51
|
+
"@storybook/addon-a11y": "^10.4.6",
|
|
52
|
+
"@storybook/addon-docs": "^10.4.6",
|
|
53
|
+
"@storybook/react-vite": "^10.4.6",
|
|
54
|
+
"@types/react": "^19.0.0",
|
|
55
|
+
"@types/react-dom": "^19.0.0",
|
|
56
|
+
"@vitejs/plugin-react": "4.7.0",
|
|
57
|
+
"autoprefixer": "^10.4.20",
|
|
58
|
+
"postcss": "^8.5.6",
|
|
59
|
+
"react": "^19.0.0",
|
|
60
|
+
"react-dom": "^19.0.0",
|
|
61
|
+
"storybook": "^10.4.6",
|
|
62
|
+
"tailwindcss": "3.4.3",
|
|
63
|
+
"typescript": "~5.7.2",
|
|
64
|
+
"vite": "7.3.1",
|
|
65
|
+
"vite-plugin-dts": "~4.5.0"
|
|
66
|
+
}
|
|
67
|
+
}
|