@lapis-notes/bases 0.1.2 → 0.1.4
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/CHANGELOG.md +14 -0
- package/LICENSE.md +3 -7
- package/README.md +2 -2
- package/dist/bases-view/components/column-visibility.svelte +69 -20
- package/dist/bases-view/components/column-visibility.svelte.d.ts +1 -1
- package/dist/bases-view/components/filters/filter-properties.svelte +3 -2
- package/dist/bases-view/components/filters/filter-row.svelte +3 -2
- package/dist/bases-view/components/group/group-root.svelte +3 -2
- package/dist/bases-view/components/limit.svelte +1 -3
- package/dist/bases-view/components/sort/sort-root.svelte +4 -2
- package/dist/bases-view/components/sort/sort-row.svelte +5 -2
- package/dist/bases-view/components/views.svelte.d.ts +1 -1
- package/dist/bases-view/view-settings.svelte +3 -2
- package/manifest.json +18 -3
- package/package.json +12 -8
- package/registry-content/overview.md +11 -0
- package/registry.json +175 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Bases changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Restore property-picker accessibility with unique search/result associations, named independent visibility/edit controls in grid rows, and readable hidden-property labels. Preserve keyboard activation without toggling visibility while opening an editor.
|
|
8
|
+
|
|
9
|
+
- [#16](https://github.com/lapismd/lapis-plugins/pull/16) [`a6f080e`](https://github.com/lapismd/lapis-plugins/commit/a6f080e9e09197dc883968bbd8e15cbec55a6b8e) Thanks [@stevejuma](https://github.com/stevejuma)! - Preserve theme contrast for the results-limit label in the query menu.
|
|
10
|
+
|
|
11
|
+
## 0.1.3
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Add official author avatars and deterministic split, light, and dark registry media for plugin banners, overviews, and galleries.
|
|
16
|
+
|
|
3
17
|
## 0.1.2
|
|
4
18
|
|
|
5
19
|
- Initial independent public package extracted from Lapis Notes without changing
|
package/LICENSE.md
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
Apache-2.0
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
This software is licensed under the GNU Affero General Public License, version
|
|
6
|
-
3 or (at your option) any later version (`AGPL-3.0-or-later`). The complete
|
|
7
|
-
license text is available from the
|
|
8
|
-
[GNU Project](https://www.gnu.org/licenses/agpl-3.0.html).
|
|
3
|
+
This project is licensed under the Apache License 2.0.
|
|
4
|
+
See <https://www.apache.org/licenses/LICENSE-2.0>.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bases
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Build table, card, and grouped views from Markdown properties
|
|
4
4
|
|
|
5
5
|
## Install for static composition
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ Register the exported plugin class in the application's `PluginProfile`. Import
|
|
|
13
13
|
registration so the host owns its lifecycle.
|
|
14
14
|
|
|
15
15
|
The runtime plugin ID is `bases`. A matching signed
|
|
16
|
-
`bases-0.1.
|
|
16
|
+
`bases-0.1.4.lapis-plugin` archive is attached to the
|
|
17
17
|
package-scoped GitHub release for manual or registry installation.
|
|
18
18
|
|
|
19
19
|
See the [repository README](https://github.com/lapismd/lapis-plugins#readme) for
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
const commandListId = $props.id();
|
|
2
3
|
import * as Popover from "@lapismd/design-core/shadcn/popover";
|
|
3
4
|
import * as Command from "@lapismd/design-core/shadcn/command";
|
|
4
5
|
import * as DropdownMenu from "@lapismd/design-core/shadcn/dropdown-menu";
|
|
@@ -220,7 +221,7 @@
|
|
|
220
221
|
<DropdownMenu.Root>
|
|
221
222
|
<DropdownMenu.Trigger>
|
|
222
223
|
{#snippet child({ props }: { props: Record<string, unknown> })}
|
|
223
|
-
<Button {...props} size="sm" variant="ghost"
|
|
224
|
+
<Button {...props} size="sm" variant="ghost" aria-label={`${name} property actions`}
|
|
224
225
|
><Ellipsis /></Button
|
|
225
226
|
>
|
|
226
227
|
{/snippet}
|
|
@@ -324,9 +325,11 @@
|
|
|
324
325
|
</div>
|
|
325
326
|
</Command.Root>
|
|
326
327
|
{:else}
|
|
327
|
-
<Command.Root>
|
|
328
|
-
<Command.Input placeholder="Find or create" />
|
|
329
|
-
<Command.List class="bases-style-p-1-eb6a3c">
|
|
328
|
+
<Command.Root label="Filter properties">
|
|
329
|
+
<Command.Input aria-controls={commandListId} aria-haspopup="grid" placeholder="Find or create" />
|
|
330
|
+
<Command.List id={commandListId} class="bases-style-p-1-eb6a3c">
|
|
331
|
+
{#snippet child({ props })}
|
|
332
|
+
<div {...props} role="grid" aria-label="Properties">
|
|
330
333
|
<Command.Empty>No results found.</Command.Empty>
|
|
331
334
|
{#each sortedColumns as column (column.id)}
|
|
332
335
|
<Command.Item
|
|
@@ -334,33 +337,58 @@
|
|
|
334
337
|
controller.toggleVisibility(column.id);
|
|
335
338
|
}}
|
|
336
339
|
>
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
"
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
340
|
+
{#snippet child({ props })}
|
|
341
|
+
<div {...props} role="row">
|
|
342
|
+
<div role="gridcell" class="bases-property-picker__visibility">
|
|
343
|
+
<button
|
|
344
|
+
type="button"
|
|
345
|
+
class="bases-property-picker__toggle"
|
|
346
|
+
aria-label={`Toggle ${column.displayName ?? normalizeName(column.id)} visibility`}
|
|
347
|
+
aria-pressed={controller.isVisible(column.id)}
|
|
348
|
+
onkeydown={(event) => event.stopPropagation()}
|
|
349
|
+
onclick={(event) => {
|
|
350
|
+
event.stopPropagation();
|
|
351
|
+
controller.toggleVisibility(column.id);
|
|
352
|
+
}}
|
|
353
|
+
>
|
|
354
|
+
<div
|
|
355
|
+
data-ui-part="bases-option-indicator"
|
|
356
|
+
data-selected={controller.isVisible(column.id)}
|
|
357
|
+
class={cn(
|
|
358
|
+
"bases-style-mr-2-d2347e bases-style-flex-60fbb7 bases-style-size-4-f7b5fa bases-style-items-center-3960ff bases-style-justify-center-86843c bases-style-rounded-sm-36d446 border bases-style-border-var-interactive-accent-f46c93",
|
|
359
|
+
controller.isVisible(column.id)
|
|
360
|
+
? "bases-style-ring-ring-3e1868 bases-style-border-none-4a5f0e bases-style-bg-var-interactive-accent-c58cc0 bases-style-text-var-text-on-accent-22b2b1 hover:ring bases-style-hover-ring-2-8a0edf"
|
|
361
|
+
: "bases-style-opacity-50-0b8c50 [&_svg]:invisible",
|
|
362
|
+
)}
|
|
363
|
+
>
|
|
364
|
+
<CheckIcon class="bases-style-size-4-f7b5fa" />
|
|
365
|
+
</div>
|
|
366
|
+
<Icon name={[column.icon ?? "lucide-info"]} />
|
|
367
|
+
<span
|
|
368
|
+
class={cn({ "bases-style-text-muted-foreground-bfa603": !controller.isVisible(column.id) })}
|
|
369
|
+
>{column.displayName ?? normalizeName(column.id)}</span
|
|
370
|
+
>
|
|
371
|
+
</button>
|
|
348
372
|
</div>
|
|
349
|
-
<
|
|
350
|
-
<span
|
|
351
|
-
class={cn({ "bases-style-opacity-40-2a2db4": !controller.isVisible(column.id) })}
|
|
352
|
-
>{column.displayName ?? normalizeName(column.id)}</span
|
|
353
|
-
>
|
|
373
|
+
<div role="gridcell">
|
|
354
374
|
<Command.Shortcut>
|
|
355
375
|
<button
|
|
356
376
|
class="bases-style-hover-bg-border-2e3f11 bases-style-rounded-sm-36d446 bases-style-p-1-eb6a3c"
|
|
377
|
+
type="button"
|
|
378
|
+
aria-label={`Edit ${column.displayName ?? normalizeName(column.id)}`}
|
|
379
|
+
onkeydown={(event) => event.stopPropagation()}
|
|
357
380
|
onclick={(evt) => editColumn(evt, column)}
|
|
358
381
|
>
|
|
359
382
|
<ChevronRight />
|
|
360
383
|
</button>
|
|
361
384
|
</Command.Shortcut>
|
|
385
|
+
</div>
|
|
386
|
+
</div>
|
|
387
|
+
{/snippet}
|
|
362
388
|
</Command.Item>
|
|
363
389
|
{/each}
|
|
390
|
+
</div>
|
|
391
|
+
{/snippet}
|
|
364
392
|
</Command.List>
|
|
365
393
|
</Command.Root>
|
|
366
394
|
{/if}
|
|
@@ -386,3 +414,24 @@
|
|
|
386
414
|
{/if}
|
|
387
415
|
</Popover.Content>
|
|
388
416
|
</Popover.Root>
|
|
417
|
+
|
|
418
|
+
<style>
|
|
419
|
+
.bases-property-picker__visibility {
|
|
420
|
+
flex: 1;
|
|
421
|
+
min-width: 0;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.bases-property-picker__toggle {
|
|
425
|
+
display: flex;
|
|
426
|
+
align-items: center;
|
|
427
|
+
gap: var(--spacing, 0.25rem);
|
|
428
|
+
width: 100%;
|
|
429
|
+
border: 0;
|
|
430
|
+
padding: 0;
|
|
431
|
+
background: transparent;
|
|
432
|
+
color: inherit;
|
|
433
|
+
font: inherit;
|
|
434
|
+
text-align: start;
|
|
435
|
+
cursor: pointer;
|
|
436
|
+
}
|
|
437
|
+
</style>
|
|
@@ -8,6 +8,6 @@ type $$ComponentProps = {
|
|
|
8
8
|
formulas: Record<string, string>;
|
|
9
9
|
order: Array<string>;
|
|
10
10
|
};
|
|
11
|
-
declare const ColumnVisibility: import("svelte").Component<$$ComponentProps, {}, "
|
|
11
|
+
declare const ColumnVisibility: import("svelte").Component<$$ComponentProps, {}, "properties" | "order" | "formulas">;
|
|
12
12
|
type ColumnVisibility = ReturnType<typeof ColumnVisibility>;
|
|
13
13
|
export default ColumnVisibility;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
const commandListId = $props.id();
|
|
2
3
|
import * as Popover from "@lapismd/design-core/shadcn/popover";
|
|
3
4
|
import { Button } from "@lapismd/design-core/shadcn/button";
|
|
4
5
|
import * as Command from "@lapismd/design-core/shadcn/command";
|
|
@@ -47,8 +48,8 @@
|
|
|
47
48
|
</Popover.Trigger>
|
|
48
49
|
<Popover.Content class="bases-style-w-310px-8357f2 bases-style-p-0-8a539c" align="start">
|
|
49
50
|
<Command.Root>
|
|
50
|
-
<Command.Input placeholder="Find or create" />
|
|
51
|
-
<Command.List class="bases-style-p-1-eb6a3c">
|
|
51
|
+
<Command.Input aria-controls={commandListId} placeholder="Find or create" />
|
|
52
|
+
<Command.List id={commandListId} class="bases-style-p-1-eb6a3c">
|
|
52
53
|
<Command.Empty>No results found.</Command.Empty>
|
|
53
54
|
{#each controller
|
|
54
55
|
.getAllColumns()
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script lang="ts">
|
|
6
|
+
const commandListId = $props.id();
|
|
6
7
|
import type { Table } from "@tanstack/table-core";
|
|
7
8
|
import * as Popover from "@lapismd/design-core/shadcn/popover";
|
|
8
9
|
import * as Command from "@lapismd/design-core/shadcn/command";
|
|
@@ -235,8 +236,8 @@
|
|
|
235
236
|
</Popover.Trigger>
|
|
236
237
|
<Popover.Content class="bases-style-w-max-2f935d bases-style-p-0-8a539c" align="start">
|
|
237
238
|
<Command.Root>
|
|
238
|
-
<Command.Input placeholder="Find or create" />
|
|
239
|
-
<Command.List class="bases-style-p-1-eb6a3c">
|
|
239
|
+
<Command.Input aria-controls={commandListId} placeholder="Find or create" />
|
|
240
|
+
<Command.List id={commandListId} class="bases-style-p-1-eb6a3c">
|
|
240
241
|
<Command.Empty>No results found.</Command.Empty>
|
|
241
242
|
{#each controller.getAllColumns() as column (column.id)}
|
|
242
243
|
<Command.Item
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
const commandListId = $props.id();
|
|
2
3
|
import * as Command from "@lapismd/design-core/shadcn/command";
|
|
3
4
|
import * as Popover from "@lapismd/design-core/shadcn/popover";
|
|
4
5
|
import * as Select from "@lapismd/design-core/shadcn/select";
|
|
@@ -66,8 +67,8 @@
|
|
|
66
67
|
</Popover.Trigger>
|
|
67
68
|
<Popover.Content class="bases-style-w-320px-57f3af bases-style-p-0-8a539c" align="start">
|
|
68
69
|
<Command.Root>
|
|
69
|
-
<Command.Input placeholder="Group by property" />
|
|
70
|
-
<Command.List class="bases-style-p-1-eb6a3c">
|
|
70
|
+
<Command.Input aria-controls={commandListId} placeholder="Group by property" />
|
|
71
|
+
<Command.List id={commandListId} class="bases-style-p-1-eb6a3c">
|
|
71
72
|
<Command.Empty>No properties found.</Command.Empty>
|
|
72
73
|
{#each controller.getAllColumns() as column (column.id)}
|
|
73
74
|
<Command.Item onSelect={() => setGroupBy(column.id)}>
|
|
@@ -55,9 +55,7 @@
|
|
|
55
55
|
<Command.Root>
|
|
56
56
|
<div class="bases-style-p-2-7660b4">
|
|
57
57
|
<div class="bases-style-grid-f3c543 bases-style-grid-cols-1-d7c833 bases-style-items-center-3960ff bases-style-gap-2-77a2a2 bases-style-px-2-d5eab2 bases-style-pt-1-6b7d6e">
|
|
58
|
-
<Label for="column_name"
|
|
59
|
-
>Limit number of results</Label
|
|
60
|
-
>
|
|
58
|
+
<Label for="column_name">Limit number of results</Label>
|
|
61
59
|
<Input
|
|
62
60
|
type="number"
|
|
63
61
|
placeholder="e.g 10"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
const commandListId = $props.id();
|
|
2
3
|
import { DragDropProvider } from "@dnd-kit/svelte";
|
|
3
4
|
import type { DragEndEvent } from "@dnd-kit/dom";
|
|
4
5
|
import { arrayMove } from "@dnd-kit/helpers";
|
|
@@ -144,8 +145,8 @@
|
|
|
144
145
|
</Popover.Trigger>
|
|
145
146
|
<Popover.Content class="bases-style-w-max-2f935d bases-style-p-0-8a539c" align="start">
|
|
146
147
|
<Command.Root>
|
|
147
|
-
<Command.Input placeholder="Group by property" />
|
|
148
|
-
<Command.List class="bases-style-p-1-eb6a3c">
|
|
148
|
+
<Command.Input aria-controls={commandListId} placeholder="Group by property" />
|
|
149
|
+
<Command.List id={commandListId} class="bases-style-p-1-eb6a3c">
|
|
149
150
|
<Command.Empty>No results found.</Command.Empty>
|
|
150
151
|
{#each controller.getAllColumns() as column (column.id)}
|
|
151
152
|
<Command.Item onSelect={() => setGroupBy(column.id)}>
|
|
@@ -198,6 +199,7 @@
|
|
|
198
199
|
<Button
|
|
199
200
|
variant="ghost"
|
|
200
201
|
size="sm"
|
|
202
|
+
aria-label="Clear grouping"
|
|
201
203
|
class="bases-style-bg-background-e6f9e3 bases-style-h-8-ed8a5d bases-style-rounded-none-0c5e91 bases-style-rounded-r-md-d4eb07 bases-style-border-none-4a5f0e bases-style-shadow-none-ad47d1 bases-style-outline-none-df37b1"
|
|
202
204
|
disabled={!selectedGroupColumn}
|
|
203
205
|
onclick={() => (controller.selectedView.groupBy = undefined)}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
const commandListId = $props.id();
|
|
2
3
|
import { createDraggable, createDroppable } from "@dnd-kit/svelte";
|
|
3
4
|
import * as Popover from "@lapismd/design-core/shadcn/popover";
|
|
4
5
|
import * as Command from "@lapismd/design-core/shadcn/command";
|
|
@@ -96,6 +97,7 @@
|
|
|
96
97
|
<Button
|
|
97
98
|
{@attach draggable.attachHandle}
|
|
98
99
|
size="sm"
|
|
100
|
+
aria-label={`Reorder ${column?.displayName ?? "sort"}`}
|
|
99
101
|
class="drag-handle bases-style-mr-0-5-1caf26"
|
|
100
102
|
variant="ghost"
|
|
101
103
|
>
|
|
@@ -123,8 +125,8 @@
|
|
|
123
125
|
</Popover.Trigger>
|
|
124
126
|
<Popover.Content class="bases-style-w-max-2f935d bases-style-p-0-8a539c" align="start">
|
|
125
127
|
<Command.Root>
|
|
126
|
-
<Command.Input placeholder="Find or create" />
|
|
127
|
-
<Command.List class="bases-style-p-1-eb6a3c">
|
|
128
|
+
<Command.Input aria-controls={commandListId} placeholder="Find or create" />
|
|
129
|
+
<Command.List id={commandListId} class="bases-style-p-1-eb6a3c">
|
|
128
130
|
<Command.Empty>No results found.</Command.Empty>
|
|
129
131
|
{#each controller.getAllColumns() as column (column.id)}
|
|
130
132
|
<Command.Item
|
|
@@ -179,6 +181,7 @@
|
|
|
179
181
|
<Button
|
|
180
182
|
variant="ghost"
|
|
181
183
|
size="sm"
|
|
184
|
+
aria-label={`Remove ${column?.displayName ?? "sort"}`}
|
|
182
185
|
class="bases-style-bg-background-e6f9e3 bases-style-h-8-ed8a5d bases-style-rounded-none-0c5e91 bases-style-rounded-r-md-d4eb07 bases-style-border-none-4a5f0e bases-style-shadow-none-ad47d1 bases-style-outline-none-df37b1"
|
|
183
186
|
onclick={() => deleteSort()}
|
|
184
187
|
>
|
|
@@ -7,6 +7,6 @@ type $$ComponentProps = {
|
|
|
7
7
|
table?: any;
|
|
8
8
|
show: boolean;
|
|
9
9
|
};
|
|
10
|
-
declare const Views: import("svelte").Component<$$ComponentProps, {}, "
|
|
10
|
+
declare const Views: import("svelte").Component<$$ComponentProps, {}, "views" | "value" | "show">;
|
|
11
11
|
type Views = ReturnType<typeof Views>;
|
|
12
12
|
export default Views;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
const commandListId = $props.id();
|
|
2
3
|
import { Icon } from "@lapis-notes/api/icon";
|
|
3
4
|
import { Label } from "@lapismd/design-core/shadcn/label";
|
|
4
5
|
import { Input } from "@lapismd/design-core/shadcn/input";
|
|
@@ -297,8 +298,8 @@
|
|
|
297
298
|
</Popover.Trigger>
|
|
298
299
|
<Popover.Content class="bases-style-w-310px-8357f2 bases-style-p-0-8a539c" align="start">
|
|
299
300
|
<Command.Root>
|
|
300
|
-
<Command.Input placeholder="Find or create" />
|
|
301
|
-
<Command.List class="bases-style-p-1-eb6a3c">
|
|
301
|
+
<Command.Input aria-controls={`${commandListId}-${option.key}`} placeholder="Find or create" />
|
|
302
|
+
<Command.List id={`${commandListId}-${option.key}`} class="bases-style-p-1-eb6a3c">
|
|
302
303
|
<Command.Empty>No results found.</Command.Empty>
|
|
303
304
|
{#each controller
|
|
304
305
|
.getAllColumns()
|
package/manifest.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "bases",
|
|
3
3
|
"name": "Bases",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.4",
|
|
5
5
|
"minAppVersion": "0.1.0",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "Build table, card, and grouped views from Markdown properties",
|
|
7
7
|
"author": "Lapis Notes Bases",
|
|
8
8
|
"authorUrl": "https://app.lapis.md",
|
|
9
|
+
"authorAvatarUrl": "https://gravatar.com/avatar/f7226d5f9cf07af2a6a60d3ab11413abb9d2e2eb60f2d5cce17356845a166155?size=256&d=initials",
|
|
9
10
|
"isDesktopOnly": false,
|
|
10
11
|
"lapis": {
|
|
11
12
|
"manifestVersion": 1,
|
|
@@ -23,7 +24,21 @@
|
|
|
23
24
|
"@lapis-notes/api/editor/core",
|
|
24
25
|
"@lapis-notes/api/editor/extensions/class-highlighter",
|
|
25
26
|
"@lapis-notes/api/icon",
|
|
26
|
-
"@lapis-notes/api/metadata-value"
|
|
27
|
+
"@lapis-notes/api/metadata-value",
|
|
28
|
+
"@codemirror/autocomplete",
|
|
29
|
+
"@codemirror/language",
|
|
30
|
+
"@codemirror/state",
|
|
31
|
+
"@codemirror/view",
|
|
32
|
+
"@lezer/common",
|
|
33
|
+
"@lezer/highlight",
|
|
34
|
+
"@lezer/lr",
|
|
35
|
+
"svelte/renderer/5.56.10",
|
|
36
|
+
"svelte/renderer/5.56.10/attachments",
|
|
37
|
+
"svelte/renderer/5.56.10/events",
|
|
38
|
+
"svelte/renderer/5.56.10/internal/client",
|
|
39
|
+
"svelte/renderer/5.56.10/internal/disclose-version",
|
|
40
|
+
"svelte/renderer/5.56.10/internal/flags/legacy",
|
|
41
|
+
"svelte/renderer/5.56.10/reactivity"
|
|
27
42
|
],
|
|
28
43
|
"requiresReloadOnUpdate": false
|
|
29
44
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lapis-notes/bases",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Lapis Notes Bases plugin",
|
|
5
|
-
"license": "
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
9
9
|
"manifest.json",
|
|
10
10
|
"registry.json",
|
|
11
|
+
"registry-content",
|
|
11
12
|
"styles.css",
|
|
12
13
|
"README.md",
|
|
13
14
|
"CHANGELOG.md",
|
|
@@ -32,16 +33,12 @@
|
|
|
32
33
|
"./registry.json": "./registry.json"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
35
|
-
"@codemirror/autocomplete": "^6.18.6",
|
|
36
36
|
"@codemirror/lang-sql": "^6.9.1",
|
|
37
37
|
"@codemirror/lang-yaml": "^6.1.2",
|
|
38
|
-
"@codemirror/language": "^6.11.3",
|
|
39
|
-
"@codemirror/state": "^6.6.0",
|
|
40
|
-
"@codemirror/view": "^6.42.1",
|
|
41
38
|
"@dnd-kit/dom": "^0.4.0",
|
|
42
39
|
"@dnd-kit/helpers": "^0.4.0",
|
|
43
40
|
"@dnd-kit/svelte": "^0.4.0",
|
|
44
|
-
"@lapismd/design-core": "^0.
|
|
41
|
+
"@lapismd/design-core": "^0.3.2",
|
|
45
42
|
"@lucide/svelte": "^0.523.0",
|
|
46
43
|
"@tanstack/table-core": "^8.21.3",
|
|
47
44
|
"js-yaml": "^4.1.0",
|
|
@@ -50,7 +47,14 @@
|
|
|
50
47
|
"peaql": "^0.1.25"
|
|
51
48
|
},
|
|
52
49
|
"peerDependencies": {
|
|
53
|
-
"@
|
|
50
|
+
"@codemirror/autocomplete": "^6.18.6",
|
|
51
|
+
"@codemirror/language": "^6.11.3",
|
|
52
|
+
"@codemirror/state": "^6.6.0",
|
|
53
|
+
"@codemirror/view": "^6.42.1",
|
|
54
|
+
"@lapis-notes/api": "^0.1.2",
|
|
55
|
+
"@lezer/common": "^1.5.2",
|
|
56
|
+
"@lezer/highlight": "^1.2.3",
|
|
57
|
+
"@lezer/lr": "^1.4.2",
|
|
54
58
|
"svelte": "^5.0.0"
|
|
55
59
|
},
|
|
56
60
|
"devDependencies": {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Bases
|
|
2
|
+
|
|
3
|
+
Bases turns ordinary Markdown notes and front matter into live, structured
|
|
4
|
+
collections without moving the source into a separate database. A `.base`
|
|
5
|
+
file describes which notes belong, which properties appear, and how the result
|
|
6
|
+
should be filtered, sorted, limited, or grouped.
|
|
7
|
+
|
|
8
|
+
Use tables for detailed review, visual cards for portfolios with cover images,
|
|
9
|
+
or grouped lists for faster scanning. Changes to supported properties still
|
|
10
|
+
flow through normal vault files, so the same notes remain portable and usable
|
|
11
|
+
everywhere else in Lapis.
|
package/registry.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://registry.lapis.md/schemas/plugin-source.schema.json",
|
|
3
|
-
"schemaVersion":
|
|
3
|
+
"schemaVersion": 2,
|
|
4
4
|
"categories": ["data", "database", "editor"],
|
|
5
5
|
"highlights": [
|
|
6
6
|
"Create structured views over notes and front matter.",
|
|
@@ -8,5 +8,178 @@
|
|
|
8
8
|
"Keep editable views backed by ordinary Lapis content."
|
|
9
9
|
],
|
|
10
10
|
"documentationUrl": "https://github.com/lapismd/lapis-plugins/tree/main/packages/bases#readme",
|
|
11
|
-
"
|
|
11
|
+
"appearance": {
|
|
12
|
+
"icon": "table-2",
|
|
13
|
+
"accent": "#14B8A6"
|
|
14
|
+
},
|
|
15
|
+
"media": {
|
|
16
|
+
"banner": {
|
|
17
|
+
"alt": "Lapis Bases showing a populated project cover-card view with real artwork and useful properties.",
|
|
18
|
+
"images": {
|
|
19
|
+
"preview": {
|
|
20
|
+
"path": "registry-assets/banner.preview.webp"
|
|
21
|
+
},
|
|
22
|
+
"full": {
|
|
23
|
+
"path": "registry-assets/banner.full.webp"
|
|
24
|
+
},
|
|
25
|
+
"light": {
|
|
26
|
+
"path": "registry-assets/banner.light.webp"
|
|
27
|
+
},
|
|
28
|
+
"dark": {
|
|
29
|
+
"path": "registry-assets/banner.dark.webp"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"capture": {
|
|
33
|
+
"storyId": "plugins-bases-registry-screenshots--overview",
|
|
34
|
+
"focus": "full-shell"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"overview": {
|
|
38
|
+
"alt": "Lapis Bases grouped list view with populated project records and grouping controls open.",
|
|
39
|
+
"images": {
|
|
40
|
+
"preview": {
|
|
41
|
+
"path": "registry-assets/overview.preview.webp"
|
|
42
|
+
},
|
|
43
|
+
"full": {
|
|
44
|
+
"path": "registry-assets/overview.full.webp"
|
|
45
|
+
},
|
|
46
|
+
"light": {
|
|
47
|
+
"path": "registry-assets/overview.light.webp"
|
|
48
|
+
},
|
|
49
|
+
"dark": {
|
|
50
|
+
"path": "registry-assets/overview.dark.webp"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"capture": {
|
|
54
|
+
"storyId": "plugins-bases-registry-screenshots--grouped-list",
|
|
55
|
+
"focus": "full-shell"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"gallery": [
|
|
60
|
+
{
|
|
61
|
+
"id": "table",
|
|
62
|
+
"alt": "Focused projects table with the Filter panel open to an Active status rule.",
|
|
63
|
+
"images": {
|
|
64
|
+
"preview": {
|
|
65
|
+
"path": "registry-assets/gallery/table.preview.webp"
|
|
66
|
+
},
|
|
67
|
+
"full": {
|
|
68
|
+
"path": "registry-assets/gallery/table.full.webp"
|
|
69
|
+
},
|
|
70
|
+
"light": {
|
|
71
|
+
"path": "registry-assets/gallery/table.light.webp"
|
|
72
|
+
},
|
|
73
|
+
"dark": {
|
|
74
|
+
"path": "registry-assets/gallery/table.dark.webp"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"capture": {
|
|
78
|
+
"storyId": "plugins-bases-registry-screenshots--filter-options",
|
|
79
|
+
"focus": "full-shell"
|
|
80
|
+
},
|
|
81
|
+
"card": {
|
|
82
|
+
"headline": [
|
|
83
|
+
{
|
|
84
|
+
"text": "Filter the work",
|
|
85
|
+
"tone": "neutral"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"text": "to what matters now",
|
|
89
|
+
"tone": "cyan"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"description": [
|
|
93
|
+
{
|
|
94
|
+
"text": "Combine property rules across one view or every view while the source stays",
|
|
95
|
+
"tone": "neutral"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"text": "ordinary Markdown.",
|
|
99
|
+
"tone": "green"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "cards",
|
|
106
|
+
"alt": "Focused projects base displayed as visual cards with actual cover artwork, owner, status, and score.",
|
|
107
|
+
"images": {
|
|
108
|
+
"preview": {
|
|
109
|
+
"path": "registry-assets/gallery/cards.preview.webp"
|
|
110
|
+
},
|
|
111
|
+
"full": {
|
|
112
|
+
"path": "registry-assets/gallery/cards.full.webp"
|
|
113
|
+
},
|
|
114
|
+
"light": {
|
|
115
|
+
"path": "registry-assets/gallery/cards.light.webp"
|
|
116
|
+
},
|
|
117
|
+
"dark": {
|
|
118
|
+
"path": "registry-assets/gallery/cards.dark.webp"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"capture": {
|
|
122
|
+
"storyId": "plugins-bases-registry-screenshots--cover-cards",
|
|
123
|
+
"focus": "full-shell"
|
|
124
|
+
},
|
|
125
|
+
"card": {
|
|
126
|
+
"headline": [
|
|
127
|
+
{
|
|
128
|
+
"text": "See the work",
|
|
129
|
+
"tone": "neutral"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"text": "at a glance",
|
|
133
|
+
"tone": "violet"
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
"description": [
|
|
137
|
+
{
|
|
138
|
+
"text": "Use cover images and selected properties to build a compact project portfolio.",
|
|
139
|
+
"tone": "neutral"
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "grouped-list",
|
|
146
|
+
"alt": "Focused projects list grouped into Active and Planning sections with the Group by controls open.",
|
|
147
|
+
"images": {
|
|
148
|
+
"preview": {
|
|
149
|
+
"path": "registry-assets/gallery/grouped-list.preview.webp"
|
|
150
|
+
},
|
|
151
|
+
"full": {
|
|
152
|
+
"path": "registry-assets/gallery/grouped-list.full.webp"
|
|
153
|
+
},
|
|
154
|
+
"light": {
|
|
155
|
+
"path": "registry-assets/gallery/grouped-list.light.webp"
|
|
156
|
+
},
|
|
157
|
+
"dark": {
|
|
158
|
+
"path": "registry-assets/gallery/grouped-list.dark.webp"
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"capture": {
|
|
162
|
+
"storyId": "plugins-bases-registry-screenshots--grouped-list",
|
|
163
|
+
"focus": "full-shell"
|
|
164
|
+
},
|
|
165
|
+
"card": {
|
|
166
|
+
"headline": [
|
|
167
|
+
{
|
|
168
|
+
"text": "Group related notes",
|
|
169
|
+
"tone": "neutral"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"text": "around the next decision",
|
|
173
|
+
"tone": "green"
|
|
174
|
+
}
|
|
175
|
+
],
|
|
176
|
+
"description": [
|
|
177
|
+
{
|
|
178
|
+
"text": "Shape the same source data into a grouped list when a table is more than you need.",
|
|
179
|
+
"tone": "neutral"
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
]
|
|
12
185
|
}
|