@owlmeans/web-panel 0.1.18-rc.31 → 0.1.18-rc.33
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 +12 -7
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/web-panel/SKILL.md +181 -23
- package/build/@/components/ui/button.d.ts +2 -2
- package/build/@/components/ui/dropdown-menu.d.ts +26 -0
- package/build/@/components/ui/dropdown-menu.d.ts.map +1 -0
- package/build/@/components/ui/dropdown-menu.js +51 -0
- package/build/@/components/ui/dropdown-menu.js.map +1 -0
- package/build/auth/context.d.ts.map +1 -1
- package/build/auth/entrypoints.d.ts +1 -1
- package/build/auth/entrypoints.d.ts.map +1 -1
- package/build/components/footer/component.d.ts.map +1 -1
- package/build/components/footer/component.js +4 -2
- package/build/components/footer/component.js.map +1 -1
- package/build/components/form/button/component.js.map +1 -1
- package/build/components/form/component.js.map +1 -1
- package/build/components/helper.d.ts.map +1 -1
- package/build/components/index.d.ts +1 -0
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +1 -0
- package/build/components/index.js.map +1 -1
- package/build/components/link.d.ts.map +1 -1
- package/build/components/link.js +6 -3
- package/build/components/link.js.map +1 -1
- package/build/components/login/append.d.ts.map +1 -1
- package/build/components/menu/component.d.ts +15 -0
- package/build/components/menu/component.d.ts.map +1 -0
- package/build/components/menu/component.js +146 -0
- package/build/components/menu/component.js.map +1 -0
- package/build/components/menu/index.d.ts +3 -0
- package/build/components/menu/index.d.ts.map +1 -0
- package/build/components/menu/index.js +3 -0
- package/build/components/menu/index.js.map +1 -0
- package/build/components/menu/types.d.ts +138 -0
- package/build/components/menu/types.d.ts.map +1 -0
- package/build/components/menu/types.js +17 -0
- package/build/components/menu/types.js.map +1 -0
- package/build/components/nav/side.d.ts.map +1 -1
- package/build/components/nav/side.js +4 -2
- package/build/components/nav/side.js.map +1 -1
- package/build/components/nav/types.d.ts +2 -1
- package/build/components/nav/types.d.ts.map +1 -1
- package/build/components/types.d.ts +2 -1
- package/build/components/types.d.ts.map +1 -1
- package/build/context.d.ts.map +1 -1
- package/build/entrypoints.d.ts +1 -1
- package/build/entrypoints.d.ts.map +1 -1
- package/build/exports.d.ts +1 -1
- package/build/exports.d.ts.map +1 -1
- package/build/exports.js +1 -1
- package/build/exports.js.map +1 -1
- package/build/hooks/index.d.ts +2 -0
- package/build/hooks/index.d.ts.map +1 -0
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -0
- package/build/hooks/use-mobile.d.ts +16 -0
- package/build/hooks/use-mobile.d.ts.map +1 -0
- package/build/hooks/use-mobile.js +30 -0
- package/build/hooks/use-mobile.js.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/jobs/component.d.ts +19 -0
- package/build/jobs/component.d.ts.map +1 -0
- package/build/jobs/component.js +55 -0
- package/build/jobs/component.js.map +1 -0
- package/build/jobs/index.d.ts +4 -0
- package/build/jobs/index.d.ts.map +1 -0
- package/build/jobs/index.js +3 -0
- package/build/jobs/index.js.map +1 -0
- package/build/jobs/toasts.d.ts +14 -0
- package/build/jobs/toasts.d.ts.map +1 -0
- package/build/jobs/toasts.js +39 -0
- package/build/jobs/toasts.js.map +1 -0
- package/build/jobs/types.d.ts +21 -0
- package/build/jobs/types.d.ts.map +1 -0
- package/build/jobs/types.js +2 -0
- package/build/jobs/types.js.map +1 -0
- package/build/main.d.ts.map +1 -1
- package/build/utils.d.ts +13 -0
- package/build/utils.d.ts.map +1 -0
- package/build/utils.js +14 -0
- package/build/utils.js.map +1 -0
- package/package.json +37 -27
- package/src/@/components/ui/dropdown-menu.tsx +256 -0
- package/src/components/footer/component.tsx +4 -2
- package/src/components/index.ts +1 -0
- package/src/components/link.tsx +6 -3
- package/src/components/menu/component.tsx +248 -0
- package/src/components/menu/index.ts +2 -0
- package/src/components/menu/types.ts +144 -0
- package/src/components/nav/side.tsx +4 -2
- package/src/components/nav/types.ts +2 -1
- package/src/components/types.ts +2 -1
- package/src/exports.ts +1 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-mobile.ts +35 -0
- package/src/index.ts +2 -0
- package/src/jobs/component.tsx +78 -0
- package/src/jobs/index.ts +4 -0
- package/src/jobs/toasts.ts +41 -0
- package/src/jobs/types.ts +23 -0
- package/src/utils.ts +14 -0
- package/tests/harness/mount.tsx +50 -1
- package/tests/menu.spec.ts +102 -0
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ instead of Material UI.
|
|
|
15
15
|
## Install
|
|
16
16
|
|
|
17
17
|
```sh
|
|
18
|
-
bun add @owlmeans/web-panel
|
|
18
|
+
bun add @owlmeans/web-panel@^0.1.18-rc.31
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Peer requirements (the consuming app provides these): `react`, `react-dom`,
|
|
@@ -76,17 +76,22 @@ resolve: { alias: { '@': fileURLToPath(new URL('./src/@', import.meta.url)) } }
|
|
|
76
76
|
|
|
77
77
|
Tailwind's scanner reads your CSS root plus its `@source` directives, and it
|
|
78
78
|
excludes `node_modules`. Classes that exist only inside this package's
|
|
79
|
-
components — the whole navigation shell and footer — therefore
|
|
80
|
-
stylesheet unless you point Tailwind at the
|
|
79
|
+
components — the whole navigation shell, the menu and the footer — therefore
|
|
80
|
+
never reach your stylesheet unless you point Tailwind at the package's sources:
|
|
81
81
|
|
|
82
82
|
```css
|
|
83
83
|
@import "tailwindcss";
|
|
84
84
|
|
|
85
|
-
@source "../../../node_modules/@owlmeans/web-panel/
|
|
85
|
+
@source "../../../node_modules/@owlmeans/web-panel/src";
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
Adjust the relative depth to your own layout
|
|
89
|
-
|
|
88
|
+
Adjust the relative depth to your own layout. Point at **`src`, never `build`**:
|
|
89
|
+
the scanner applies the `.gitignore` of whatever repository a path resolves
|
|
90
|
+
into, and a linked `node_modules` entry resolves into a monorepo whose
|
|
91
|
+
`.gitignore` covers every package build directory — a `build` source there scans
|
|
92
|
+
zero files and reports nothing, while the UI renders half-styled with nothing to
|
|
93
|
+
blame. `src` is tracked in the repository and ships in the published tarball, so
|
|
94
|
+
one path serves a linked checkout and an npm install alike.
|
|
90
95
|
|
|
91
96
|
## Navigation shell
|
|
92
97
|
|
|
@@ -213,7 +218,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
213
218
|
your project's skill store (`.agents/skills/`):
|
|
214
219
|
|
|
215
220
|
```sh
|
|
216
|
-
npx @owlmeans/agent-skills
|
|
221
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.13
|
|
217
222
|
```
|
|
218
223
|
|
|
219
224
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/web-panel",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-09-
|
|
4
|
+
"version": "0.1.18-rc.33",
|
|
5
|
+
"generatedAt": "2026-09-10T18:54:42.508Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/web-panel
|
|
9
9
|
|
|
10
10
|
**Layer:** Web (React)
|
|
11
|
-
**Install:** `"@owlmeans/web-panel": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/web-panel": "^0.1.18-rc.33"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
## Key Exports
|
|
14
14
|
|
|
@@ -18,17 +18,31 @@ user-invocable: false
|
|
|
18
18
|
| `NavLayout` | The application shell — header, section menu, screen menu, content, footer |
|
|
19
19
|
| `TopNav` / `SideNav` / `Footer` | The shell's pieces, mountable on their own |
|
|
20
20
|
| `Toaster` | The application's toast surface — mounted once, in the layout |
|
|
21
|
+
| `PanelMenu` | The dropdown menu, described as data — items, arbitrary widget rows, labels, separators and one level of submenu. `PanelMenuEntry` / `PanelMenuEntryKind` / `PanelMenuProps` come with it |
|
|
21
22
|
| `Link` | An `<a>` addressing an entrypoint alias (or a literal `src`), with the label taken from i18n |
|
|
22
23
|
| `LoginScreen` / `LocalizedLoginScreen` / `appendLoginScreen` | The identity-provider choice screen — see `login-methods` |
|
|
23
|
-
| `
|
|
24
|
+
| `render(context, opts?)` | Mounts the tree inside `PanelApp`, with the browser language detector installed on the i18n instance. `opts` is `RenderOptions` plus `rootClassName` |
|
|
25
|
+
| `PanelApp` | That wrapper on its own — the themed root `div` plus the i18n provider — for a host that mounts the tree itself |
|
|
26
|
+
| `useContext<C, T>()` | The current context, from React. `AppContext` adds `context.flow()` over `@owlmeans/web-client`'s |
|
|
27
|
+
| `entrypoints` | The base declaration list — `@owlmeans/web-client`'s plus `@owlmeans/api-config-client`'s. Compose the app's own over it |
|
|
28
|
+
| `Block` / `Text` / `Status` | The shadcn `Card` panel with an optional `Actions` footer, a heading/paragraph whose copy comes from the panel namespace, and the shadcn `Alert` resolving a `ResilientError` to a translated message |
|
|
29
|
+
| `Form` / `TextInput` / `Button` / `SubmitButton` / `ButtonSelector` | The web form family. `Form` builds its own `useForm` + `ajvResolver` and borrows only `FormContext` and `schemaToFormDefault` from `@owlmeans/client-panel`; `TextInput` drives `react-hook-form`'s `Controller` directly, and the buttons call `handleSubmit` directly — none of them wraps `ClientForm`, `InputCtrl` or `ActionCtrl` |
|
|
30
|
+
| `ImageUploader` / `Layout` | The uploader in a drop target with a preview, and a plain content wrapper (the shell is `NavLayout`) |
|
|
31
|
+
| `scalingToStyles(h, v)` | `BlockScaling` → the width/height utility classes the panels share |
|
|
32
|
+
| `cn(...inputs)` | The class-name merger the components are written against — an app never re-declares it |
|
|
33
|
+
| `useIsMobile()` / `MOBILE_BREAKPOINT` | Viewport narrower than Tailwind's `md` (768), matched with `matchMedia` |
|
|
34
|
+
| `useBreakPoint()` | The current Tailwind breakpoint name, tracked on `resize` (`lg` when there is no `window`) |
|
|
35
|
+
| `useMapBreakpoint(map, def?, breakpoint?)` | The `map` entry for the current breakpoint (or for the `breakpoint` passed), falling back to `def`. It **throws a `SyntaxError`** when neither yields a value, so give it a `def` or cover every breakpoint |
|
|
24
36
|
| Re-exports from `@owlmeans/client-panel` | Cross-platform panel primitives, incl. `usePanelNav` and the `PanelNav*` types |
|
|
25
|
-
| Re-exports from `@owlmeans/client` / `@owlmeans/client-entrypoint` | `entrypoint`, `elevate`, `handler`, `route`, `frontend`, `guard`, `useNavigate`, `useEntrypoint`, `useValue` |
|
|
26
|
-
| `
|
|
37
|
+
| Re-exports from `@owlmeans/client` / `@owlmeans/client-entrypoint` / `@owlmeans/route` | `entrypoint`, `elevate`, `handler`, `provideRequest`, `stab`, `route`, `croute`, `frontend`, `guard`, `useNavigate`, `useEntrypoint`, `useValue` |
|
|
38
|
+
| Re-exports from the surrounding layers | `config`, `service`, `addWebService`, `AppType` / `HOME` / `ROOT` / `BASE` / `GUEST`, `DISPATCHER`, `CAUTHEN_FLOW_ENTER`, `DAUTH_GUARD`, `setupExternalAuthentication`, `Dispatcher`, `appendWebAuthService`, `flow` / `configureFlows` / `useFlow` / `FLOW_PARAM` / `SERVICE_PARAM`, `useI18n*` / `useLanguage` / `composePrefix`, `addI18nApp` / `addI18nLib` / `SUPPORTED_LNGS` |
|
|
27
39
|
|
|
28
40
|
## Subpath Exports
|
|
29
41
|
|
|
30
42
|
- `./auth` — auth panel components for web
|
|
31
43
|
- `./auth/entrypoints` — auth panel entrypoint declarations
|
|
44
|
+
- `./consent` — the cookie consent dialog and policy, bound to this app's i18n
|
|
45
|
+
- `./jobs` — `JobProgress`, `JobStatus`, `useJobToasts` over `@owlmeans/queue` records
|
|
32
46
|
|
|
33
47
|
## Usage
|
|
34
48
|
|
|
@@ -94,7 +108,7 @@ header. Both render the same items; only one is visible at a time.
|
|
|
94
108
|
| `NavLayout` | `nav: PanelNavConfig`, `translate?`, `title?: ReactNode`, `home?: string` (brand target — defaults to the first section's first item), `actions?: ReactNode`, `footer?: PanelNavLink[] \| ReactNode`, `headerClassName?`, `contentClassName?`, `containerClassName?`, `className?`, `style?` |
|
|
95
109
|
| `TopNav` | `config: PanelNavConfig`, `translate?`, `ariaLabel?`, `className?`, `style?` |
|
|
96
110
|
| `SideNav` | the same, plus `variant?: 'side' \| 'bar'` |
|
|
97
|
-
| `Footer` | `links?: PanelNavLink[]`, `translate?`, `children?`, `className?`, `style?` |
|
|
111
|
+
| `Footer` | `links?: PanelNavLink[]`, `translate?`, `containerClassName?` (the shell's rhythm, so the footer row lines up with the header and content), `children?`, `className?`, `style?` |
|
|
98
112
|
|
|
99
113
|
**The style slots are REGIONS, and each region is its own SURFACE.** `className` is the root —
|
|
100
114
|
the full-height page *behind* the header, side menu and footer. `headerClassName` is the sticky
|
|
@@ -126,12 +140,13 @@ width-only override permanently.
|
|
|
126
140
|
(`bg-secondary text-secondary-foreground`) — never by colouring the root and expecting the bar
|
|
127
141
|
to follow.
|
|
128
142
|
|
|
129
|
-
**The shell reads exactly
|
|
130
|
-
`--foreground` (active section link), `--muted-foreground` (resting section links)
|
|
131
|
-
`--accent`/`--accent-foreground` (active side-menu item)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
muted
|
|
143
|
+
**The shell reads exactly these colour variables**: `--background` (page and top bar),
|
|
144
|
+
`--foreground` (active section link), `--muted-foreground` (resting section links),
|
|
145
|
+
`--accent`/`--accent-foreground` (active side-menu item), `--border` (the header, side-menu and
|
|
146
|
+
footer rules) and `--primary` — the footer renders its entries through `Link`, which paints
|
|
147
|
+
`text-primary`. It reads **no `--sidebar*` variable at all**. So `--muted-foreground` is not merely
|
|
148
|
+
the text colour of the `--muted` surface — it is secondary text sitting directly on `--background`,
|
|
149
|
+
and a theme that lightens it to suit a dark muted panel loses its top menu.
|
|
135
150
|
|
|
136
151
|
Rules that make the shell behave:
|
|
137
152
|
|
|
@@ -154,6 +169,62 @@ Rules that make the shell behave:
|
|
|
154
169
|
- **Vendor `navigation-menu`.** `SideNav` builds on the existing `Button`; `TopNav` uses the shadcn
|
|
155
170
|
`navigation-menu` primitive — see the `@` contract below.
|
|
156
171
|
|
|
172
|
+
### Menus — `PanelMenu`
|
|
173
|
+
|
|
174
|
+
One dropdown, described as an ENTRY LIST rather than as children. Every kind has its own focus,
|
|
175
|
+
keyboard and close-on-select behaviour, so children would silently lose all three; and the same
|
|
176
|
+
description then serves a collapsed toolbar, a header overflow and a mobile shell without any of
|
|
177
|
+
them re-deriving it.
|
|
178
|
+
|
|
179
|
+
```tsx
|
|
180
|
+
import { PanelMenu, PanelMenuEntryKind } from '@owlmeans/web-panel'
|
|
181
|
+
import type { PanelMenuEntry } from '@owlmeans/web-panel'
|
|
182
|
+
|
|
183
|
+
const entries: PanelMenuEntry[] = [
|
|
184
|
+
{ kind: PanelMenuEntryKind.Widget, key: 'credits', render: <AccountCredits /> },
|
|
185
|
+
{ kind: PanelMenuEntryKind.Separator, key: 'sep' },
|
|
186
|
+
{ kind: PanelMenuEntryKind.Label, key: 'app', label: 'MyApp' },
|
|
187
|
+
{ kind: PanelMenuEntryKind.Item, key: 'home', alias: HOME, Icon: House },
|
|
188
|
+
{ kind: PanelMenuEntryKind.Item, key: 'docs', href: DOCS, open: true, hint: <ExternalLink className="size-3.5" /> },
|
|
189
|
+
{ kind: PanelMenuEntryKind.Sub, key: 'lang', label: 'Language', hint: 'EN', entries: languages },
|
|
190
|
+
]
|
|
191
|
+
|
|
192
|
+
<PanelMenu entries={entries} translate={t} triggerLabel="Menu" indicator={dot} align="end" />
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
| Kind | What it is |
|
|
196
|
+
|---|---|
|
|
197
|
+
| `Item` | A focusable row that closes the menu. Exactly one of `alias` (an entrypoint) or `href`, the same union `PanelNavLink` uses; neither makes it a pure `onSelect` action. Also `Icon`, `hint` (right-aligned), `active`, `disabled`, `variant` |
|
|
198
|
+
| `Widget` | Arbitrary content as a plain ROW — see below |
|
|
199
|
+
| `Label` | A section heading |
|
|
200
|
+
| `Separator` | A rule between blocks |
|
|
201
|
+
| `Sub` | One nested level. A `Sub` inside a `Sub` renders nothing — a dropdown that nests further is a navigation tree, not this |
|
|
202
|
+
|
|
203
|
+
Rules the component owns, each of which was a real failure:
|
|
204
|
+
|
|
205
|
+
- **A `Widget` is a row, never a `DropdownMenuItem`.** An item takes both the focus and the
|
|
206
|
+
activation from the controls inside it: Radix's roving tabindex swallows the inner button's
|
|
207
|
+
keyboard access, and `onSelect` fires on any click that lands on the row — so a "Top up" button
|
|
208
|
+
inside an item dismisses the menu before its own handler is observed. The row takes no roving
|
|
209
|
+
focus and does not close the menu; the widget's own buttons are the click targets.
|
|
210
|
+
- **An in-app link cannot use `onSelect`.** The anchor must call `preventDefault()` or the browser
|
|
211
|
+
performs a full page load, and Radix composes its click handler with `checkForDefaultPrevented`
|
|
212
|
+
— so preventing the default also cancels `onSelect`, and with it the automatic close. `PanelMenu`
|
|
213
|
+
therefore navigates and closes explicitly from the anchor's own handler, and keeps its own open
|
|
214
|
+
state for that (a caller's `open`/`onOpenChange` still wins).
|
|
215
|
+
- **The href resolves synchronously.** `Link` asks `entrypoint.url()` and settles a frame later,
|
|
216
|
+
which is fine for a link already on screen; a menu's content mounts at the moment it opens, so an
|
|
217
|
+
href that arrives afterwards is missing exactly while the row is being read. `PanelMenu` uses
|
|
218
|
+
`entrypoint.path()` — a lookup — and answers `undefined` for a path carrying route parameters.
|
|
219
|
+
Never drop the `href`: an `<a>` without one is not focusable, does not answer the keyboard,
|
|
220
|
+
cannot be opened in a new tab, and does not carry the `link` role.
|
|
221
|
+
- **`hidden` takes the separators it orphans with it.** A caller composes the menu from optional
|
|
222
|
+
blocks; filtering the entries alone leaves a leading rule, a doubled rule, or one under the last
|
|
223
|
+
item. Normalisation is the whole reason the entries are data.
|
|
224
|
+
- **`translate` is a prop**, defaulting to `defaultNavTranslate` — same reason as the nav shell.
|
|
225
|
+
- `indicator` is a slot on the trigger's corner (a notification dot, a count), not a `tone` enum:
|
|
226
|
+
what deserves attention is the application's judgement.
|
|
227
|
+
|
|
157
228
|
### Toasts — `Toaster`
|
|
158
229
|
|
|
159
230
|
An action that succeeded or failed says so in a toast. The surface is `Toaster`; the messages are
|
|
@@ -201,38 +272,125 @@ known — so never key a test or a layout on the anchor having an `href` synchro
|
|
|
201
272
|
falls back to `modules.<alias>` when neither `name` nor `children` is given, `open` adds
|
|
202
273
|
`target="_blank"` with `rel="noopener noreferrer"`, and `center` centres the text.
|
|
203
274
|
|
|
275
|
+
### Forms — `Form`, `TextInput`, the buttons
|
|
276
|
+
|
|
277
|
+
`WebFormProps` is `@owlmeans/client-panel`'s `FormProps` plus `className` and `style`. `Form` holds
|
|
278
|
+
the whole model itself — `useForm` with `mode: 'all'`, `delayError: 300`, an `ajvResolver` over
|
|
279
|
+
`validation` with `coerceTypes` and the `ajv-formats` formats — and publishes it through
|
|
280
|
+
`FormProvider` plus `FormContext`, so every control below reads one form.
|
|
281
|
+
|
|
282
|
+
```tsx
|
|
283
|
+
import { Form, TextInput, SubmitButton, Button } from '@owlmeans/web-panel'
|
|
284
|
+
|
|
285
|
+
<Form decorate validation={schema} onSubmit={async (data, update) => { await save(data); update(data) }}>
|
|
286
|
+
<TextInput name="email" label placeholder hint />
|
|
287
|
+
<TextInput name="password" type="password" label="Password" />
|
|
288
|
+
</Form>
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
- **`decorate` switches the whole rendering.** With `decorate={true}` the fields go inside a shadcn
|
|
292
|
+
`Card`, the root error surfaces through `Status`, and a `SubmitButton` is rendered in the
|
|
293
|
+
`CardFooter` **whenever `onSubmit` is given** — the caller writes no action. Without it (the
|
|
294
|
+
default) `Form` is a bare flex column: no card, no root-error surface, no submit button, so the
|
|
295
|
+
caller renders its own action. `horizontal`/`vertical` scaling, `className` and `style` land on
|
|
296
|
+
the `Card` when decorated and on that column otherwise.
|
|
297
|
+
- **`formRef`** — a `useFormRef()` ref filled with `{ form, update, loader, error }`, which is how a
|
|
298
|
+
caller drives the form, flips the loader, or plants a field/root error from outside.
|
|
299
|
+
- **`TextInput` takes `label`, `placeholder` and `hint` as `string | boolean`.** `true` resolves
|
|
300
|
+
`<name>.label` / `<name>.placeholder` / `<name>.hint` from the form namespace; a string is used
|
|
301
|
+
verbatim; anything else renders nothing. It also takes `name`, `def`, `type` (any HTML input type,
|
|
302
|
+
default `text`) and `disableAutocomplete`. A field error replaces the hint line.
|
|
303
|
+
- **`Button`** takes a required `label`, `onClick`, `loader` (a `Toggleable` — open disables the
|
|
304
|
+
button and shows the spinner), `size` (`small`/`medium`/`large`), `fullWidth`, and `variant`,
|
|
305
|
+
which maps the MUI vocabulary onto shadcn (`contained` → `default`, `outlined` → `outline`,
|
|
306
|
+
`text` → `ghost`) and forwards a shadcn variant name unchanged.
|
|
307
|
+
- **`SubmitButton`** is that button bound to `handleSubmit`, taking `onSubmit` (or `onClick`) and a
|
|
308
|
+
`label` defaulting to `submit`. It resolves the label with the form `t` itself and passes it down
|
|
309
|
+
with `i18n.suppress` set, so the label is translated once.
|
|
310
|
+
- **`ButtonSelector`** renders one `Button` per entry of `options`, the one equal to `current`
|
|
311
|
+
`contained` and the rest `outlined`, calling `onSelect(option)`. `name` prefixes each option's
|
|
312
|
+
label key as `<name>.<option>`.
|
|
313
|
+
|
|
314
|
+
## Subpath: `./jobs`
|
|
315
|
+
|
|
316
|
+
Three presentational pieces for a queue job, over `JobRecord` from `@owlmeans/queue`. They take
|
|
317
|
+
records — `@owlmeans/client-job`'s `useJobs()` maps straight onto them — and hold no store, no
|
|
318
|
+
socket and no strings of their own.
|
|
319
|
+
|
|
320
|
+
```tsx
|
|
321
|
+
import { JobProgress, JobStatus, useJobToasts } from '@owlmeans/web-panel/jobs'
|
|
322
|
+
|
|
323
|
+
const jobs = useJobs().map(model => model.record)
|
|
324
|
+
useJobToasts(jobs)
|
|
325
|
+
|
|
326
|
+
<JobStatus job={job} labels={{ [JobState.Active]: t('jobs.running') }} />
|
|
327
|
+
<JobProgress job={job} />
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
| Export | Description |
|
|
331
|
+
|---|---|
|
|
332
|
+
| `JobProgress` | The shadcn `Progress` bar. `job.progress` is read as a number, `{ percent }` or `{ done, total }`; anything else animates INDETERMINATE, because zero and "the processor never called `progress()`" look identical otherwise |
|
|
333
|
+
| `JobStatus` | The state pill. `data-state` carries the raw state, so a test never keys on the wording |
|
|
334
|
+
| `jobProgressValue(job)` | The percentage the bar shows, or `undefined` |
|
|
335
|
+
| `useJobToasts(jobs, opts?)` | One toast per job the first time it settles, on the `Toaster` the layout already mounts |
|
|
336
|
+
|
|
337
|
+
- **No packaged wording.** The states are broker vocabulary; the sentence an app wants for them
|
|
338
|
+
("Queued", "Rendering", "Ready") is its own copy in its own namespace, so `JobStatus` takes a
|
|
339
|
+
`labels` map and otherwise renders the raw state — data, not an untranslated string.
|
|
340
|
+
- **`useJobToasts` never toasts on its first pass.** A screen opening onto a store seeded with
|
|
341
|
+
yesterday's finished jobs would fire a stack of them at once, so everything already settled at
|
|
342
|
+
mount is recorded as announced and only what settles afterwards is reported.
|
|
343
|
+
- It needs the same single `Toaster` as everything else — see above.
|
|
344
|
+
|
|
204
345
|
## Subpath: `./consent`
|
|
205
346
|
|
|
206
347
|
`PanelCookieConsent` and `PanelCookiePolicy` — `@owlmeans/web-consent`'s components bound to this
|
|
207
348
|
app's language and translations, falling through to the package's own seven-language bundle for
|
|
208
349
|
every key the app has not overridden. See the `consent` skill.
|
|
209
350
|
|
|
210
|
-
A re-export does not move Tailwind class strings, so a consumer
|
|
211
|
-
`@owlmeans/web-consent
|
|
351
|
+
A re-export does not move Tailwind class strings, so a consumer adds a second `@source` for
|
|
352
|
+
`@owlmeans/web-consent` alongside this package's — pointing at **`src`**, for the reason spelled out
|
|
353
|
+
under *Consumer setup* below. Without it the dialog renders half-styled.
|
|
212
354
|
|
|
213
355
|
## Consumer setup — the `@` contract and Tailwind
|
|
214
356
|
|
|
215
357
|
`web-panel` emits `@/components/ui/*` and `@/lib/utils` verbatim; the app's bundler resolves `@` to
|
|
216
|
-
its own shadcn copy. Vendor every primitive the package imports: `alert`, `button`, `card`,
|
|
217
|
-
`label`, `navigation-menu`, `progress` (plus `separator` if you use it),
|
|
218
|
-
`@radix-ui/react-navigation-menu` alongside the other
|
|
358
|
+
its own shadcn copy. Vendor every primitive the package imports: `alert`, `button`, `card`,
|
|
359
|
+
`dropdown-menu`, `input`, `label`, `navigation-menu`, `progress` (plus `separator` if you use it),
|
|
360
|
+
and add `@radix-ui/react-navigation-menu` and `@radix-ui/react-dropdown-menu` alongside the other
|
|
361
|
+
Radix peers.
|
|
362
|
+
|
|
363
|
+
The vendored `@/lib/utils` stays — the package's own components resolve `cn` through it — but the
|
|
364
|
+
app's own components import `cn` from `@owlmeans/web-panel` instead of declaring a third copy. The
|
|
365
|
+
public export is a package-owned function, deliberately not a re-export of `@/lib/utils`: that
|
|
366
|
+
specifier is emitted verbatim and would resolve back to the consumer's file.
|
|
219
367
|
|
|
220
|
-
Then point Tailwind at the
|
|
221
|
-
directives only, and excludes `node_modules` — so classes that exist **only** inside
|
|
222
|
-
components (the whole navigation shell and footer) never reach the stylesheet, and the
|
|
223
|
-
an unstyled menu. In the app's Tailwind entry:
|
|
368
|
+
Then point Tailwind at the installed package's **`src`**. Its oxide scanner reads the CSS root
|
|
369
|
+
plus `@source` directives only, and excludes `node_modules` — so classes that exist **only** inside
|
|
370
|
+
`web-panel` components (the whole navigation shell and footer) never reach the stylesheet, and the
|
|
371
|
+
app renders an unstyled menu. In the app's Tailwind entry:
|
|
224
372
|
|
|
225
373
|
```css
|
|
226
374
|
@import "tailwindcss";
|
|
227
375
|
|
|
228
|
-
@source "../../../node_modules/@owlmeans/web-panel/
|
|
376
|
+
@source "../../../node_modules/@owlmeans/web-panel/src";
|
|
229
377
|
```
|
|
230
378
|
|
|
231
|
-
Adjust the relative depth to your own layout
|
|
379
|
+
Adjust the relative depth to your own layout. **Point at `src`, never at `build`:** the scanner
|
|
380
|
+
applies the `.gitignore` of whatever repository a path resolves into, and a linked `node_modules`
|
|
381
|
+
entry resolves into a monorepo whose `.gitignore` covers every package build directory — a `build`
|
|
382
|
+
source there scans zero files and reports nothing, while the shell renders unstyled with nothing to
|
|
383
|
+
blame. `src` is tracked in the repository and ships in the published tarball, so one path serves a
|
|
384
|
+
linked checkout and an npm install alike.
|
|
232
385
|
|
|
233
386
|
## Depends On
|
|
234
387
|
|
|
235
388
|
- `@owlmeans/web-client`, `@owlmeans/client-panel`, `@owlmeans/client-i18n`, `@owlmeans/web-router`
|
|
389
|
+
- `@owlmeans/queue` — `JobRecord` / `JobState`, read by the `./jobs` subpath
|
|
236
390
|
- Peers (app-provided): `react`, `react-dom`, `react-hook-form`, `tailwindcss`, `tailwind-merge`,
|
|
237
391
|
`clsx`, `class-variance-authority`, `lucide-react`, `ajv`, and the `@radix-ui/react-*` primitives
|
|
238
|
-
(`label`, `navigation-menu`, `progress`, `separator`, `slot`). No MUI, no
|
|
392
|
+
(`dropdown-menu`, `label`, `navigation-menu`, `progress`, `separator`, `slot`). No MUI, no
|
|
393
|
+
react-router.
|
|
394
|
+
- `ajv-formats` is imported at module scope by the form model but is declared in no dependency
|
|
395
|
+
section of the manifest, which lists `ajv` alone. An install that does not otherwise pull it in
|
|
396
|
+
fails at import time, so declare `ajv-formats` next to `ajv` in the consuming application.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { type VariantProps } from 'class-variance-authority';
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
|
-
variant?: "default" | "destructive" | "
|
|
5
|
-
size?: "default" | "
|
|
4
|
+
variant?: "default" | "destructive" | "ghost" | "link" | "outline" | "secondary" | null | undefined;
|
|
5
|
+
size?: "default" | "icon" | "lg" | "sm" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
|
|
8
8
|
asChild?: boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
3
|
+
declare function DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>): React.JSX.Element;
|
|
4
|
+
declare function DropdownMenuPortal({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>): React.JSX.Element;
|
|
5
|
+
declare function DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>): React.JSX.Element;
|
|
6
|
+
declare function DropdownMenuContent({ className, sideOffset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>): React.JSX.Element;
|
|
7
|
+
declare function DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>): React.JSX.Element;
|
|
8
|
+
declare function DropdownMenuItem({ className, inset, variant, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
9
|
+
inset?: boolean;
|
|
10
|
+
variant?: "default" | "destructive";
|
|
11
|
+
}): React.JSX.Element;
|
|
12
|
+
declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): React.JSX.Element;
|
|
13
|
+
declare function DropdownMenuRadioGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>): React.JSX.Element;
|
|
14
|
+
declare function DropdownMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>): React.JSX.Element;
|
|
15
|
+
declare function DropdownMenuLabel({ className, inset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
|
|
16
|
+
inset?: boolean;
|
|
17
|
+
}): React.JSX.Element;
|
|
18
|
+
declare function DropdownMenuSeparator({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>): React.JSX.Element;
|
|
19
|
+
declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
20
|
+
declare function DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>): React.JSX.Element;
|
|
21
|
+
declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
|
|
22
|
+
inset?: boolean;
|
|
23
|
+
}): React.JSX.Element;
|
|
24
|
+
declare function DropdownMenuSubContent({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>): React.JSX.Element;
|
|
25
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, };
|
|
26
|
+
//# sourceMappingURL=dropdown-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../../../src/@/components/ui/dropdown-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
3
|
+
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
|
|
4
|
+
import { cn } from "@/lib/utils";
|
|
5
|
+
function DropdownMenu({ ...props }) {
|
|
6
|
+
return _jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
7
|
+
}
|
|
8
|
+
function DropdownMenuPortal({ ...props }) {
|
|
9
|
+
return (_jsx(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props }));
|
|
10
|
+
}
|
|
11
|
+
function DropdownMenuTrigger({ ...props }) {
|
|
12
|
+
return (_jsx(DropdownMenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", ...props }));
|
|
13
|
+
}
|
|
14
|
+
function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
|
|
15
|
+
return (_jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { "data-slot": "dropdown-menu-content", sideOffset: sideOffset, className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className), ...props }) }));
|
|
16
|
+
}
|
|
17
|
+
function DropdownMenuGroup({ ...props }) {
|
|
18
|
+
return (_jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props }));
|
|
19
|
+
}
|
|
20
|
+
function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
|
|
21
|
+
return (_jsx(DropdownMenuPrimitive.Item, { "data-slot": "dropdown-menu-item", "data-inset": inset, "data-variant": variant, className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
|
|
24
|
+
return (_jsxs(DropdownMenuPrimitive.CheckboxItem, { "data-slot": "dropdown-menu-checkbox-item", className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), checked: checked, ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4" }) }) }), children] }));
|
|
25
|
+
}
|
|
26
|
+
function DropdownMenuRadioGroup({ ...props }) {
|
|
27
|
+
return (_jsx(DropdownMenuPrimitive.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props }));
|
|
28
|
+
}
|
|
29
|
+
function DropdownMenuRadioItem({ className, children, ...props }) {
|
|
30
|
+
return (_jsxs(DropdownMenuPrimitive.RadioItem, { "data-slot": "dropdown-menu-radio-item", className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(CircleIcon, { className: "size-2 fill-current" }) }) }), children] }));
|
|
31
|
+
}
|
|
32
|
+
function DropdownMenuLabel({ className, inset, ...props }) {
|
|
33
|
+
return (_jsx(DropdownMenuPrimitive.Label, { "data-slot": "dropdown-menu-label", "data-inset": inset, className: cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className), ...props }));
|
|
34
|
+
}
|
|
35
|
+
function DropdownMenuSeparator({ className, ...props }) {
|
|
36
|
+
return (_jsx(DropdownMenuPrimitive.Separator, { "data-slot": "dropdown-menu-separator", className: cn("bg-border -mx-1 my-1 h-px", className), ...props }));
|
|
37
|
+
}
|
|
38
|
+
function DropdownMenuShortcut({ className, ...props }) {
|
|
39
|
+
return (_jsx("span", { "data-slot": "dropdown-menu-shortcut", className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className), ...props }));
|
|
40
|
+
}
|
|
41
|
+
function DropdownMenuSub({ ...props }) {
|
|
42
|
+
return _jsx(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
|
|
43
|
+
}
|
|
44
|
+
function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
|
|
45
|
+
return (_jsxs(DropdownMenuPrimitive.SubTrigger, { "data-slot": "dropdown-menu-sub-trigger", "data-inset": inset, className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8", className), ...props, children: [children, _jsx(ChevronRightIcon, { className: "ml-auto size-4" })] }));
|
|
46
|
+
}
|
|
47
|
+
function DropdownMenuSubContent({ className, ...props }) {
|
|
48
|
+
return (_jsx(DropdownMenuPrimitive.SubContent, { "data-slot": "dropdown-menu-sub-content", className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg", className), ...props }));
|
|
49
|
+
}
|
|
50
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, };
|
|
51
|
+
//# sourceMappingURL=dropdown-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu.js","sourceRoot":"","sources":["../../../../src/@/components/ui/dropdown-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/auth/context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,IAAI,MAAM,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIlD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/auth/context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,IAAI,MAAM,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIlD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAG,CAY5E,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAAK,CAC9E,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const entrypoints:
|
|
1
|
+
export declare const entrypoints: import("@owlmeans/entrypoint").CommonEntrypoint[];
|
|
2
2
|
//# sourceMappingURL=entrypoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../../src/auth/entrypoints.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../../src/auth/entrypoints.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,mDAAuB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/footer/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/footer/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAM/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAsBlC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { defaultNavTranslate, resolveNavLabel } from '@owlmeans/client-panel';
|
|
3
|
+
import { aliasOf } from '@owlmeans/entrypoint';
|
|
3
4
|
import { cn } from '@/lib/utils';
|
|
4
5
|
import { Link } from '../link.js';
|
|
5
6
|
/**
|
|
@@ -15,10 +16,11 @@ export const Footer = ({ links, translate = defaultNavTranslate, children, class
|
|
|
15
16
|
return null;
|
|
16
17
|
}
|
|
17
18
|
return _jsx("footer", { className: cn('border-t py-6', className), style: style, children: _jsxs("div", { className: cn('flex flex-wrap items-center gap-4 text-sm px-4', containerClassName), children: [links?.map((link, idx) => {
|
|
18
|
-
const
|
|
19
|
+
const alias = link.alias == null ? undefined : aliasOf(link.alias);
|
|
20
|
+
const label = resolveNavLabel(translate, link.label, `modules.${alias ?? link.href ?? ''}`, alias ?? link.href);
|
|
19
21
|
return link.href != null
|
|
20
22
|
? _jsx(Link, { src: link.href, open: link.open, children: label }, `${link.href}:${idx}`)
|
|
21
|
-
: _jsx(Link, { module: link.alias, open: link.open, children: label }, `${
|
|
23
|
+
: _jsx(Link, { module: link.alias, open: link.open, children: label }, `${alias}:${idx}`);
|
|
22
24
|
}), children] }) });
|
|
23
25
|
};
|
|
24
26
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/footer/component.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAIjC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAoB,CAAC,EACtC,KAAK,EAAE,SAAS,GAAG,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EACvF,EAAE,EAAE;IACH,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,iBAAQ,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,YACpE,eAAK,SAAS,EAAE,EAAE,CAAC,gDAAgD,EAAE,kBAAkB,CAAC,aACrF,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;oBACxB,MAAM,KAAK,GAAG,eAAe,CAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/footer/component.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAIjC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAoB,CAAC,EACtC,KAAK,EAAE,SAAS,GAAG,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EACvF,EAAE,EAAE;IACH,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,iBAAQ,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,YACpE,eAAK,SAAS,EAAE,EAAE,CAAC,gDAAgD,EAAE,kBAAkB,CAAC,aACrF,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;oBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAClE,MAAM,KAAK,GAAG,eAAe,CAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CACjF,CAAA;oBAED,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI;wBACtB,CAAC,CAAC,KAAC,IAAI,IAA6B,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,YAAG,KAAK,IAA9D,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,CAAiD;wBACnF,CAAC,CAAC,KAAC,IAAI,IAAyB,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,YAAG,KAAK,IAA9D,GAAG,KAAK,IAAI,GAAG,EAAE,CAAqD,CAAA;gBACvF,CAAC,CAAC,EACD,QAAQ,IACL,GACC,CAAA;AACX,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/form/button/component.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAa,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CAAC,CAAqB,EAA0E,EAAE;IACnH,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/form/button/component.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/form/component.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEzE,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,aAAa,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;AAC1C,aAAa,CAAC,GAAG,CAAC,CAAA;AAElB,MAAM,CAAC,MAAM,IAAI,GAAqB,CAAC,KAAK,EAAE,EAAE;IAC9C,MAAM,EACJ,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EACnE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAC3C,GAAG,KAAK,CAAA;IACT,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACpF,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,CAC7C,CAAA;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,UAAU;YAClB,CAAC,CAAC,WAAW,CAAC,UAAqC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACjG,CAAC,CAAC,SAAS;QACb,UAAU,EAAE,GAAG;KAChB,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAyB,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,UAAU,IAAI,IAAI;YAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAE,UAAkC,CAAC,UAAU,CAAC;YAC7D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAyB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,KAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/form/component.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/components/helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/components/helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,gBACb,YAAY,aACd,YAAY,KACtB,MA4BF,CAAA;AAwBD,eAAO,MAAM,aAAa,QAAO,MAchC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,MAAM,KAAG,CAQ1F,CAAA"}
|
|
@@ -2,6 +2,7 @@ export type * from './types.js';
|
|
|
2
2
|
export * from './panel-app/index.js';
|
|
3
3
|
export * from './layout/index.js';
|
|
4
4
|
export * from './nav/index.js';
|
|
5
|
+
export * from './menu/index.js';
|
|
5
6
|
export * from './footer/index.js';
|
|
6
7
|
export * from './login/index.js';
|
|
7
8
|
export * from './form/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAE/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAEhC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAE/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAEhC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAEA,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAEhC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAEA,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAEhC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAO3C,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAqC9B,CAAA"}
|