Skip to content
Merged
Show file tree
Hide file tree
Changes from 199 commits
Commits
Show all changes
212 commits
Select commit Hold shift + click to select a range
5a2086a
fix: components space
czwe-01 Aug 8, 2025
891b925
drag-wrapper min-height adjusted
czwe-01 Aug 8, 2025
b7e5cb7
button group
czwe-01 Aug 11, 2025
adbc29e
ignoring inputs height %
czwe-01 Aug 13, 2025
3ad5778
refactor
czwe-01 Aug 18, 2025
3873eb5
checkbox styling in progress
czwe-01 Aug 18, 2025
9bb8876
clean up
czwe-01 Aug 18, 2025
91ab91f
checkbox restore
czwe-01 Aug 18, 2025
6eec4fd
fix: panel height
czwe-01 Aug 18, 2025
0918b55
update for handling file and
czwe-01 Aug 28, 2025
fde6d82
en: inputs height
czwe-01 Aug 29, 2025
e0d53bd
checkbox cleanup
czwe-01 Aug 29, 2025
f726afe
rm unused variable
czwe-01 Aug 29, 2025
8d4d95c
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Aug 29, 2025
b79190e
collapse and tabs height
czwe-01 Aug 29, 2025
4a4a1ec
Merge branch 'thulasizwe/en/canvas' into thulasizwe/en/form-component…
czwe-01 Aug 29, 2025
23e0fc3
with zoom hotkeys
czwe-01 Aug 29, 2025
ee63a2b
rm z-index on zoom button
czwe-01 Aug 29, 2025
6cb1a9d
style adjustments
czwe-01 Sep 1, 2025
d4faaf0
ui cleanup - smaller toolbar buttons, fileList styles fix
czwe-01 Sep 1, 2025
9052ae8
smaller font-size
czwe-01 Sep 2, 2025
4507c0d
need margin clean up
czwe-01 Sep 4, 2025
c4e46a0
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Sep 4, 2025
fe73db8
fine margin
czwe-01 Sep 4, 2025
885135d
some fixes on panels and canvas
czwe-01 Sep 8, 2025
fa9d8f8
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Sep 8, 2025
bd51999
empty canvas indicator
czwe-01 Sep 8, 2025
05281eb
button fix
czwe-01 Sep 8, 2025
8c77ba5
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Sep 22, 2025
3bf3c0e
Merge branch 'thulasizwe/en/canvas' into thulasizwe/en/form-component…
czwe-01 Oct 15, 2025
b86b776
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Oct 16, 2025
fde0b5b
Merge branch 'thulasizwe/en/form-components-width' of https://github.…
czwe-01 Oct 16, 2025
56c3e74
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Oct 16, 2025
e77fbbe
refactor: update file upload component styles and settings
czwe-01 Oct 17, 2025
bc49dcb
refactor: clean up code style and improve consistency across components
czwe-01 Oct 21, 2025
e88a069
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Oct 21, 2025
065c7bb
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Oct 21, 2025
ef8e5b8
refactor: update type definitions for component utilities
czwe-01 Oct 21, 2025
0012f3d
fix: handle potential null model in formComponentHooks
czwe-01 Oct 21, 2025
1879cc5
fix: form-item-label margin
czwe-01 Oct 21, 2025
7ac4c4d
fix: adjust tooltip alignment in form item styles
czwe-01 Oct 21, 2025
dca3479
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Oct 27, 2025
d7e0a9e
refactor: improve styling and layout handling in form components
czwe-01 Oct 27, 2025
0bd30d0
refactor: update file upload styles and improve form item layout hand…
czwe-01 Oct 27, 2025
d30fd40
Merge branch 'thulasizwe/en/form-components-width' of https://github.…
czwe-01 Oct 27, 2025
e313804
refactor: enhance dimension handling and styling in form components
czwe-01 Oct 28, 2025
5e077b8
refactor: enhance form component styling and layout management
czwe-01 Oct 29, 2025
388420e
refactor: streamline component dimension handling and skip logic
czwe-01 Jan 22, 2026
18ed5a1
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Jan 22, 2026
90c9922
refactor: improve background utility functions and clean up code
czwe-01 Jan 22, 2026
5a48159
Merge branch 'thulasizwe/b/4098' into thulasizwe/en/form-components-w…
czwe-01 Jan 22, 2026
1314e33
refactor: enhance dimension handling and styling consistency across c…
czwe-01 Jan 26, 2026
6df75ae
clean up
czwe-01 Jan 26, 2026
5b65e80
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Jan 26, 2026
4deeb3a
lint-fix
czwe-01 Jan 26, 2026
58ff70b
lint-fix
czwe-01 Jan 26, 2026
8fd7795
refactor: improve form component styling and dimension handling in de…
czwe-01 Feb 5, 2026
9d3374c
refactor: enhance form component and styling logic for designer mode,…
czwe-01 Feb 6, 2026
8fa6577
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Feb 6, 2026
6f6be10
fix: ensure child divs in form component have 100% width for consiste…
czwe-01 Feb 9, 2026
c573806
fix: update styling logic for SettingInput component to accommodate '…
czwe-01 Feb 9, 2026
a6fadca
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Feb 9, 2026
18efee8
fix: panel label alignment
czwe-01 Feb 9, 2026
b7a8956
refactor: streamline form item margin handling and improve layout log…
czwe-01 Feb 9, 2026
d32086d
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Feb 9, 2026
867d4b4
file reset to original content
czwe-01 Feb 9, 2026
0572d6c
fix: update button width handling for WYSIWYG behavior in configurabl…
czwe-01 Feb 9, 2026
f21a965
refactor: enhance dimension handling and clean up styles in form comp…
czwe-01 Feb 9, 2026
fcfb1dd
refactor: improve flexBasis calculation in dimension utility
czwe-01 Feb 9, 2026
e96ae03
refactor: optimize form component styling and dimension handling
czwe-01 Feb 9, 2026
d424bb0
refactor: enhance dependency tracking in ConfigurableFormComponent
czwe-01 Feb 10, 2026
bbd4640
refactor: enhance styling and dimension handling in ConfigurableFormC…
czwe-01 Feb 10, 2026
5734efc
using nullish coalescing
czwe-01 Feb 10, 2026
a7eaa6a
refactor: update dimension handling in form components to preserve or…
czwe-01 Feb 10, 2026
4f236de
refactor: unify dimension handling across form components
czwe-01 Feb 10, 2026
838ba49
refactor: enhance margin and dimension handling in form components
czwe-01 Feb 12, 2026
0b5a75e
refactor: clean up styling and dimension handling in form components
czwe-01 Feb 12, 2026
f2148a4
refactor: improve style handling in form components
czwe-01 Feb 12, 2026
242b534
refactor: streamline model creation and style extraction in Configura…
czwe-01 Feb 12, 2026
0ce3c18
rm trailing spaces
czwe-01 Feb 12, 2026
9f711fd
refactor: improve button handling and style in form components
czwe-01 Feb 12, 2026
e6ed759
refactor: optimize styling box handling in ConfigurableFormComponent
czwe-01 Feb 12, 2026
48aec62
fix: handle panel overflow
czwe-01 Feb 12, 2026
2a57f53
fix: improve error handling for styling box parsing in ConfigurableFo…
czwe-01 Feb 12, 2026
2e35280
refactor: enhance dimension and style handling in form components
czwe-01 Feb 17, 2026
07fbc69
removed stale dependency
czwe-01 Feb 17, 2026
e13c7c1
fix: remove trailing spaces and update style properties in Configurab…
czwe-01 Feb 17, 2026
3a39931
fix: remove trailing space in ConfigurableFormItemSetting for code co…
czwe-01 Feb 17, 2026
31f70e2
refactor: update component model to include container configuration
czwe-01 Feb 17, 2026
4bfc8c0
lint-fix
czwe-01 Feb 17, 2026
e91ebbd
refactor: enhance styling utility and component model integration
czwe-01 Feb 17, 2026
60a4a4a
refactor: rename overflow property to menuOverflow in MenuListComponent
czwe-01 Feb 18, 2026
0aa606f
refactor: enhance styling properties in CollapsiblePanel and ImageCom…
czwe-01 Feb 18, 2026
3f6e3b2
refactor: remove console log from CollapsiblePanel for cleaner code
czwe-01 Feb 18, 2026
1e246fa
refactor: update height property in useStyles for consistent layout
czwe-01 Feb 18, 2026
a653cc9
refactor: integrate validation height measurement into ConfigurableFo…
czwe-01 Feb 19, 2026
06cb86a
rm unused import
czwe-01 Feb 19, 2026
88cb6d1
refactor: enhance validation height handling in ConfigurableFormItemLive
czwe-01 Feb 19, 2026
95c5816
refactor: improve component robustness and styling consistency
czwe-01 Feb 19, 2026
8bc2a32
refactor: improve styling and validation height handling
czwe-01 Feb 19, 2026
466d965
refactor: optimize padding handling and component rendering
czwe-01 Feb 19, 2026
7109fbe
refactor: enhance dimension calculations and style handling
czwe-01 Feb 19, 2026
d25b406
lint-fix
czwe-01 Feb 19, 2026
5f32734
refactor: enhance margin calculations and style handling
czwe-01 Feb 19, 2026
61f4f4d
refactor: improve dimension handling and style calculations
czwe-01 Feb 20, 2026
efb1625
refactor: improve margin calculations and style handling in utility f…
czwe-01 Feb 20, 2026
0bd0071
Merge pull request #4022 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Feb 20, 2026
0fe49e4
refactor: enhance dimension calculations and margin handling in utili…
czwe-01 Feb 20, 2026
a1718a5
Merge pull request #4530 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Feb 20, 2026
e6ac4c8
DRY
czwe-01 Feb 20, 2026
162e070
backend url for testing in shesha cloud
czwe-01 Feb 20, 2026
67570fd
Merge pull request #4531 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Feb 20, 2026
6356741
refactor: enhance dimension calculations and styling in form components
czwe-01 Feb 20, 2026
5a32cd9
refactor: clean up styling utilities
czwe-01 Feb 20, 2026
2996c74
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Feb 20, 2026
9a9184e
refactor: streamline dimension calculations and styling utilities
czwe-01 Feb 20, 2026
aac63c7
lint-fix
czwe-01 Feb 20, 2026
3d4d01f
Merge pull request #4532 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Feb 20, 2026
3c3c079
unused import
czwe-01 Feb 20, 2026
5cca26c
export uupdate
czwe-01 Feb 20, 2026
a2118f5
rm unused import
czwe-01 Feb 20, 2026
c9ac132
Merge branch 'thulasizwe/en/form-components-width' of https://github.…
czwe-01 Feb 20, 2026
0041e0c
rm gitignore
czwe-01 Feb 20, 2026
62796e5
Merge pull request #4533 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Feb 20, 2026
02614ab
DRY
czwe-01 Feb 23, 2026
f60db93
refactor: enhance dimension handling and styling utilities
czwe-01 Feb 23, 2026
240462c
refactor: simplify getDimensionsStyle and remove unused parameters
czwe-01 Feb 23, 2026
8cae3fc
comment cleanup
czwe-01 Feb 23, 2026
6acaae5
Merge pull request #4536 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Feb 23, 2026
59081e7
refactor: clean up styles and margin handling
czwe-01 Feb 25, 2026
c868e10
Merge pull request #4544 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Feb 25, 2026
81c017f
refactor: enhance component styling and dimension handling
czwe-01 Mar 2, 2026
d528191
refactor: improve margin handling and code formatting
czwe-01 Mar 2, 2026
db0311c
refactor: improve dimension handling in form components
czwe-01 Mar 2, 2026
f2548df
refactor: enhance validation height handling and improve component mo…
czwe-01 Mar 2, 2026
dc6bc20
refactor: enhance dimension preservation handling in form components
czwe-01 Mar 3, 2026
7805a4a
refactor: update radio component to enhance label margin handling and…
czwe-01 Mar 3, 2026
588720a
Merge pull request #4553 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 3, 2026
156481c
refactor: update checkbox and text components for improved dimension …
czwe-01 Mar 3, 2026
d7668d6
refactor: adjust default width handling in styling utilities
czwe-01 Mar 3, 2026
66ba00a
fix: label config events
czwe-01 Mar 3, 2026
d48ae49
Merge pull request #4554 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 3, 2026
69ea7c9
refactor: improve dimension handling and style parsing
czwe-01 Mar 4, 2026
d612920
Merge pull request #4556 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 4, 2026
583ef64
refactor: streamline code structure and enhance dimension handling
czwe-01 Mar 4, 2026
73a8425
Merge pull request #4557 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 4, 2026
66faa1d
refactor: simplify useMemo dependencies in RichTextEditorComponent
czwe-01 Mar 4, 2026
5d1d325
refactor: enhance dimension handling and style safety in Configurable…
czwe-01 Mar 4, 2026
d4f9a6d
refactor: enhance dimension handling and layout adjustments in form c…
czwe-01 Mar 4, 2026
109e5f6
fix: react table overflow
czwe-01 Mar 4, 2026
57c8a13
Merge pull request #4558 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 4, 2026
440be7e
refactor: remove inputWidth setting from TextField component
czwe-01 Mar 4, 2026
174ee62
refactor: update styles and improve layout handling in form components
czwe-01 Mar 4, 2026
3c9c183
refactor: streamline dimension handling and remove unused validation …
czwe-01 Mar 4, 2026
43e0926
refactor: enhance overflow handling and error management in components
czwe-01 Mar 4, 2026
5ac1faf
Merge pull request #4560 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 4, 2026
2fca81c
refactor: integrate styles into ConfigurableFormItemLive for improved…
czwe-01 Mar 5, 2026
ffff68b
Merge pull request #4562 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 5, 2026
72513dd
refactor: clean up styles and enhance dimension handling
czwe-01 Mar 5, 2026
07c1c6b
refactor: improve canvas width handling for better type flexibility
czwe-01 Mar 5, 2026
91aad50
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Mar 5, 2026
ce8ea67
Merge pull request #4563 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 5, 2026
ff13bfa
refactor: enhance ConfigurableFormItemLive margins and remove unused …
czwe-01 Mar 5, 2026
0b18d98
Merge pull request #4564 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 5, 2026
85d576d
fix: add missing newline at end of image.tsx file
czwe-01 Mar 5, 2026
3928055
Merge pull request #4565 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 5, 2026
19dd4d1
refactor: simplify ConfigurableFormItemSetting by removing unused sty…
czwe-01 Mar 5, 2026
89234c7
Merge pull request #4566 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 5, 2026
f0d8686
feat:Configs for login and forgot password
KatlehoMadaba Mar 5, 2026
675b0a2
refactor: simplify dropdown and number field styles for consistency
czwe-01 Mar 5, 2026
283354f
refactor: enhance styling and layout consistency across components
czwe-01 Mar 6, 2026
e2847cd
refactor: clean up styles and improve component structure
czwe-01 Mar 6, 2026
a2cb000
Merge pull request #4569 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 6, 2026
d366144
fix: align add color button alignment
czwe-01 Mar 6, 2026
a7e5a24
Merge pull request #4570 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 6, 2026
294ab3e
refactor: update position styles for better layout control in label c…
czwe-01 Mar 6, 2026
d4f42f3
fix:Configs for broken forms
KatlehoMadaba Mar 6, 2026
a525dee
Merge pull request #4571 from KatlehoMadaba/katleho/fix/form-configs
czwe-01 Mar 6, 2026
2ed5a1b
refactor: enhance border input settings and improve layout consistency
czwe-01 Mar 6, 2026
5292463
fix: lint-fix
czwe-01 Mar 6, 2026
81a3525
Merge pull request #4572 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 6, 2026
0d081c7
refactor: integrate useAvailableConstantsData for dynamic styling adj…
czwe-01 Mar 9, 2026
09a20dc
lint fix
czwe-01 Mar 9, 2026
9d65991
Fix: added dep on entityRef useMemo
czwe-01 Mar 9, 2026
fcc7d74
Merge pull request #4573 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 9, 2026
942af12
fix:embedded forms
KatlehoMadaba Mar 9, 2026
9fdf7d7
Merge pull request #4575 from KatlehoMadaba/katleho/fix/form-configs
czwe-01 Mar 9, 2026
d29b837
refactor: clean up styles and improve component logic
czwe-01 Mar 9, 2026
7ac0c7b
Merge branch 'main' into thulasizwe/en/form-components-width
czwe-01 Mar 9, 2026
e5577b5
Merge pull request #4576 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 9, 2026
0a636fa
refactor: minor adjustments in component files
czwe-01 Mar 9, 2026
7b4a492
revert migration change
czwe-01 Mar 9, 2026
f34b283
Merge pull request #4577 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 9, 2026
9340f65
refactor: enhance image component styling and structure
czwe-01 Mar 9, 2026
1d7c251
refactor: improve styling handling in RichTextEditorComponent
czwe-01 Mar 9, 2026
964e842
refactor: enhance dimension validation in style utility
czwe-01 Mar 9, 2026
b09e139
refactor: update styles and improve readability in components
czwe-01 Mar 9, 2026
ec7d5cb
refactor: adjust button margin for improved layout in MultiColorInput…
czwe-01 Mar 9, 2026
53190eb
Merge pull request #4578 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 9, 2026
d26d8fa
fix: update style for login and reset-password forms
Lihlu Mar 9, 2026
aa436d9
refactor: enhance dimension handling in RichTextEditorComponent and s…
czwe-01 Mar 9, 2026
e5ca9f9
Merge pull request #4580 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 9, 2026
5cdffe2
refactor: validate dimension values in style utility
czwe-01 Mar 9, 2026
303d28f
Merge pull request #4581 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 9, 2026
ef08f24
Merge pull request #4579 from Lihlu/lihlumise/embed-auth-forms
czwe-01 Mar 9, 2026
8fdce47
chore: remove AGENTS.md file from the repository
czwe-01 Mar 9, 2026
4bd4cb1
Merge pull request #4582 from czwe-01/thulasizwe/en/form-components-w…
czwe-01 Mar 9, 2026
8ef1cf2
fix:updated broken form configs
KatlehoMadaba Mar 9, 2026
2528c17
Merge branch 'form-component-width/3557' into katleho/fix/form-configs
KatlehoMadaba Mar 9, 2026
7b7519a
Merge pull request #4583 from KatlehoMadaba/katleho/fix/form-configs
czwe-01 Mar 9, 2026
11ed70f
feat:new form configs
KatlehoMadaba Mar 10, 2026
f9be522
Merge pull request #4584 from KatlehoMadaba/katleho/fix/form-configs
czwe-01 Mar 10, 2026
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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
8 changes: 8 additions & 0 deletions shesha-core/src/Shesha.Application/Shesha.Application.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,10 @@
<None Remove="ConfigMigrations\package20260202_1055.shaconfig" />
<None Remove="ConfigMigrations\package20260209_2056.shaconfig" />
<None Remove="ConfigMigrations\package20260225_1631.shaconfig" />
<None Remove="ConfigMigrations\package20260304_1119.shaconfig" />
<None Remove="ConfigMigrations\package20260306_1033.shaconfig" />
<None Remove="ConfigMigrations\package20260306_1109.shaconfig" />
<None Remove="ConfigMigrations\package20260306_1135.shaconfig" />
<None Remove="Excel\template.xlsx" />
<None Remove="ConfigMigrations\package20230324_1835.shaconfig" />
<None Remove="ConfigMigrations\package20230411_1238.shaconfig" />
Expand All @@ -123,6 +127,10 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ConfigMigrations\package20260225_1631.shaconfig" />
<EmbeddedResource Include="ConfigMigrations\package20260304_1119.shaconfig" />
<EmbeddedResource Include="ConfigMigrations\package20260306_1033.shaconfig" />
<EmbeddedResource Include="ConfigMigrations\package20260306_1109.shaconfig" />
<EmbeddedResource Include="ConfigMigrations\package20260306_1135.shaconfig" />
<EmbeddedResource Include="Excel\template.xlsx" />
</ItemGroup>
<ItemGroup>
Expand Down
364 changes: 364 additions & 0 deletions shesha-reactjs/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,364 @@
# AGENTS.md - AI Coding Agent Guide

> This file contains essential information for AI coding agents working on the Shesha ReactJS project.

## Project Overview

**@shesha-io/reactjs** is the React frontend application and UI library for the [Shesha Framework](https://www.shesha.io/) - an open-source Low-Code development framework built on top of ASP.NET Core, ABP.io, React, and Next.js.

The framework enables rapid development of business applications through:
- **Form Builder**: Drag-and-drop form designer with 40+ built-in components
- **Dynamic CRUD APIs**: Auto-generated APIs from domain entities
- **App Themer**: Zero-effort branding and theming
- **Administration Panel**: Built-in user management, roles, permissions, audit logs

## Technology Stack

| Category | Technology | Version |
|----------|------------|---------|
| Framework | React | ^18.3.1 |
| Framework | Next.js | ^14.2.4 |
| Language | TypeScript | ^5.9.2 |
| UI Library | Ant Design | ^5.27.6 |
| State Management | Redux Toolkit | ^2.9.0 |
| Build Tool | Rollup | ^4.49.0 |
| Testing | Jest + React Testing Library | ^30.2.0 |
| Linting | ESLint | ^9.39.2 |

### Key Dependencies
- `@reduxjs/toolkit` - State management
- `@microsoft/signalr` - Real-time communication
- `axios` - HTTP client
- `react-beautiful-dnd` - Drag and drop
- `@monaco-editor/react` - Code editor
- `jodit-react` - Rich text editor
- `react-chartjs-2` + `chart.js` - Charts
- `@react-awesome-query-builder/antd` - Query builder

## Project Structure

```
src/
├── apis/ # API client definitions
├── app/ # Next.js App Router
│ ├── (main)/ # Main layout group
│ ├── configuration-studio/ # Configuration studio page
│ ├── login/ # Login page
│ ├── no-auth/ # Public pages
│ ├── app-provider.tsx # Root app provider
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # Reusable UI components (130+)
│ ├── antd/ # Ant Design wrappers
│ ├── configurableForm/ # Main form component
│ ├── dataTable/ # Data table components
│ └── ...
├── configuration-studio/ # Configuration studio module
├── designer-components/ # Form designer components (100+)
│ ├── _common/ # Shared designer utilities
│ ├── _settings/ # Settings components
│ ├── button/ # Button component
│ ├── dataTable/ # Data table designer
│ └── ...
├── enums/ # TypeScript enums
├── form-factory/ # Form factory utilities
├── generic-pages/ # Built-in pages (dynamic, designer, settings)
├── hooks/ # Custom React hooks (25+)
├── icons/ # Custom icon components
├── interfaces/ # TypeScript interfaces (60+)
├── providers/ # React context providers (50+)
│ ├── auth/ # Authentication
│ ├── form/ # Form state management
│ ├── sheshaApplication/# Main app provider
│ ├── theme/ # Theme management
│ └── ...
├── publicJsApis/ # Public JavaScript APIs exposed to forms
├── shesha-constants/ # Application constants
├── styles/ # Global styles
├── typings/ # TypeScript type declarations
└── utils/ # Utility functions (40+)
```

## Build System

### NPM Scripts

| Command | Description |
|---------|-------------|
| `npm run build` | Build library for production (ESLint → Rollup → tsc-alias) |
| `npm run start` | Watch mode for library development |
| `npm run dev` | Start Next.js development server |
| `npm run build-next` | Build Next.js application |
| `npm run start-next` | Start production Next.js server |
| `npm test` | Run Jest tests once (CI mode) |
| `npm run test:watch` | Run Jest tests in watch mode |
| `npm run lint` | Run ESLint |
| `npm run lint-fix` | Run ESLint with auto-fix |
| `npm run type-check` | Run strict TypeScript type checking |

### Build Configuration

**Library Build (Rollup)**:
- Entry: `src/index.tsx` + `src/providers/index.ts`
- Output: `dist/index.js` (CJS) + `dist/index.es.js` (ESM)
- Type declarations: `dist/index.d.ts`
- Plugins: TypeScript, PostCSS, SVGR, Terser, JSON
- Config: `rollup.config.mjs`

**Development Server (Next.js)**:
- Custom server: `server.js`
- Port: 3000 (configurable via `PORT` env)
- Standalone output mode
- Bundle analyzer: Set `ANALYZE=true`

## TypeScript Configuration

The project uses **project references** for efficient builds:

- `tsconfig.json` - Base configuration with project references
- `tsconfig.base.json` - Shared compiler options
- `tsconfig.rollup.json` - Library build (excludes `app/`)
- `tsconfig.next.json` - Next.js build
- `tsconfig.test.json` - Test configuration
- `tsconfig.strictNulls.json` - Strict null checks

**Path Mapping**:
```json
"@/*": ["./src/*"]
```

## Code Style Guidelines

### ESLint Configuration

Located in `eslint.config.mjs`. The project uses:

**Plugins**:
- `@typescript-eslint` - TypeScript rules
- `react` + `react-hooks` - React rules
- `@stylistic` - Code formatting
- `jsdoc` - JSDoc validation

**Strict Folders** (enhanced type checking):
- `src/configuration-studio`
- `src/providers/*/`
- `src/hooks`
- `src/form-factory`
- `src/designer-components/_settings/utils/background`

**Key Rules**:
- `explicit-function-return-type` - Required return types
- `no-explicit-any` - No `any` type in strict folders
- `no-unused-vars` - Unused variables are errors
- `react-hooks/exhaustive-deps` - Hook dependency checks
- `max-len: 300` - Line length limit

### Code Style

- **Indentation**: 2 spaces
- **Quotes**: Double quotes for JSX, flexible for TS
- **Semicolons**: Required
- **Braces**: 1tbs style (same line)
- **Trailing commas**: Always multiline
- **Arrow functions**: Always use parentheses

```typescript
// Good
const myFunction = (props: IProps): JSX.Element => {
const { value } = props;
return <div>{value}</div>;
};

// Member delimiter style
interface IMyInterface {
prop1: string;
prop2: number;
}
```

## Testing

### Jest Configuration

- Config: `jest.config.js`
- Environment: `jsdom`
- Test pattern: `(/__tests__/.*|(\\.|/)(test|spec))\\.(ts|tsx)$`
- Setup: `@testing-library/jest-dom`

### Test Locations

Tests are co-located with source code in `__tests__` folders:

```
src/providers/form/__tests__/
src/providers/form/utils/__tests__/
src/providers/auth/__tests__/
src/providers/sidebarMenu/__tests__/
...
```

### Running Tests

```bash
npm test # CI mode (once)
npm run test:watch # Watch mode
```

## State Management Architecture

The project uses a **provider pattern** with React Context + Redux Toolkit:

### Key Providers (Hierarchy)

```
GlobalStateProvider
└── ShaApplicationProvider (backendUrl, router)
├── EntityCrudActions
├── UrlActions
├── EntityActions
├── StandardApis
└── StoredFilesProvider
```

### Form State

- `ShaFormProvider` - Provides form instance
- `useShaForm()` hook - Creates/manages form state
- Form state is in `src/providers/form/store/`

### Adding New Providers

1. Create folder in `src/providers/myProvider/`
2. Export from `src/providers/myProvider/index.ts`
3. Add to `src/providers/index.ts` barrel export
4. Add to `src/index.tsx` if public API

## Component Development

### Form Components

Form designer components live in `src/designer-components/`:

```typescript
// Component structure
myComponent/
├── index.tsx # Main component
├── settingsForm.json # Designer settings form
├── interfaces.ts # TypeScript interfaces
└── migrations/ # Version migrations
```

### Component Registration

Components are registered through the metadata system. See `src/providers/form/hooks.ts` for `useFormDesignerComponents()`.

### Public JavaScript APIs

Forms can execute JavaScript. Available APIs are in `src/publicJsApis/`:
- `httpClient` - HTTP requests
- `metadata` - Entity metadata
- `dataTableContextApi` - Data table operations
- `userApi` - Current user info
- `webStorageApi` - Local/session storage

## Environment Variables

| Variable | Description | Default |
|----------|-------------|---------|
| `NODE_ENV` | Environment mode | `development` |
| `BACKEND_URL` | Shesha backend API URL | `http://localhost:21021` |
| `NEXT_APP_ENV` | App environment | `dev` |
| `ANALYZE` | Enable bundle analyzer | `false` |
| `PORT` | Server port | `3000` |
| `SHA_LIGHT_BUILD` | Skip strict linting | `false` |

## Git Workflow

### Commit Convention

Uses [Commitizen](http://commitizen.github.io/cz-cli/) with conventional changelog:

```bash
npm run commit # Interactive commit prompt
```

### Version Bumping

```bash
npm run changelog:patch # Patch version
npm run changelog:minor # Minor version
npm run changelog:major # Major version
```

### Pre-commit Hooks

- Husky configured in `.husky/`
- lint-staged runs `eslint --quiet --fix` on staged files

## Dependencies Notes

### Peer Dependencies

These must be provided by the consuming application:
- `react` ^18.3.1
- `react-dom` ^18.3.1
- `axios` ^1.13.2
- `antd` ^5.x
- `lodash` ^4.17.20
- `@microsoft/signalr` ^8.0.0

### Resolutions/Overrides

- `immer` locked to 9.0.21
- `jodit-react` locked to 4.1.2
- `rc-resize-observer` locked to 1.4.0

## Common Tasks

### Adding a New Component

1. Create component in `src/designer-components/myComponent/`
2. Define `index.tsx` with component logic
3. Create `settingsForm.json` for designer properties
4. Add interfaces in `interfaces.ts`
5. Register in component index
6. Export from `src/designer-components/index.ts` if needed

### Adding a New Provider

1. Create folder `src/providers/myProvider/`
2. Create context, provider, and hooks
3. Export from `src/providers/myProvider/index.ts`
4. Add to `src/providers/index.ts` barrel
5. Add to provider hierarchy in `AppProvider` if needed

### Adding a New Hook

1. Create file `src/hooks/useMyHook.ts`
2. Export from `src/hooks/index.ts`
3. Add JSDoc comments
4. Add tests in `src/hooks/__tests__/` if applicable

## Important Constraints

1. **No `any` type** in strict folders - use proper types
2. **Return types required** for all exported functions in strict folders
3. **No direct `nanoid` import** - use `@/utils/uuid`
4. **No direct `message`/`notification` from antd** - use `App.useApp()`
5. **No `console.log`** in production (stripped by Next.js compiler)
6. **Node.js >= 20** and **npm >= 10** required

## Documentation

- Main docs: https://docs.shesha.io
- Tutorial site: https://tutorial.shesha.dev
- MkDocs config: `mkdocs.yml`
- ReadTheDocs: `.readthedocs.yaml`

## License

GPL-3.0 - See [LICENSE.md](./LICENSE.md)

---

*Last updated: 2026-02-19*
2 changes: 1 addition & 1 deletion shesha-reactjs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading