Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
197 commits
Select commit Hold shift + click to select a range
464749b
feat: adjust box-shadow style for active state in DFlowFunctionDefaul…
nicosammito Nov 27, 2025
2ceddf2
feat: remove 'Add next' text from Button in DFlowFunctionSuggestionCard
nicosammito Nov 27, 2025
2b70ea6
feat: update Badge color and text in DFlowFunctionTriggerCard for cla…
nicosammito Nov 27, 2025
7b700b3
feat: add aliases and displayMessages properties to FunctionDefinitio…
nicosammito Nov 27, 2025
0eff5ba
feat: add identifier property to ParameterDefinition for improved cla…
nicosammito Nov 27, 2025
a183d8c
feat: add aliases and displayMessages properties to FlowTypeView for …
nicosammito Nov 27, 2025
7ad4c9a
feat: add aliases and displayMessages properties to DataTypeView for …
nicosammito Nov 27, 2025
b91df75
feat: update styles for DFlowSuggestionSearchInput to improve layout …
nicosammito Nov 27, 2025
f9d304c
feat: adjust gap constants in DFlow for improved layout consistency
nicosammito Nov 27, 2025
360ff8e
feat: enhance DFlowEdge with gradient support and improved label rend…
nicosammito Nov 27, 2025
e950923
feat: update DFlowMiniMap styles to use fit-content width for improve…
nicosammito Nov 27, 2025
a5a0d38
feat: wrap MiniMap in a Panel for improved layout and positioning
nicosammito Nov 27, 2025
f66e7d0
feat: enhance DFlowValidation component with improved validation disp…
nicosammito Nov 27, 2025
6793ee5
feat: refactor DLayout styles by removing redundant padding and borde…
nicosammito Nov 27, 2025
a407d6c
feat: update DResizable story to enhance layout with new segmented co…
nicosammito Nov 27, 2025
e2d27cd
feat: refine DResizable styles by adjusting border properties and han…
nicosammito Nov 27, 2025
c2ecadc
feat: add grip icon to DResizable handle for improved user interaction
nicosammito Nov 27, 2025
1609a62
feat: enhance SegmentedControl styles with disabled state styling
nicosammito Nov 27, 2025
319a2db
feat: simplify import paths in SegmentedControl component
nicosammito Nov 27, 2025
65c65f1
feat: enhance DFlowControl component with improved button styling and…
nicosammito Nov 28, 2025
71421a6
feat: update DFlowFunctionTriggerCard to enhance Badge styling with r…
nicosammito Nov 28, 2025
21872ac
feat: add borders to layout sections for improved visual separation
nicosammito Nov 28, 2025
3fb5bf8
feat: enhance DResizable component with new layout and button functio…
nicosammito Nov 28, 2025
4f9df14
feat: update flow type ID in DResizable stories for consistency
nicosammito Dec 7, 2025
38b9cef
feat: implement DFlowBuilder component and enhance DFlow with flowId …
nicosammito Dec 7, 2025
0c6cb37
feat: optimize flow edge and node hooks with memoization and improved…
nicosammito Dec 8, 2025
801d3f1
feat: add optional linkingId prop to DFlowFunctionDefaultCard for enh…
nicosammito Dec 8, 2025
42e90a5
feat: extend DFlowFunctionGroupCardProps with new data structure for …
nicosammito Dec 8, 2025
e72b981
feat: optimize update method in reactiveArrayService for improved sta…
nicosammito Dec 8, 2025
d7ca43a
feat: refactor layout calculation in DFlow component for improved rea…
nicosammito Dec 8, 2025
0aefda8
feat: update DFlowFolder styles for improved alignment and spacing
nicosammito Dec 8, 2025
b6890ce
feat: enhance DFlowFolder component with context menu and improved la…
nicosammito Dec 8, 2025
fed4747
feat: simplify depth retrieval in DFlowFunctionGroupCard component
nicosammito Dec 8, 2025
4aa575b
feat: add ContextMenu component with styles and storybook integration
nicosammito Dec 9, 2025
978725c
feat: add DFlowFolderContextMenu component with context menu function…
nicosammito Dec 9, 2025
4de5ffd
feat: add @radix-ui/react-context-menu dependency to enhance context …
nicosammito Dec 9, 2025
f6c0ed3
feat: update DFlowFolder component to use activeFlowId prop in DResiz…
nicosammito Dec 9, 2025
97a4c22
feat: enhance DFlowFolder component with context menu integration and…
nicosammito Dec 9, 2025
184b394
feat: generate unique id for node function suggestions in DFlowSugges…
nicosammito Dec 9, 2025
ff093e6
feat: add DFlowFolderItemPathInput component for enhanced path input …
nicosammito Dec 9, 2025
7750f5e
feat: update DFlowFolder component to use activeFlowId prop in DFlowB…
nicosammito Dec 9, 2025
6e1bf90
feat: refactor DFlow.edges.hook.ts for improved imports and type hand…
nicosammito Dec 11, 2025
a07ce8d
feat: refactor DFlow.nodes.hook.ts for improved imports and type hand…
nicosammito Dec 11, 2025
85fa140
feat: extend DFlowReactiveService with flow and node management methods
nicosammito Dec 11, 2025
95c8beb
feat: remove DFlow.view.ts
nicosammito Dec 11, 2025
412bbf9
feat: update DFlowDataTypeReactiveService to use Flow type instead of…
nicosammito Dec 11, 2025
1215ab6
feat: update validation to use Flow type instead of FlowView
nicosammito Dec 11, 2025
9102d19
feat: update DFlowDataTypeContainsKeyRule to use Flow type instead of…
nicosammito Dec 11, 2025
2963619
feat: update DFlowDataTypeContainsTypeRule to use Flow type instead o…
nicosammito Dec 11, 2025
88d92bb
feat: update DFlowDataTypeParentRule to use Flow type instead of Flow…
nicosammito Dec 11, 2025
235aa08
feat: update DFlowDataTypeReturnTypeRule to use Flow type instead of …
nicosammito Dec 11, 2025
0957e4f
feat: update DFlowDataTypeRule to use Flow type instead of FlowView
nicosammito Dec 11, 2025
508b0f4
feat: simplify data extraction in DFlowExport by directly using flow
nicosammito Dec 11, 2025
564874c
feat: update DFlowFolder to use Flow type instead of FlowView
nicosammito Dec 11, 2025
06bd539
feat: update DFlowFolderContextMenu to use Flow type instead of FlowView
nicosammito Dec 11, 2025
b0a109c
feat: update DFlowFunctionDefaultCard to use NodeFunction type instea…
nicosammito Dec 11, 2025
5f58ccc
feat: update DFlowFunctionSuggestionCard to use NodeFunction type ins…
nicosammito Dec 11, 2025
e6dfb78
feat: update DFlowFunctionTriggerCard to use Flow type instead of Flo…
nicosammito Dec 11, 2025
937f272
feat: update DFlowSuggestion to use NodeFunction type instead of Node…
nicosammito Dec 11, 2025
b8377cd
feat: update DFlowTabDefault to use NodeFunction type instead of Node…
nicosammito Dec 11, 2025
c793273
feat: update DFlowTabTrigger to use Flow type instead of FlowView
nicosammito Dec 11, 2025
5c31dcc
feat: temporarily disable validation results in DFlowValidation hook
nicosammito Dec 11, 2025
056a2fc
feat: refactor imports in DResizable stories for improved organization
nicosammito Dec 11, 2025
2f8ed0d
feat: update generics to use Flow type instead of FlowView
nicosammito Dec 11, 2025
580387a
feat: remove export of DFlow.view for cleaner module structure
nicosammito Dec 11, 2025
fcceb7d
feat: enhance setting and parameter value updates in DFlow service
nicosammito Dec 11, 2025
e43e755
feat: update parameter value submission in DFlow service for improved…
nicosammito Dec 11, 2025
afdd758
feat: enhance input component by merging user-defined event handlers …
nicosammito Dec 11, 2025
d160cfc
feat: streamline value submission in DFlowTabTrigger by directly sett…
nicosammito Dec 11, 2025
5a5492c
feat: implement node deletion logic in DFlow service to maintain flow…
nicosammito Dec 11, 2025
988565e
feat: replace DFlowControl with DFlowPanelSize and add DFlowPanelCont…
nicosammito Dec 11, 2025
e1e8763
feat: add DFlowPanelControl component for managing flow node actions
nicosammito Dec 11, 2025
0a26cd7
feat: rename DFlowControl to DFlowPanelSize for improved clarity
nicosammito Dec 11, 2025
6f3ac22
feat: rename control module to panel and update exports for consistency
nicosammito Dec 11, 2025
9bde188
feat: remove unused IconCopy import from DFlowPanelControl and format…
nicosammito Dec 11, 2025
30c6163
feat: refactor deleteById and renameById methods for improved clarity…
nicosammito Dec 11, 2025
c845377
feat: update methods to async for improved handling of asynchronous o…
nicosammito Dec 11, 2025
fa616f5
feat: add functionality to push NodeFunction to flow nodes on paramet…
nicosammito Dec 11, 2025
c4a11a3
feat: simplify DFlowFunctionDefaultCard by removing unused imports an…
nicosammito Dec 12, 2025
4ca569d
feat: enhance DFlowFunctionDefaultCard by adding conditional renderin…
nicosammito Dec 12, 2025
def753b
feat: add conditional styling to Badge component based on badge color…
nicosammito Dec 12, 2025
9030892
feat: enhance Badge component with dynamic color styling and utility …
nicosammito Dec 12, 2025
3e8151b
feat: implement dynamic edge coloring in flow visualization using has…
nicosammito Dec 12, 2025
181a7e8
feat: enhance flow service with dynamic node ID generation and improv…
nicosammito Dec 12, 2025
9220fdb
feat: update DFlowEdge component to use primary badge color and simpl…
nicosammito Dec 12, 2025
fdb5dec
feat: enhance DFlowFunctionDefaultCard with dynamic tab identificatio…
nicosammito Dec 12, 2025
40f58d3
feat: center handles in DFlowFunctionGroupCard for improved alignment
nicosammito Dec 12, 2025
cb05c9d
feat: update active tab retrieval in DFlowPanelControl for improved a…
nicosammito Dec 12, 2025
2258e7b
feat: optimize flow retrieval in DFlowSuggestion with memoization and…
nicosammito Dec 12, 2025
3327db0
feat: update fileTabsService to ensure tab activation triggers state …
nicosammito Dec 12, 2025
94db5da
feat: initialize fileTabsService with an empty array for improved sta…
nicosammito Dec 12, 2025
e030d95
feat: enhance FileTabs.service with update calls on add and delete me…
nicosammito Dec 12, 2025
c36a1b0
feat: extend box styles to include open state for improved accessibility
nicosammito Dec 13, 2025
d003aaf
feat: enhance button styles to include open state for improved access…
nicosammito Dec 13, 2025
ce6395e
feat: update DFlowFunctionDefaultCard to use color-coded icons based …
nicosammito Dec 13, 2025
eb5e756
feat: refactor DFlowTabs to enhance layout and button styles for impr…
nicosammito Dec 13, 2025
057a6a0
feat: refactor FileTabs styles for improved layout and visual clarity
nicosammito Dec 13, 2025
ce77aaa
feat: update FileTabs to improve icon size and scroll area height for…
nicosammito Dec 13, 2025
b10faa0
feat: add color-coding to nodes based on hash for improved visual dis…
nicosammito Dec 14, 2025
b6d698d
feat: pass flowId prop to DFlowTabs for improved flow identification
nicosammito Dec 14, 2025
db9c81d
feat: update DFlowFunctionDefaultCard to use node ID for color hashin…
nicosammito Dec 14, 2025
52de646
feat: enhance DFlowFunctionGroupCard with color utilities for improve…
nicosammito Dec 14, 2025
db9cdae
feat: simplify imports in DFlowFunctionSuggestionCard for cleaner cod…
nicosammito Dec 14, 2025
1e75425
feat: enhance DFlowFunctionTriggerCard with tab registration and acti…
nicosammito Dec 14, 2025
6bd9a28
feat: enhance DFlowTabs with flowId prop and improve tab activation l…
nicosammito Dec 14, 2025
0881363
feat: add flowId prop to DFlowTabs in DResizable story for improved c…
nicosammito Dec 14, 2025
ea1e42a
feat: add getById method and enhance tab registration logic in FileTa…
nicosammito Dec 14, 2025
3b35933
feat: add optional show prop to tab interface in FileTabs component
nicosammito Dec 14, 2025
c1cf29e
feat: refactor imports and enhance DFlowFunctionDefaultCard with impr…
nicosammito Dec 14, 2025
50d3355
feat: update DFlowFunctionTriggerCard to activate tab by default and …
nicosammito Dec 14, 2025
7935301
feat: enhance DFlowTabs with improved tab visibility and context menu…
nicosammito Dec 14, 2025
9021099
feat: add removeTabById and deleteById methods to FileTabsService for…
nicosammito Dec 14, 2025
0b82967
feat: enhance DFlowTabs with improved menu structure and alignment fo…
nicosammito Dec 14, 2025
afb9551
feat: add sourceHandle to edges in DFlow.edges.hook for improved edge…
nicosammito Dec 14, 2025
33a1f2b
feat: update DFlowEdge to adjust stepPosition for improved edge rende…
nicosammito Dec 14, 2025
35bd226
feat: enhance DFlowFunctionDefaultCard with improved handle rendering…
nicosammito Dec 14, 2025
137e830
feat: adjust vertical gap between nodes for improved layout spacing
nicosammito Dec 14, 2025
b464c1b
feat: enhance useFlowEdges to support DFlowEdgeDataProps and improve …
nicosammito Dec 14, 2025
15464c0
feat: remove debug log from flow node handling in DFlow.service.ts
nicosammito Dec 14, 2025
482ad39
feat: enhance DFlowEdge to support new edge types and add suggestion …
nicosammito Dec 14, 2025
4ef4001
feat: adjust IconPlus size in DFlowFunctionSuggestionCard for better …
nicosammito Dec 14, 2025
46e71eb
feat: update addNextNodeById to allow undefined nodeId for improved f…
nicosammito Dec 14, 2025
5bf20b3
feat: update addNextNodeById to accept null parentNodeId for improved…
nicosammito Dec 14, 2025
adcb541
feat: refactor flow node handling to improve nextNodeId assignment logic
nicosammito Dec 14, 2025
2e7f20e
feat: refactor DFlowSuggestion hook to streamline suggestion creation…
nicosammito Dec 14, 2025
f630b02
feat: rempve DFlowSuggestion.service.ts
nicosammito Dec 14, 2025
b33c2dc
feat: remove unused DFlowSuggestion.service and clean up related code
nicosammito Dec 14, 2025
1ef8012
feat: refactor DFlow service to use incremental ID for NodeFunction c…
nicosammito Dec 14, 2025
d269d90
feat: simplify edge creation logic in DFlow.edges.hook by removing un…
nicosammito Dec 14, 2025
6c77dad
feat: remove unused suggestion handling in DFlow.nodes.hook to stream…
nicosammito Dec 14, 2025
095e643
feat: adjust vertical gap in DFlow layout and pass flowId to DFlowPan…
nicosammito Dec 14, 2025
1b62d92
feat: clean up DFlowEdge component by removing unused suggestion hand…
nicosammito Dec 14, 2025
25d0ede
feat: remove unused dataTypeStore and edges references in DFlowFuncti…
nicosammito Dec 14, 2025
bb55b53
feat: enhance DFlowPanelControl with flowId prop and add node functio…
nicosammito Dec 14, 2025
aaa2855
feat: center align InputSuggestionMenuContent in DFlowSuggestionMenu
nicosammito Dec 15, 2025
b118796
feat: refactor node ID generation in DFlowReactiveService to use maxi…
nicosammito Dec 15, 2025
df30e32
feat: remove console logs from addNodeToFlow in DFlowPanelControl
nicosammito Dec 15, 2025
7ce06a9
feat: add tooltip for delete node button in DFlowPanelControl
nicosammito Dec 15, 2025
dd57db6
feat: add DFlowPanelLayout component with layout options and tooltips
nicosammito Dec 15, 2025
f55ec2a
feat: remove DFlowBuilder.tsx
nicosammito Dec 15, 2025
643592c
feat: improve tab management by adding null check and updating tab state
nicosammito Dec 15, 2025
c821f50
feat: implement recursive removal of parameter nodes in flow deletion
nicosammito Dec 15, 2025
a8d470c
feat: refactor useValidateValue to accept dataTypeService as parameter
nicosammito Dec 15, 2025
d21ff5f
feat: add console logs for debugging node addition and flow updates
nicosammito Dec 15, 2025
75be895
feat: ensure service parameter is non-null in useValidateValue calls
nicosammito Dec 15, 2025
8ff0804
feat: remove unused DFlowSuggestion import from DResizable stories
nicosammito Dec 15, 2025
84fb68d
feat: refactor DFlowSuggestion to use interface and simplify suggesti…
nicosammito Dec 15, 2025
ec26d69
feat: update @code0-tech/sagittarius-graphql-types version in package…
nicosammito Dec 15, 2025
19145cc
feat: update type checks for NodeFunction to NodeFunctionIdWrapper in…
nicosammito Dec 15, 2025
4419534
feat: update type checks for NodeFunction to NodeFunctionIdWrapper in…
nicosammito Dec 15, 2025
c04be19
feat: update parameter handling to use NodeFunctionIdWrapper and impr…
nicosammito Dec 15, 2025
11c5502
feat: update type check for NodeFunction to NodeFunctionIdWrapper in …
nicosammito Dec 15, 2025
0802c7b
feat: update type checks and function handling to use NodeFunctionIdW…
nicosammito Dec 15, 2025
4d36093
feat: refactor function validation logic to enhance type safety and h…
nicosammito Dec 15, 2025
7fb90f8
feat: update DFlowFunctionDefaultCard to use NodeFunctionIdWrapper an…
nicosammito Dec 15, 2025
adf4913
feat: remove debug log from addNodeToFlow function in DFlowPanelControl
nicosammito Dec 15, 2025
98e8fc8
feat: update DFlowSuggestion hook to use NodeFunctionIdWrapper for im…
nicosammito Dec 15, 2025
b82c893
feat: update DFlowSuggestion to support multiple value types for enha…
nicosammito Dec 15, 2025
7e7395d
feat: enhance DFlowTabDefault to support NodeFunctionIdWrapper for im…
nicosammito Dec 15, 2025
f15cb49
feat: export GenericMap type for improved accessibility in generics
nicosammito Dec 15, 2025
bd5367d
feat: add spacing for improved readability in addNextNodeById method
nicosammito Dec 15, 2025
d81ef5e
feat: add NodeFunctionIdWrapper type support for improved node traversal
nicosammito Dec 15, 2025
c4e6a41
feat: create DApplicationService abstract class for application setti…
nicosammito Dec 15, 2025
2e1ac09
feat: refactor DFlow.service.ts to add flow update functionality and …
nicosammito Dec 15, 2025
e356bb5
feat: update background color mixing in DFlowFunctionGroupCard for en…
nicosammito Dec 15, 2025
a310df4
feat: add flow update functionality to DResizable stories for enhance…
nicosammito Dec 16, 2025
910bfd2
feat: update setParameterValue method to make value parameter optiona…
nicosammito Dec 16, 2025
14213a5
feat: refactor validation hooks to improve node validation logic and …
nicosammito Dec 16, 2025
e986e9d
feat: enhance tab management by renaming clear method and improving t…
nicosammito Dec 16, 2025
36b1ea0
feat: reorganize import paths for DFlow components to improve module …
nicosammito Dec 16, 2025
643da97
feat: rename validation hook and update import paths for improved cla…
nicosammito Dec 16, 2025
4fa4251
feat: rename validation hook and update import paths for improved cla…
nicosammito Dec 16, 2025
928f740
feat: simplify type imports in DFlow edges hook for improved readability
nicosammito Dec 16, 2025
2ce4c27
feat: streamline type imports in DFlow nodes hook for enhanced readab…
nicosammito Dec 16, 2025
2dceb51
feat: consolidate import statements in DFlow component for improved o…
nicosammito Dec 16, 2025
3dbd791
feat: update import path for Code0Component in DFlowEdge for improved…
nicosammito Dec 16, 2025
f6b5be0
feat: remove unused todo comment in DFlowDataType view for cleaner code
nicosammito Dec 16, 2025
dc36a31
feat: expand IGNORE_ID_KEYS in DFlowDataType.validation.type.ts for c…
nicosammito Dec 16, 2025
4062fee
feat: rename validation hooks and update import paths for consistency
nicosammito Dec 16, 2025
50aecfc
feat: remove outdated TODO comment in DFlowDataType service for clean…
nicosammito Dec 16, 2025
0a6eb2c
feat: simplify import path for DFlowReactiveService in DFlowTabDefaul…
nicosammito Dec 16, 2025
0035ffe
feat: simplify import paths in DFlowTabs for improved clarity and rem…
nicosammito Dec 16, 2025
f339e1b
feat: simplify import paths in DFlowTabTrigger for improved clarity
nicosammito Dec 16, 2025
71cd42e
feat: simplify import path for DFlowReactiveService in DFlowExport fo…
nicosammito Dec 16, 2025
c45521c
feat: simplify import path for ReactiveArrayService in DFlowType serv…
nicosammito Dec 16, 2025
7eaf5b6
feat: update dependencies in DNodeValidation hook for improved memoiz…
nicosammito Dec 16, 2025
a070f52
feat: enhance memoization in DNodeValidation hook by updating depende…
nicosammito Dec 16, 2025
70a2c6a
feat: optimize memoization in DNodeValidation hook by reducing unnece…
nicosammito Dec 16, 2025
4d1098a
feat: simplify import paths for DFlowFunctionReactiveService and DFlo…
nicosammito Dec 16, 2025
646906a
feat: streamline imports in DResizable stories and index files for im…
nicosammito Dec 16, 2025
87feb9c
feat: simplify import paths across multiple files for improved clarit…
nicosammito Dec 16, 2025
c77454d
feat: implement async transitions for flow service operations to enha…
nicosammito Dec 16, 2025
51519f5
feat: remove unused onMove prop from DFlowFolderProps for cleaner int…
nicosammito Dec 16, 2025
d22fda9
feat: add create dialog and refactor rename dialog in DFlowFolderCont…
nicosammito Dec 16, 2025
64e6a15
feat: add DFlowFolderCreateDialog component for creating new flow fol…
nicosammito Dec 16, 2025
ddbb6b9
feat: add DFlowFolderRenameDialog component for renaming flow folders…
nicosammito Dec 16, 2025
0016da9
feat: add getPayloadById method to DFlow service for enhanced flow da…
nicosammito Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 37 additions & 47 deletions package-lock.json

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"@babel/plugin-proposal-decorators": "^7.28.0",
"@babel/plugin-transform-class-properties": "^7.27.1",
"@code0-tech/definition-reader": "^0.0.18",
"@code0-tech/sagittarius-graphql-types": "^0.0.0-c63274fdd34593b8aa24f9f977659fd3d6270150",
"@code0-tech/sagittarius-graphql-types": "^0.0.0-968478cecf351385c6c13c2be8aeae5c45da026c",
"@dagrejs/dagre": "^2.0.0",
"@mdx-js/react": "^3.1.1",
"@radix-ui/react-checkbox": "^1.3.3",
Expand Down Expand Up @@ -94,7 +94,7 @@
"types": "dist/index.d.ts",
"peerDependencies": {
"@ariakit/react": "^0.4.5",
"@code0-tech/sagittarius-graphql-types": "^0.0.0-c63274fdd34593b8aa24f9f977659fd3d6270150",
"@code0-tech/sagittarius-graphql-types": "^0.0.0-968478cecf351385c6c13c2be8aeae5c45da026c",
"@radix-ui/react-checkbox": "^1.3.2",
"@radix-ui/react-dialog": "^1.1.14",
"@radix-ui/react-dropdown-menu": "^2.1.15",
Expand All @@ -118,5 +118,8 @@
},
"publishConfig": {
"access": "public"
},
"dependencies": {
"@radix-ui/react-context-menu": "^2.2.16"
}
}
6 changes: 6 additions & 0 deletions src/components/badge/Badge.style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
height: fit-content;
vertical-align: middle;

@if (var(--badge-color)) {
background-color: var(--badge-color-background);
border: 1px solid var(--badge-color-border);
color: var(--badge-color);
}

& {
@include helpers.fontStyle();
@include helpers.borderRadius()
Expand Down
89 changes: 81 additions & 8 deletions src/components/badge/Badge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,91 @@ import "./Badge.style.scss"
import {Code0Component, Color} from "../../utils/types";
import {mergeCode0Props} from "../../utils/utils";

export interface BadgeType extends Code0Component<HTMLSpanElement>{
export interface BadgeType extends Code0Component<HTMLSpanElement> {
children: React.ReactNode
//defaults to primary
color?: Color
// defaults to primary
color?: Color | string
border?: boolean
}

type RGBA = {
r: number
g: number
b: number
a: number
}

export const Badge: React.FC<BadgeType> = (props) => {

const {color = "primary", border = false, children, ...args} = props

return <span {...mergeCode0Props(`badge badge--${color} ${!border ? "badge--border" : ""}`, args)}>
{children}
</span>

return (
<span
{...mergeCode0Props(
`badge badge--${color} ${!border ? "badge--border" : ""}`,
{
...args,
style: {
...args.style,
"--badge-color-background": mixColorRgb(color, 9),
"--badge-color-border": withAlpha(color, 0.1),
"--badge-color": withAlpha(color, 1),
},
}
)}
>
{children}
</span>
)
}

/* ===========================
Color utilities
=========================== */

const clamp01 = (v: number) => Math.min(Math.max(v, 0), 1)

const parseCssColorToRgba = (color: string): RGBA => {
if (typeof document === "undefined") {
return {r: 0, g: 0, b: 0, a: 1}
}

const el = document.createElement("span")
el.style.color = color
document.body.appendChild(el)

const computed = getComputedStyle(el).color
document.body.removeChild(el)

const match = computed.match(
/rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)(?:\s*,\s*([\d.]+))?\s*\)/
)

if (!match) {
return {r: 0, g: 0, b: 0, a: 1}
}

return {
r: Math.round(Number(match[1])),
g: Math.round(Number(match[2])),
b: Math.round(Number(match[3])),
a: match[4] !== undefined ? Number(match[4]) : 1,
}
}

const mixColorRgb = (color: string, level: number) => {
const w = clamp01(level * 0.1)

const c1 = parseCssColorToRgba(color)
const c2 = parseCssColorToRgba("#030014")

const mix = (a: number, b: number) =>
Math.round(a * (1 - w) + b * w)

return `rgb(${mix(c1.r, c2.r)}, ${mix(c1.g, c2.g)}, ${mix(c1.b, c2.b)})`
}

const withAlpha = (color: string, alpha: number) => {
const c = parseCssColorToRgba(color)
return `rgba(${c.r}, ${c.g}, ${c.b}, ${clamp01(alpha)})`
}
4 changes: 2 additions & 2 deletions src/components/button/Button.style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
}
}

&:active, &:focus, &[aria-selected=true] {
&:active, &:focus, &[aria-selected=true], &[data-state=open] {
@if ($color == variables.$primary) {
border-color: rgba(variables.$secondary, 0.2);
} @else {
Expand All @@ -51,7 +51,7 @@
background: helpers.backgroundColor($color, 1.5);
}

&:active, &:focus, &[aria-selected=true] {
&:active, &:focus, &[aria-selected=true], &[data-state=open] {
background: helpers.backgroundColor($color, 2);
}
}
Expand Down
9 changes: 9 additions & 0 deletions src/components/context-menu/ContextMenu.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import {ContextMenu} from "./ContextMenu";
import {Meta} from "@storybook/react-vite";

const meta: Meta<typeof ContextMenu> = {
title: 'Components/ContextMenu',
component: ContextMenu,
}

export default meta
70 changes: 70 additions & 0 deletions src/components/context-menu/ContextMenu.style.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
@use "../../styles/helpers";
@use "../../styles/box";
@use "../../styles/variables";

.context-menu {

&__content, &__sub-content {
padding: variables.$xxs;
position: relative;
box-sizing: border-box;
z-index: 999;

& {
@include helpers.borderRadius();
}
}

&__label {
text-transform: uppercase;
font-size: variables.$xs;
display: flex;
gap: variables.$xxs;
align-items: center;
padding: variables.$xxs variables.$xs;
color: helpers.color();

& {
@include helpers.fontStyle();
}
}

&__item, &__sub-trigger {
border-radius: variables.$borderRadius - variables.$xxs;
padding: variables.$xxs variables.$xs;
gap: variables.$xs;
cursor: pointer;
width: 100%;
display: flex;
align-items: center;
font-size: variables.$sm;

& {
@include box.box(variables.$primary, variables.$white, variables.$primary);
@include helpers.noFocusStyle();
@include helpers.fontStyle();
@include helpers.disabled();
border: none;
}

&:focus, &[data-focus=true] {
@include box.box(variables.$white, variables.$white, variables.$white);
border: none;
width: 100%;
}
}

&__separator {
border: none;
margin: variables.$xxs 0;
color: rgba(white, .1);
height: 1px;
background-color: rgba(white, .1);
}
}

@each $name, $color in variables.$colors {
.context-menu__content--#{$name}, .context-menu__sub-content--#{$name} {
@include box.box($color);
}
}
117 changes: 117 additions & 0 deletions src/components/context-menu/ContextMenu.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
"use client"

import React from "react";
import {Code0ComponentProps, Color, mergeCode0Props} from "../../utils";
import * as Radix from "@radix-ui/react-context-menu";
import "./ContextMenu.style.scss"
import {Card} from "../card/Card";
import {Flex} from "../flex/Flex";
import {Badge} from "../badge/Badge";
import {IconArrowDown, IconArrowUp, IconCornerDownLeft} from "@tabler/icons-react";
import {Spacing} from "../spacing/Spacing";

export type ContextMenuProps = Code0ComponentProps & Radix.ContextMenuProps
export type ContextMenuTriggerProps = Code0ComponentProps & Radix.ContextMenuTriggerProps
export type ContextMenuPortalProps = Code0ComponentProps & Radix.ContextMenuPortalProps
export type ContextMenuContentProps = Code0ComponentProps & Radix.ContextMenuContentProps & {
color?: Color
}
export type ContextMenuLabelProps = Code0ComponentProps & Radix.ContextMenuLabelProps
export type ContextMenuItemProps = Code0ComponentProps & Radix.ContextMenuItemProps
export type ContextMenuGroupProps = Code0ComponentProps & Radix.ContextMenuGroupProps
export type ContextMenuSubProps = Code0ComponentProps & Radix.ContextMenuSubProps
export type ContextMenuSubTriggerProps = Code0ComponentProps & Radix.ContextMenuSubTriggerProps
export type ContextMenuSubContentProps = Code0ComponentProps & Radix.ContextMenuSubContentProps & {
color?: Color
}
export type ContextMenuSeparatorProps = Code0ComponentProps & Radix.ContextMenuSeparatorProps
export type ContextMenuArrowProps = Code0ComponentProps & Radix.ContextMenuArrowProps

export const ContextMenu: React.FC<ContextMenuProps> = (props) => {
return <Radix.ContextMenu {...mergeCode0Props(`context-menu`, props) as ContextMenuProps}/>
}

export const ContextMenuTrigger: React.FC<ContextMenuTriggerProps> = (props) => {
return <Radix.ContextMenuTrigger {...mergeCode0Props("context-menu__trigger", props) as ContextMenuTriggerProps}/>
}

export const ContextMenuPortal: React.FC<ContextMenuPortalProps> = (props) => {
return <Radix.ContextMenuPortal {...mergeCode0Props("context-menu__portal", props) as ContextMenuPortalProps}/>
}

export const ContextMenuContent: React.FC<ContextMenuContentProps> = (props) => {
return <Radix.ContextMenuContent
align={props.align} {...mergeCode0Props(`context-menu__content context-menu__content--${props.color ?? "secondary"}`, props) as ContextMenuContentProps}>
<Card paddingSize={"xxs"} mt={-0.35} mx={-0.35} style={{borderWidth: "2px"}}>
{props.children}
</Card>
<ContextMenuLabel>
<Flex style={{gap: ".35rem"}}>
<Flex align={"center"} style={{gap: "0.35rem"}}>
<Flex>
<Badge border><IconArrowUp size={12}/></Badge>
<Badge border><IconArrowDown size={12}/></Badge>
</Flex>
move
</Flex>
<Spacing spacing={"xxs"}/>
<Flex align={"center"} style={{gap: ".35rem"}}>
<Badge border><IconCornerDownLeft size={12}/></Badge>
select
</Flex>
</Flex>
</ContextMenuLabel>
</Radix.ContextMenuContent>
}

export const ContextMenuLabel: React.FC<ContextMenuLabelProps> = (props) => {
return <Radix.ContextMenuLabel {...mergeCode0Props("context-menu__label", props) as ContextMenuLabelProps}/>
}

export const ContextMenuItem: React.FC<ContextMenuItemProps> = (props) => {
return <Radix.ContextMenuItem {...mergeCode0Props("context-menu__item", props) as ContextMenuItemProps}/>
}

export const ContextMenuGroup: React.FC<ContextMenuGroupProps> = (props) => {
return <Radix.ContextMenuGroup {...mergeCode0Props("context-menu__group", props) as ContextMenuGroupProps}/>
}

export const ContextMenuSub: React.FC<ContextMenuSubProps> = (props) => {
return <Radix.ContextMenuSub {...mergeCode0Props("context-menu__sub", props) as ContextMenuSubProps}/>
}

export const ContextMenuSubTrigger: React.FC<ContextMenuSubTriggerProps> = (props) => {
return <Radix.ContextMenuSubTrigger {...mergeCode0Props("context-menu__sub-trigger", props) as ContextMenuSubTriggerProps}/>
}

export const ContextMenuSubContent: React.FC<ContextMenuSubContentProps> = (props) => {
return <Radix.ContextMenuSubContent {...mergeCode0Props(`context-menu__sub-content context-menu__sub-content--${props.color ?? "secondary"}`, props) as ContextMenuSubContentProps}>
<Card paddingSize={"xxs"} mt={-0.35} mx={-0.35} style={{borderWidth: "2px"}}>
{props.children}
</Card>
<ContextMenuLabel>
<Flex style={{gap: ".35rem"}}>
<Flex align={"center"} style={{gap: "0.35rem"}}>
<Flex>
<Badge border><IconArrowUp size={12}/></Badge>
<Badge border><IconArrowDown size={12}/></Badge>
</Flex>
move
</Flex>
<Spacing spacing={"xxs"}/>
<Flex align={"center"} style={{gap: ".35rem"}}>
<Badge border><IconCornerDownLeft size={12}/></Badge>
select
</Flex>
</Flex>
</ContextMenuLabel>
</Radix.ContextMenuSubContent>
}

export const ContextMenuSeparator: React.FC<ContextMenuSeparatorProps> = (props) => {
return <Radix.ContextMenuSeparator {...mergeCode0Props("context-menu__separator", props) as ContextMenuSeparatorProps}/>
}

export const ContextMenuArrow: React.FC<ContextMenuArrowProps> = (props) => {
return <Radix.ContextMenuArrow {...mergeCode0Props("context-menu__arrow", props) as ContextMenuArrowProps}/>
}
12 changes: 12 additions & 0 deletions src/components/d-application/DApplication.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {ReactiveArrayService} from "../../utils";
import type {
Application,
ApplicationSettingsUpdateInput,
ApplicationSettingsUpdatePayload
} from "@code0-tech/sagittarius-graphql-types";

export abstract class DApplicationService extends ReactiveArrayService<Application> {

abstract settingsUpdate(payload: ApplicationSettingsUpdateInput): Promise<ApplicationSettingsUpdatePayload | undefined>;

}
Loading