doom-design-system 0.6.1 → 0.7.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/dist/components/A2UI/catalog.js +98 -0
- package/dist/components/A2UI/mapping.js +5 -0
- package/dist/components/Checkbox/Checkbox.d.ts +1 -0
- package/dist/components/Checkbox/Checkbox.js +20 -4
- package/dist/components/FileUpload/FileUpload.js +2 -1
- package/dist/components/Page/Page.module.css +9 -3
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Popover/Popover.js +53 -23
- package/dist/components/Rating/Rating.d.ts +17 -0
- package/dist/components/Rating/Rating.js +126 -0
- package/dist/components/Rating/Rating.module.css +131 -0
- package/dist/components/Rating/index.d.ts +1 -0
- package/dist/components/Rating/index.js +1 -0
- package/dist/components/Table/Table.d.ts +2 -3
- package/dist/components/Table/Table.js +2 -20
- package/dist/components/ToggleGroup/ToggleGroup.d.ts +22 -0
- package/dist/components/ToggleGroup/ToggleGroup.js +157 -0
- package/dist/components/ToggleGroup/ToggleGroup.module.css +81 -0
- package/dist/components/ToggleGroup/index.d.ts +1 -0
- package/dist/components/ToggleGroup/index.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/lib/filter/ast/array-filter.d.ts +7 -0
- package/dist/lib/filter/ast/array-filter.js +16 -0
- package/dist/lib/filter/ast/evaluate.d.ts +6 -0
- package/dist/lib/filter/ast/evaluate.js +35 -0
- package/dist/lib/filter/ast/index.d.ts +5 -0
- package/dist/lib/filter/ast/index.js +4 -0
- package/dist/lib/filter/ast/operators.d.ts +7 -0
- package/dist/{components/Table/utils/filterAst.js → lib/filter/ast/operators.js} +0 -52
- package/dist/lib/filter/ast/simple.d.ts +7 -0
- package/dist/lib/filter/ast/simple.js +26 -0
- package/dist/lib/filter/ast/types.d.ts +24 -0
- package/dist/lib/filter/ast/types.js +1 -0
- package/dist/lib/filter/index.d.ts +7 -0
- package/dist/lib/filter/index.js +7 -0
- package/dist/lib/filter/ui/FilterBuilder.d.ts +25 -0
- package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterBuilder.js +3 -3
- package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterConditionRow.d.ts +1 -1
- package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterConditionRow.js +4 -4
- package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterGroup.d.ts +9 -9
- package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterGroup.js +7 -7
- package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterSheetNested.d.ts +3 -3
- package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterSheetNested.js +4 -4
- package/dist/lib/filter/ui/convert.d.ts +16 -0
- package/dist/lib/filter/ui/convert.js +60 -0
- package/dist/lib/filter/ui/index.d.ts +5 -0
- package/dist/lib/filter/ui/index.js +5 -0
- package/dist/lib/filter/ui/utils/tree-utils.d.ts +15 -0
- package/dist/styles/globals.css +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/vitest.config.js +6 -1
- package/package.json +10 -3
- package/dist/components/Table/FilterBuilder/FilterBuilder.d.ts +0 -20
- package/dist/components/Table/FilterBuilder/utils/tree-utils.d.ts +0 -15
- package/dist/components/Table/utils/arrayFilter.d.ts +0 -7
- package/dist/components/Table/utils/arrayFilter.js +0 -21
- package/dist/components/Table/utils/filterAst.d.ts +0 -33
- /package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterBuilder.module.css +0 -0
- /package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterConditionRow.module.css +0 -0
- /package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterGroup.module.css +0 -0
- /package/dist/{components/Table/FilterBuilder → lib/filter/ui}/FilterSheet.module.css +0 -0
- /package/dist/{components/Table/FilterBuilder → lib/filter/ui}/utils/tree-utils.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { FilterOperatorKey } from "../
|
|
1
|
+
import type { FilterOperatorKey } from "../ast";
|
|
2
2
|
import type { FilterField } from "./FilterBuilder";
|
|
3
|
-
export interface
|
|
3
|
+
export interface FilterDraftCondition {
|
|
4
4
|
type: "condition";
|
|
5
5
|
id: string;
|
|
6
6
|
field: string;
|
|
@@ -8,34 +8,34 @@ export interface FilterConditionItem {
|
|
|
8
8
|
value: string;
|
|
9
9
|
logic?: "and" | "or";
|
|
10
10
|
}
|
|
11
|
-
export interface
|
|
11
|
+
export interface FilterDraftGroup {
|
|
12
12
|
type: "group";
|
|
13
13
|
id: string;
|
|
14
|
-
children:
|
|
14
|
+
children: FilterDraft[];
|
|
15
15
|
collapsed?: boolean;
|
|
16
16
|
logic?: "and" | "or";
|
|
17
17
|
}
|
|
18
|
-
export type
|
|
18
|
+
export type FilterDraft = FilterDraftCondition | FilterDraftGroup;
|
|
19
19
|
export interface ConditionRowProps {
|
|
20
|
-
item:
|
|
20
|
+
item: FilterDraftCondition;
|
|
21
21
|
fields: FilterField[];
|
|
22
22
|
parentId: string;
|
|
23
23
|
logic?: "and" | "or";
|
|
24
24
|
showLogic?: boolean;
|
|
25
25
|
isGlobalDragging: boolean;
|
|
26
|
-
onUpdate: (updated:
|
|
26
|
+
onUpdate: (updated: FilterDraftCondition) => void;
|
|
27
27
|
onRemove: () => void;
|
|
28
28
|
onLogicChange?: (logic: "and" | "or") => void;
|
|
29
29
|
}
|
|
30
30
|
export declare function ConditionRow({ item, fields, parentId: _parentId, logic, showLogic, isGlobalDragging, onUpdate, onRemove, onLogicChange, }: ConditionRowProps): import("react/jsx-runtime").JSX.Element;
|
|
31
31
|
interface FilterGroupProps {
|
|
32
|
-
item:
|
|
32
|
+
item: FilterDraftGroup;
|
|
33
33
|
fields: FilterField[];
|
|
34
34
|
parentId: string;
|
|
35
35
|
depth?: number;
|
|
36
36
|
showLogic?: boolean;
|
|
37
37
|
isGlobalDragging?: boolean;
|
|
38
|
-
onUpdate: (updated:
|
|
38
|
+
onUpdate: (updated: FilterDraftGroup) => void;
|
|
39
39
|
onRemove?: () => void;
|
|
40
40
|
onRemoveSourceById?: (id: string) => void;
|
|
41
41
|
onLogicChange?: (logic: "and" | "or") => void;
|
|
@@ -4,13 +4,13 @@ import { useDraggable, useDroppable } from "@dnd-kit/core";
|
|
|
4
4
|
import clsx from "clsx";
|
|
5
5
|
import { ChevronDown, ChevronRight, GripVertical, Plus, Trash2, } from "lucide-react";
|
|
6
6
|
import React, { useCallback, useEffect, useId, useRef, useState } from "react";
|
|
7
|
-
import { Badge } from "
|
|
8
|
-
import { Button } from "
|
|
9
|
-
import { Card } from "
|
|
10
|
-
import { Input } from "
|
|
11
|
-
import { Select } from "
|
|
12
|
-
import { Text } from "
|
|
13
|
-
import { OPERATORS } from "../
|
|
7
|
+
import { Badge } from "../../../components/Badge/Badge.js";
|
|
8
|
+
import { Button } from "../../../components/Button/Button.js";
|
|
9
|
+
import { Card } from "../../../components/Card/Card.js";
|
|
10
|
+
import { Input } from "../../../components/Input/Input.js";
|
|
11
|
+
import { Select } from "../../../components/Select/Select.js";
|
|
12
|
+
import { Text } from "../../../components/Text/Text.js";
|
|
13
|
+
import { OPERATORS } from "../ast/index.js";
|
|
14
14
|
import styles from "./FilterGroup.module.css";
|
|
15
15
|
import { MAX_DEPTH } from "./utils/tree-utils.js";
|
|
16
16
|
function countConditions(item) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { FilterField } from "./FilterBuilder";
|
|
2
|
-
import type {
|
|
2
|
+
import type { FilterDraftGroup } from "./FilterGroup";
|
|
3
3
|
interface FilterSheetNestedProps {
|
|
4
4
|
isOpen: boolean;
|
|
5
5
|
onClose: () => void;
|
|
6
6
|
fields: FilterField[];
|
|
7
|
-
initialValue:
|
|
8
|
-
onApply: (group:
|
|
7
|
+
initialValue: FilterDraftGroup | null;
|
|
8
|
+
onApply: (group: FilterDraftGroup) => void;
|
|
9
9
|
}
|
|
10
10
|
export declare function FilterSheetNested({ isOpen, onClose, fields, initialValue, onApply, }: FilterSheetNestedProps): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
export {};
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { DndContext, DragOverlay, KeyboardSensor, MouseSensor, pointerWithin, TouchSensor, useSensor, useSensors, } from "@dnd-kit/core";
|
|
4
4
|
import { useEffect, useId, useState } from "react";
|
|
5
|
-
import { Button } from "
|
|
6
|
-
import { Flex } from "
|
|
7
|
-
import { Sheet } from "
|
|
8
|
-
import { Text } from "
|
|
5
|
+
import { Button } from "../../../components/Button/Button.js";
|
|
6
|
+
import { Flex } from "../../../components/Layout/Layout.js";
|
|
7
|
+
import { Sheet } from "../../../components/Sheet/Sheet.js";
|
|
8
|
+
import { Text } from "../../../components/Text/Text.js";
|
|
9
9
|
import { ConditionRow, FilterGroup } from "./FilterGroup.js";
|
|
10
10
|
import styles from "./FilterSheet.module.css";
|
|
11
11
|
import { getItemDepth, getMaxRelativeDepth, insertItem, MAX_DEPTH, removeItem, } from "./utils/tree-utils.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Filter, FilterCondition, FilterGroup } from "../ast";
|
|
2
|
+
import type { FilterDraft, FilterDraftCondition, FilterDraftGroup } from "./FilterGroup";
|
|
3
|
+
/**
|
|
4
|
+
* Converts an editable FilterDraft (UI working state) into the canonical
|
|
5
|
+
* immutable Filter (evaluation-ready). Strips UI-only fields like
|
|
6
|
+
* `collapsed` and converts `children[]` to `conditions[]`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function draftToFilter(draft: FilterDraft): Filter;
|
|
9
|
+
/**
|
|
10
|
+
* Converts a canonical Filter into an editable FilterDraft. Generates IDs
|
|
11
|
+
* for any node missing one (the AST treats id as optional, the draft
|
|
12
|
+
* requires it for React keys and dnd identifiers).
|
|
13
|
+
*/
|
|
14
|
+
export declare function filterToDraft(filter: Filter): FilterDraft;
|
|
15
|
+
export declare function conditionDraftToFilter(draft: FilterDraftCondition): FilterCondition;
|
|
16
|
+
export declare function groupDraftToFilter(draft: FilterDraftGroup): FilterGroup;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
let idCounter = 0;
|
|
2
|
+
function nextId(prefix) {
|
|
3
|
+
idCounter += 1;
|
|
4
|
+
return `${prefix}-${Date.now().toString(36)}-${idCounter.toString(36)}`;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Converts an editable FilterDraft (UI working state) into the canonical
|
|
8
|
+
* immutable Filter (evaluation-ready). Strips UI-only fields like
|
|
9
|
+
* `collapsed` and converts `children[]` to `conditions[]`.
|
|
10
|
+
*/
|
|
11
|
+
export function draftToFilter(draft) {
|
|
12
|
+
if (draft.type === "group") {
|
|
13
|
+
return {
|
|
14
|
+
type: "group",
|
|
15
|
+
id: draft.id,
|
|
16
|
+
logic: draft.logic,
|
|
17
|
+
conditions: draft.children.map(draftToFilter),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
type: "condition",
|
|
22
|
+
id: draft.id,
|
|
23
|
+
field: draft.field,
|
|
24
|
+
operator: draft.operator,
|
|
25
|
+
value: draft.value,
|
|
26
|
+
logic: draft.logic,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Converts a canonical Filter into an editable FilterDraft. Generates IDs
|
|
31
|
+
* for any node missing one (the AST treats id as optional, the draft
|
|
32
|
+
* requires it for React keys and dnd identifiers).
|
|
33
|
+
*/
|
|
34
|
+
export function filterToDraft(filter) {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
if (filter.type === "group") {
|
|
37
|
+
return {
|
|
38
|
+
type: "group",
|
|
39
|
+
id: (_a = filter.id) !== null && _a !== void 0 ? _a : nextId("group"),
|
|
40
|
+
logic: filter.logic,
|
|
41
|
+
children: filter.conditions.map(filterToDraft),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
type: "condition",
|
|
46
|
+
id: (_b = filter.id) !== null && _b !== void 0 ? _b : nextId("cond"),
|
|
47
|
+
field: filter.field,
|
|
48
|
+
operator: filter.operator,
|
|
49
|
+
value: filter.value == null ? "" : String(filter.value),
|
|
50
|
+
logic: filter.logic,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// Internal helpers re-exported so existing Table imports keep working.
|
|
54
|
+
// These accept FilterCondition/FilterGroup explicitly.
|
|
55
|
+
export function conditionDraftToFilter(draft) {
|
|
56
|
+
return draftToFilter(draft);
|
|
57
|
+
}
|
|
58
|
+
export function groupDraftToFilter(draft) {
|
|
59
|
+
return draftToFilter(draft);
|
|
60
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { draftToFilter, filterToDraft } from "./convert";
|
|
2
|
+
export { countConditions, FilterBuilder, type FilterBuilderProps, type FilterField, flattenConditions, } from "./FilterBuilder";
|
|
3
|
+
export { type FilterConditionData, FilterConditionRow, } from "./FilterConditionRow";
|
|
4
|
+
export { ConditionRow, type FilterDraft, type FilterDraftCondition, type FilterDraftGroup, FilterGroup, } from "./FilterGroup";
|
|
5
|
+
export { FilterSheetNested } from "./FilterSheetNested";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { draftToFilter, filterToDraft } from "./convert.js";
|
|
2
|
+
export { countConditions, FilterBuilder, flattenConditions, } from "./FilterBuilder.js";
|
|
3
|
+
export { FilterConditionRow, } from "./FilterConditionRow.js";
|
|
4
|
+
export { ConditionRow, FilterGroup, } from "./FilterGroup.js";
|
|
5
|
+
export { FilterSheetNested } from "./FilterSheetNested.js";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterDraft, FilterDraftGroup } from "../FilterGroup";
|
|
2
|
+
export declare const MAX_DEPTH = 3;
|
|
3
|
+
export type DropPosition = "before" | "after" | "inside";
|
|
4
|
+
export declare function getItemDepth(root: FilterDraftGroup, id: string, currentDepth?: number): number;
|
|
5
|
+
export declare function getMaxRelativeDepth(item: FilterDraft): number;
|
|
6
|
+
export declare function findItemPath(root: FilterDraftGroup, targetId: string, path?: {
|
|
7
|
+
group: FilterDraftGroup;
|
|
8
|
+
index: number;
|
|
9
|
+
}[]): {
|
|
10
|
+
group: FilterDraftGroup;
|
|
11
|
+
index: number;
|
|
12
|
+
}[] | null;
|
|
13
|
+
export declare function removeItem(root: FilterDraftGroup, id: string): FilterDraftGroup;
|
|
14
|
+
export declare function findItem(root: FilterDraft, id: string): FilterDraft | null;
|
|
15
|
+
export declare function insertItem(root: FilterDraftGroup, item: FilterDraft, targetId: string, position: DropPosition): FilterDraftGroup;
|
package/dist/styles/globals.css
CHANGED
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
--chip-padding-x: var(--space-2);
|
|
98
98
|
--chip-padding-y: var(--space-1);
|
|
99
99
|
--chip-font-size: var(--text-xs);
|
|
100
|
-
--width-sidebar:
|
|
100
|
+
--width-sidebar: 240px;
|
|
101
101
|
--width-sidebar-collapsed: 64px;
|
|
102
102
|
--width-panel: 400px;
|
|
103
103
|
--width-panel-wide: 600px;
|