pixelize-design-library 2.2.199 → 2.2.201

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.
Files changed (38) hide show
  1. package/.cursor/TASK-SETUP.md +43 -0
  2. package/.cursor/agents/be-impl.md +37 -0
  3. package/.cursor/agents/fe-impl.md +39 -0
  4. package/.cursor/agents/task-plan.md +56 -0
  5. package/.cursor/agents/test-create.md +31 -0
  6. package/.cursor/agents/test-exec.md +26 -0
  7. package/.cursor/hooks/task-hint.env +1 -0
  8. package/.cursor/hooks/task-skill-nudge.sh +71 -0
  9. package/.cursor/hooks/task-slash-guard.sh +31 -0
  10. package/.cursor/hooks.json +13 -0
  11. package/.cursor/modules/buttons/MODULE.md +13 -0
  12. package/.cursor/modules/cards/MODULE.md +13 -0
  13. package/.cursor/modules/charts/MODULE.md +13 -0
  14. package/.cursor/modules/common/MODULE.md +13 -0
  15. package/.cursor/modules/contact-auth/MODULE.md +13 -0
  16. package/.cursor/modules/data-display/MODULE.md +13 -0
  17. package/.cursor/modules/feedback/MODULE.md +14 -0
  18. package/.cursor/modules/form/MODULE.md +13 -0
  19. package/.cursor/modules/inputs-basic/MODULE.md +13 -0
  20. package/.cursor/modules/inputs-date-file/MODULE.md +13 -0
  21. package/.cursor/modules/inputs-select/MODULE.md +13 -0
  22. package/.cursor/modules/inputs-toggle/MODULE.md +13 -0
  23. package/.cursor/modules/kanban/MODULE.md +14 -0
  24. package/.cursor/modules/layout-navigation/MODULE.md +14 -0
  25. package/.cursor/modules/overlays/MODULE.md +13 -0
  26. package/.cursor/modules/playground/MODULE.md +15 -0
  27. package/.cursor/modules/table/MODULE.md +15 -0
  28. package/.cursor/modules/theme/MODULE.md +15 -0
  29. package/.cursor/modules/types-exports/MODULE.md +17 -0
  30. package/.cursor/modules/utils-hooks/MODULE.md +13 -0
  31. package/.cursor/pixelize-task-statusline.sh +64 -0
  32. package/.cursor/plans/blocked/.gitkeep +0 -0
  33. package/.cursor/plans/current.md +0 -0
  34. package/.cursor/plans/done/.gitkeep +0 -0
  35. package/.cursor/rules +31 -0
  36. package/.cursor/skills/task/SKILL.md +167 -0
  37. package/CLAUDE.md +122 -0
  38. package/package.json +1 -1
@@ -0,0 +1,43 @@
1
+ # Task pipeline — one-time developer setup
2
+
3
+ Hooks in this repo work automatically after clone.
4
+
5
+ ## Recommended (global skills + status line)
6
+
7
+ ```bash
8
+ git clone git@github.com:pixelize-tech/pixelize-cursor-setup.git
9
+ cd pixelize-cursor-setup && ./install.sh
10
+ ```
11
+
12
+ Installs all cross-repo `/` skills (`crm-task`, `social-task`, …), status line, and `cli-config.json`. Restart Cursor.
13
+
14
+ Repo: https://github.com/pixelize-tech/pixelize-cursor-setup
15
+
16
+ ## Manual status line only
17
+
18
+ 1. Copy the script to your user Cursor folder:
19
+
20
+ ```bash
21
+ cp .cursor/pixelize-task-statusline.sh ~/.cursor/pixelize-task-statusline.sh
22
+ chmod +x ~/.cursor/pixelize-task-statusline.sh
23
+ ```
24
+
25
+ 2. Add to `~/.cursor/cli-config.json` (merge if the file already exists):
26
+
27
+ ```json
28
+ {
29
+ "statusLine": {
30
+ "type": "command",
31
+ "command": "~/.cursor/pixelize-task-statusline.sh",
32
+ "padding": 0
33
+ }
34
+ }
35
+ ```
36
+
37
+ 3. Restart Cursor or open a new Agent chat.
38
+
39
+ ## Task skill (feature work)
40
+
41
+ - Pick **`task`** from the **`/`** menu, then describe your goal.
42
+ - Do **not** type `/task` in the message body — a hook will block it (zero tokens wasted).
43
+ - See repo `CLAUDE.md` for the cross-repo skill name if applicable.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: be-impl
3
+ description: >-
4
+ Handles build, exports, and publish pipeline changes. Use in @task phase 2
5
+ when plan includes index.ts, tsc build, or npm publish steps.
6
+ ---
7
+
8
+ You are the lib-impl (build/export) agent for **Pixelize Design Library** (Micro-Components).
9
+
10
+ Note: This repo has no backend API. This agent covers build pipeline, not crm-service.
11
+
12
+ ## When invoked
13
+
14
+ 1. Read CLAUDE.md and .cursor/rules
15
+ 2. Read the plan from .cursor/plans/current.md
16
+ 3. Read `.cursor/modules/types-exports/MODULE.md`
17
+
18
+ ## Workflow
19
+
20
+ 1. Work only inside Micro-Components
21
+ 2. Update `src/index.ts` exports
22
+ 3. Verify `tsconfig.json` and build output in `dist/`
23
+ 4. Run `npm run build` to validate
24
+ 5. Update MODULE.md if export surface changes
25
+ 6. Do not run `npm publish` unless user explicitly requests
26
+
27
+ ## Output
28
+
29
+ - Done / Blocked lists
30
+ - Files changed
31
+ - Build result (pass/fail)
32
+
33
+ ## Rules
34
+
35
+ - Never edit `dist/` directly — change `src/` and rebuild
36
+ - Never commit without user confirmation
37
+ - Never break existing exports without noting semver impact
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: fe-impl
3
+ description: >-
4
+ Implements component changes from an approved plan. Use in @task phase 2
5
+ for UI components, theme, and playground pages.
6
+ ---
7
+
8
+ You are the fe-impl (component implementation) agent for **Pixelize Design Library** (Micro-Components).
9
+
10
+ ## When invoked
11
+
12
+ 1. Read CLAUDE.md and .cursor/rules
13
+ 2. Read the plan from .cursor/plans/current.md — do not replan
14
+ 3. Read `.cursor/modules/<domain>/MODULE.md` for every domain you will touch
15
+ 4. Read one existing similar component before starting
16
+
17
+ ## Workflow
18
+
19
+ 1. Work only inside Micro-Components
20
+ 2. Implement in `src/Components/<Name>/`
21
+ 3. Add/update demo in `src/Pages/` if needed for playground
22
+ 4. Export from `src/index.ts` for public API
23
+ 5. Use Chakra + theme tokens from `src/Theme/` — match existing patterns
24
+ 6. Always handle null/undefined, loading, and error states
25
+ 7. Update `.cursor/modules/<domain>/MODULE.md` after implementation
26
+ 8. Keep changes minimal — no scope creep
27
+
28
+ ## Output
29
+
30
+ - Done: bullet list of completed tasks
31
+ - Files changed: every file path with one-line description
32
+ - Blocked: anything not completed with exact reason
33
+ - Notes for test-create: what needs Jest coverage
34
+
35
+ ## Rules
36
+
37
+ - Never add app-specific CRM/API logic to library components
38
+ - Never commit
39
+ - No placeholder files or fake demo data
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: task-plan
3
+ description: >-
4
+ Creates implementation plans from user goals. Use in @task phase 1, or when
5
+ a structured plan is needed before coding.
6
+ ---
7
+
8
+ You are the task-plan agent for **Pixelize Design Library** (Micro-Components). Produce a concrete actionable plan — do not write code.
9
+
10
+ ## When invoked
11
+
12
+ 1. Read CLAUDE.md and .cursor/rules
13
+ 2. Read .cursor/plans/current.md if it exists — user may be resuming
14
+ 3. Read `.cursor/modules/<domain>/MODULE.md` for every component domain touched
15
+ 4. Ask a question only if the goal is genuinely ambiguous
16
+ 5. Output a plan implementation agents can execute without replanning
17
+
18
+ ## Plan format
19
+
20
+ # [Component / task title]
21
+
22
+ ## Goal
23
+
24
+ One paragraph
25
+
26
+ ## Type
27
+
28
+ feat / fix / refactor / chore
29
+
30
+ ## Scope
31
+
32
+ - In scope: ...
33
+ - Out of scope: ...
34
+ - Agents needed: fe-impl / lib-impl (build-export) / both
35
+
36
+ ## Tasks
37
+
38
+ ### Component (fe-impl)
39
+
40
+ - [ ] Task with file paths under `src/Components/` and acceptance criteria
41
+
42
+ ### Build / export (lib-impl)
43
+
44
+ - [ ] index.ts export, build, version bump if publishing
45
+
46
+ ### Tests
47
+
48
+ - [ ] Jest test files and coverage targets
49
+
50
+ ## Risks / assumptions
51
+
52
+ ## Rules
53
+
54
+ - Never write production code
55
+ - Save approved plan to .cursor/plans/current.md
56
+ - End with: Ready for implementation — list which agents run next
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: test-create
3
+ description: >-
4
+ Writes Jest tests for completed component work. Use in @task phase 3a
5
+ after fe-impl, before test-exec.
6
+ ---
7
+
8
+ You are the test-create agent for **Pixelize Design Library** (Micro-Components).
9
+
10
+ ## When invoked
11
+
12
+ 1. Read the plan from .cursor/plans/current.md
13
+ 2. Read fe-impl output summary
14
+ 3. Read existing `*.test.tsx` files to match conventions
15
+
16
+ ## Coverage required
17
+
18
+ - Happy path render
19
+ - Minimum 2 edge cases (empty, disabled, error props)
20
+ - 1 regression test per bugfix
21
+
22
+ ## Output
23
+
24
+ - Tests added/updated: file paths and what each covers
25
+ - Run command: `npm test` from Micro-Components root
26
+
27
+ ## Rules
28
+
29
+ - Never change production code
30
+ - Never commit
31
+ - Follow existing Jest + Testing Library patterns
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: test-exec
3
+ description: >-
4
+ Runs Jest tests after test-create. Use in @task phase 3b.
5
+ ---
6
+
7
+ You are the test-exec agent for **Pixelize Design Library** (Micro-Components).
8
+
9
+ ## When invoked
10
+
11
+ 1. Read test-create output
12
+ 2. Run `npm test` from Micro-Components root
13
+ 3. Report pass/fail with relevant failure output
14
+
15
+ ## Output
16
+
17
+ - Test run result: pass / fail
18
+ - Failed test names and error snippets if any
19
+ - Recommendation: proceed to review or fix
20
+
21
+ ## Rules
22
+
23
+ - Never commit
24
+ - Never modify production code unless fixing test failures is in scope
25
+ - Never disable, skip, or comment out tests to make them pass
26
+ - Never change test assertions to match wrong behavior — fix the implementation
@@ -0,0 +1 @@
1
+ REPO_HINT="/ → task (this repo) or / → design-task"
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env bash
2
+ # Block first message without / task skill; flag session for status-line warning. Zero tokens.
3
+ set -euo pipefail
4
+
5
+ STATE_FILE="${HOME}/.cursor/pixelize-skill-session-state.json"
6
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
7
+ # shellcheck disable=SC1091
8
+ source "$SCRIPT_DIR/task-hint.env"
9
+
10
+ INPUT=$(cat)
11
+ PROMPT=$(echo "$INPUT" | jq -r '.prompt // empty')
12
+ CONV_ID=$(echo "$INPUT" | jq -r '.conversation_id // empty')
13
+
14
+ if [[ -z "$CONV_ID" ]]; then
15
+ echo '{"continue":true}'
16
+ exit 0
17
+ fi
18
+
19
+ has_skill() {
20
+ echo "$PROMPT" | grep -qiE '^\s*/(task|crm-task|social-task|tickets-task|crm-mobile-task|design-task|hrms-task)\b'
21
+ }
22
+
23
+ ensure_state_file() {
24
+ mkdir -p "$(dirname "$STATE_FILE")"
25
+ [[ -f "$STATE_FILE" ]] || echo '{}' >"$STATE_FILE"
26
+ }
27
+
28
+ update_state() {
29
+ local first_nudge="$1"
30
+ local chatting="$2"
31
+ ensure_state_file
32
+ local tmp
33
+ tmp=$(mktemp)
34
+ jq --arg id "$CONV_ID" \
35
+ --argjson first "$first_nudge" \
36
+ --argjson chatting "$chatting" \
37
+ '.[$id] = {first_nudge_done: $first, chatting_without_skill: $chatting}' \
38
+ "$STATE_FILE" >"$tmp" && mv "$tmp" "$STATE_FILE"
39
+ }
40
+
41
+ if has_skill; then
42
+ if [[ -f "$STATE_FILE" ]] && jq -e --arg id "$CONV_ID" '.[$id]' "$STATE_FILE" >/dev/null 2>&1; then
43
+ update_state true false
44
+ fi
45
+ echo '{"continue":true}'
46
+ exit 0
47
+ fi
48
+
49
+ ensure_state_file
50
+ FIRST_DONE=$(jq -r --arg id "$CONV_ID" '.[$id].first_nudge_done // false' "$STATE_FILE")
51
+
52
+ if [[ "$FIRST_DONE" != "true" ]]; then
53
+ update_state true false
54
+ MSG="━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
55
+ NO TASK SKILL LOADED
56
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
57
+
58
+ You are chatting WITHOUT a pipeline skill.
59
+
60
+ For feature / bugfix work, use the / menu first:
61
+ ${REPO_HINT}
62
+
63
+ Then type your goal in the SAME input (do not type the skill name).
64
+
65
+ Send this message AGAIN to continue without a skill."
66
+ jq -n --arg msg "$MSG" '{continue: false, user_message: $msg}'
67
+ exit 0
68
+ fi
69
+
70
+ update_state true true
71
+ echo '{"continue":true}'
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env bash
2
+ # Blocks plain-text task skill names (not / menu picks). Zero API tokens.
3
+ set -euo pipefail
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
6
+ # shellcheck disable=SC1091
7
+ source "$SCRIPT_DIR/task-hint.env"
8
+
9
+ INPUT=$(cat)
10
+ PROMPT=$(echo "$INPUT" | jq -r '.prompt // empty')
11
+
12
+ # Menu picker embeds "/tickets-task ..." in prompt; attachments stay empty.
13
+ # Only block plain-text mistakes: skill name at start without a leading slash.
14
+ if echo "$PROMPT" | grep -qiE '^\s*@?(task|crm-task|social-task|tickets-task|crm-mobile-task|design-task|hrms-task)\b'; then
15
+ MSG="⚠️ TASK PIPELINE NOT ACTIVE
16
+
17
+ You typed a task command as plain text. The skill was NOT loaded.
18
+
19
+ To run the pipeline:
20
+ 1. Click the chat input
21
+ 2. Type / and pick the skill from the menu
22
+ 3. Send your goal
23
+
24
+ For this repo use: ${REPO_HINT}
25
+
26
+ Do not type task skill names in the message body — use the / menu picker."
27
+ jq -n --arg msg "$MSG" '{continue: false, user_message: $msg}'
28
+ exit 0
29
+ fi
30
+
31
+ echo '{"continue":true}'
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 1,
3
+ "hooks": {
4
+ "beforeSubmitPrompt": [
5
+ {
6
+ "command": ".cursor/hooks/task-slash-guard.sh"
7
+ },
8
+ {
9
+ "command": ".cursor/hooks/task-skill-nudge.sh"
10
+ }
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ # Buttons
2
+
3
+ ## Purpose
4
+
5
+ Button, ButtonGroupIcon, Buttons variants.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Button/`, `ButtonGroupIcon/`, `Buttons/`
10
+
11
+ ## Key rules
12
+
13
+ - Match Chakra button theming via design tokens
@@ -0,0 +1,13 @@
1
+ # Cards
2
+
3
+ ## Purpose
4
+
5
+ Card, PaymentCard, ProfileCard, ProductCard, ProductDetails.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Card/`, `Card/PaymentCard/`, `ProfileCard/`, `ProductCard/`, `ProductDetails/`
10
+
11
+ ## Key rules
12
+
13
+ - ProfileCard has Header/Body/Footer subcomponents
@@ -0,0 +1,13 @@
1
+ # Charts
2
+
3
+ ## Purpose
4
+
5
+ Apexcharts wrappers: Bar, Line, Pie, Polar.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Apexcharts/ApexBarChart/`, `ApexLineChart/`, `ApexPieChart/`, `ApexPolarCharts/`
10
+
11
+ ## Key rules
12
+
13
+ - react-apexcharts; colors from theme chart tokens
@@ -0,0 +1,13 @@
1
+ # Common Helpers
2
+
3
+ ## Purpose
4
+
5
+ Internal shared helpers under `Components/Common/` — not all exported from index.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Common/` — ErrorComponent, FormLabel, etc.
10
+
11
+ ## Key rules
12
+
13
+ - Internal use by other components; export only if needed publicly
@@ -0,0 +1,13 @@
1
+ # Contact & Email
2
+
3
+ ## Purpose
4
+
5
+ ContactForm, VerifyEmailOtp (EmailCards).
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/ContactForm/`, `EmailCards/VerifyEmailOtp/`
10
+
11
+ ## Key rules
12
+
13
+ - OTP flow UI only — API wiring in consumer apps
@@ -0,0 +1,13 @@
1
+ # Data Display
2
+
3
+ ## Purpose
4
+
5
+ Tag, Timeline, Reorder, Divider, Trail.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Tag/`, `Timeline/`, `Reorder/`, `Divider/`, `Trail/`
10
+
11
+ ## Key rules
12
+
13
+ - Trail includes editable cell demos
@@ -0,0 +1,14 @@
1
+ # Feedback
2
+
3
+ ## Purpose
4
+
5
+ Loading, Skeletons, ProgressBar, Notification, FeedbackForm.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Loading/`, `Skeletons/`, `ProgressBar/`, `Notification/`, `FeedbackForm/`
10
+ - `src/services/feedback.ts`
11
+
12
+ ## Key rules
13
+
14
+ - FeedbackForm may POST to account API in consumer apps — keep props generic
@@ -0,0 +1,13 @@
1
+ # Form
2
+
3
+ ## Purpose
4
+
5
+ FormWrapper — shared form layout wrapper for entity forms in CRM apps.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Form/FormWrapper`
10
+
11
+ ## Key rules
12
+
13
+ - Used with smart forms in crm-frontend; keep generic props
@@ -0,0 +1,13 @@
1
+ # Basic Inputs
2
+
3
+ ## Purpose
4
+
5
+ TextInput, PhoneNumberInput, InputTextArea, NoteTextArea, NumberInput, PinInput, PinInputs.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Input/`, `InputTextArea/`, `NoteTextArea/`, `NumberInput/`, `PinInput/`, `PinInputs/`
10
+
11
+ ## Key rules
12
+
13
+ - InputSwitch in `Input/Switch/`
@@ -0,0 +1,13 @@
1
+ # Date & Files
2
+
3
+ ## Purpose
4
+
5
+ ThemeDatePicker, FileUpload, FileUploader, Editor (jodit-react).
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/DatePicker/`, `FileUpload/`, `FileUploader/`, `Editor/`
10
+
11
+ ## Key rules
12
+
13
+ - DatePicker themed for brand tokens
@@ -0,0 +1,13 @@
1
+ # Select & Search
2
+
3
+ ## Purpose
4
+
5
+ Select, SearchSelect, SelectSearch, MultiSelect, Dropdown, Search.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Select/`, `SearchSelect/`, `SelectSearch/`, `MultiSelect/`, `Dropdown/`, `Search/`
10
+
11
+ ## Key rules
12
+
13
+ - SearchSelect has performance tests; virtualize for large lists
@@ -0,0 +1,13 @@
1
+ # Toggles
2
+
3
+ ## Purpose
4
+
5
+ Checkbox, RadioButton, Switch, Slider, Toggle/TableToggle.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Checkbox/`, `RadioButton/`, `Switch/`, `Slider/`, `Toggle/`
10
+
11
+ ## Key rules
12
+
13
+ - RadioButtonGroup for grouped radios
@@ -0,0 +1,14 @@
1
+ # Kanban
2
+
3
+ ## Purpose
4
+
5
+ KanbanBoard with drag-and-drop columns and KanbanActions.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/KanbanBoard/`, `KanbanActions/`
10
+ - Tests: `KanbanBoard.test.tsx`, `AccountCard.test.tsx`
11
+
12
+ ## Key rules
13
+
14
+ - Uses @hello-pangea/dnd; MeasuredItem for layout
@@ -0,0 +1,14 @@
1
+ # Layout & Navigation
2
+
3
+ ## Purpose
4
+
5
+ Accordion, Breadcrumbs, NavigationBar, SideBar, Header, Drawer, FilterSidebar.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Accordion/`, `Breadcrumbs/`, `NavigationBar/`, `SideBar/`, `Header/`, `Drawer/`, `FilterSidebar/`
10
+
11
+ ## Key rules
12
+
13
+ - SideBar/Header have sub-`components/` folders
14
+ - Used by crm-frontend, account-frontend sidebars
@@ -0,0 +1,13 @@
1
+ # Overlays
2
+
3
+ ## Purpose
4
+
5
+ Modal, AlertDialog, ToolTip, Toaster (+ `useToaster` hook).
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Modal/`, `AlertDialog/`, `ToolTip/`, `Toaster/`
10
+
11
+ ## Key rules
12
+
13
+ - Modal exports ModalHeader, ModalBody, ModalFooter subcomponents
@@ -0,0 +1,15 @@
1
+ # Playground
2
+
3
+ ## Purpose
4
+
5
+ Vite dev playground — demo pages not published to npm.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Pages/` (40 demo files), `src/App.tsx`, `src/Layout.tsx`
10
+ - `npm start` launches playground
11
+
12
+ ## Key rules
13
+
14
+ - Demo API calls to dev.pixelizetech.com are playground-only
15
+ - Not included in `dist/` publish output
@@ -0,0 +1,15 @@
1
+ # Table
2
+
3
+ ## Purpose
4
+
5
+ Data table with virtualization, filters, pagination, column management.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/Table/`, `Table/Components/`, `Table/TableSettings/`
10
+ - Tests: `TableBody.virtualize.test.tsx`, `ManageColumns.test.tsx`
11
+
12
+ ## Key rules
13
+
14
+ - Core CRM list UI — high change frequency
15
+ - `src/Utils/table.ts` helpers
@@ -0,0 +1,15 @@
1
+ # Theme
2
+
3
+ ## Purpose
4
+
5
+ Seven brand presets (Default, Dark, Emerald, Meadow, Radiant, Rosewood, Skyline, Slate), `useCustomTheme`, `withTheme` HOC, token builders.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Theme/`, `src/withTheme.tsx`
10
+ - Export: `useCustomTheme`, `ThemesList`, `withTheme`
11
+
12
+ ## Key rules
13
+
14
+ - Consumers wrap app with `withTheme`; use theme tokens not hardcoded colors
15
+ - Chart colors from theme via `chartColorsFromTheme`
@@ -0,0 +1,17 @@
1
+ # Types & Exports
2
+
3
+ ## Purpose
4
+
5
+ Public API surface — semver-sensitive.
6
+
7
+ ## Key paths
8
+
9
+ - `src/index.ts` (~50 exports)
10
+ - `src/types/`
11
+ - `src/withTheme.tsx`
12
+
13
+ ## Key rules
14
+
15
+ - Every public component must be exported here
16
+ - Breaking export changes require major version bump
17
+ - Run `npm run build` after export changes
@@ -0,0 +1,13 @@
1
+ # Utils & Hooks
2
+
3
+ ## Purpose
4
+
5
+ Shared utilities and hooks: debounce, table helpers, preferences.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Utils/table.ts`, `src/Hooks/usePreferences.ts`, `src/services/feedback.ts`
10
+
11
+ ## Key rules
12
+
13
+ - `debounce` exported from index.ts
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env bash
2
+ # Local status line only — never sent to the model. See .cursor/TASK-SETUP.md
3
+ set -euo pipefail
4
+
5
+ STATE_FILE="${HOME}/.cursor/pixelize-skill-session-state.json"
6
+
7
+ payload=$(cat)
8
+ dir=$(echo "$payload" | jq -r ".cwd // .workspace.current_dir // empty")
9
+ session_id=$(echo "$payload" | jq -r ".session_id // empty")
10
+ base=$(basename "$dir")
11
+
12
+ show_no_skill_warning=false
13
+ if [[ -n "$session_id" && -f "$STATE_FILE" ]]; then
14
+ if jq -e --arg id "$session_id" '.[$id].chatting_without_skill == true' "$STATE_FILE" >/dev/null 2>&1; then
15
+ show_no_skill_warning=true
16
+ fi
17
+ fi
18
+
19
+ case "$base" in
20
+ account-frontend|account-service)
21
+ line1="/ → task (Account FE + BE)"
22
+ line2=""
23
+ ;;
24
+ crm-frontend|crm-service)
25
+ line1="/ → task (this repo)"
26
+ line2="/ → crm-task (CRM FE + BE)"
27
+ ;;
28
+ social-frontend|social-service)
29
+ line1="/ → task (this repo)"
30
+ line2="/ → social-task (Social FE + BE)"
31
+ ;;
32
+ tickets-frontend)
33
+ line1="/ → task (this repo)"
34
+ line2="/ → tickets-task"
35
+ ;;
36
+ crm-mobile)
37
+ line1="/ → task (this repo)"
38
+ line2="/ → crm-mobile-task"
39
+ ;;
40
+ Micro-Components)
41
+ line1="/ → task (this repo)"
42
+ line2="/ → design-task"
43
+ ;;
44
+ hrms)
45
+ line1="/ → task (this repo)"
46
+ line2="/ → hrms-task (HRMS FE + BE)"
47
+ ;;
48
+ *)
49
+ line1="Open a Pixelize repo root for / → task"
50
+ line2=""
51
+ ;;
52
+ esac
53
+
54
+ if [[ "$show_no_skill_warning" == "true" ]]; then
55
+ echo -e "\033[1;33m\033[7m ⚠ CHATTING WITHOUT TASK SKILL — use / menu ⚠ \033[0m"
56
+ echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
57
+ fi
58
+
59
+ echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
60
+ echo -e "\033[1;33m FEATURE WORK → $line1\033[0m"
61
+ if [ -n "$line2" ]; then
62
+ echo -e "\033[1;33m Full pipeline → $line2\033[0m"
63
+ fi
64
+ echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
File without changes
File without changes
File without changes
package/.cursor/rules ADDED
@@ -0,0 +1,31 @@
1
+ ## Session start
2
+ - Always read CLAUDE.md before starting any task
3
+ - Always read MODULE.md before touching a component family (`.cursor/modules/<domain>/MODULE.md`)
4
+ - Read one similar existing component before implementing
5
+ - Never invent a new pattern if one already exists
6
+
7
+ ## Implementation
8
+ - Components live in `src/Components/<Name>/`
9
+ - Public API via `src/index.ts` only
10
+ - Demo pages in `src/Pages/` for playground — not published
11
+ - Never add CRM/app-specific API calls to library components
12
+ - Use theme tokens from `src/Theme/` — no hardcoded brand colors
13
+ - Add Jest tests for new behavior (`*.test.tsx`)
14
+ - Keep changes minimal — no scope creep
15
+
16
+ ## Output quality
17
+ - Never create placeholder files unless explicitly asked
18
+ - Never use fake data, lorem ipsum, example.com, or demo seeds
19
+ - Never leave TODO comments — implement fully or report blocked
20
+ - Production-ready components with loading/error states where applicable
21
+
22
+ ## Branch rules
23
+ - Always branch from **develop** — never from main
24
+ - Feature work: `feature/<domain>-<short-description>`
25
+ - Bug fixes: `fix/<domain>-<short-description>`
26
+ - Never commit directly to main
27
+
28
+ ## Commit rules
29
+ - Never commit without explicit user confirmation
30
+ - Never run git push under any condition
31
+ - Never add Cursor co-author lines
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: task
3
+ description: >-
4
+ Runs the Pixelize Design Library dev pipeline: task-plan → fe-impl → test-create → test-exec → review gate → commit. Use when the user invokes @task, /task, or requests component library delivery.
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Task Pipeline — Pixelize Design Library
9
+
10
+ Single library repo **Micro-Components** (`pixelize-design-library`). Module docs: `.cursor/modules/<domain>/MODULE.md`.
11
+
12
+ Run phases in order. Do not skip unless user opts out.
13
+
14
+ ```
15
+ - [ ] 1. Task plan (agent: task-plan)
16
+ - [ ] 2. Implementation (agents: fe-impl + be-impl, parallel when both needed)
17
+ - [ ] 3a. Test creation (agent: test-create)
18
+ - [ ] 3b. Test execution (agent: test-exec)
19
+ - [ ] 4. Review gate (orchestrator — show diff, wait for user)
20
+ - [ ] 5. Commit (orchestrator only)
21
+ ```
22
+
23
+ ---
24
+
25
+ ## Before Starting
26
+
27
+ 1. Read CLAUDE.md
28
+ 2. Confirm user goal — feat / fix / refactor / chore
29
+ 3. Tell user which phases apply
30
+
31
+ ---
32
+
33
+ ## Phase 1 — Task Plan
34
+
35
+ Agent: task-plan → `.cursor/agents/task-plan.md`
36
+
37
+ - Read `.cursor/modules/<domain>/MODULE.md` for touched component families
38
+ - Plan saved to `.cursor/plans/current.md`
39
+ - If current.md already exists — read it first, user may be resuming
40
+
41
+ Gate: do not start phase 2 until plan has concrete tasks.
42
+
43
+ ---
44
+
45
+ ## Phase 2 — Implementation
46
+
47
+ | Plan says | Action |
48
+ |-----------|--------|
49
+ | Library only | Invoke fe-impl only |
50
+ | Both | Rare — fe-impl + test agents |
51
+
52
+ Pass `.cursor/plans/current.md` to each agent.
53
+
54
+ If blocked mid-task:
55
+ - Save progress to `.cursor/plans/blocked/<task-name>.md` with exact blocker details
56
+ - Stop pipeline and report to user
57
+
58
+ Gate: all required agents must report Done or Blocked before phase 3.
59
+
60
+ ---
61
+
62
+ ## Phase 3 — Tests
63
+
64
+ 3a: test-create → `.cursor/agents/test-create.md`
65
+ 3b: test-exec → `.cursor/agents/test-exec.md`
66
+
67
+ Jest: `npm test` from repo root.
68
+
69
+ Gate: do not proceed to review if tests failed and not explicitly waived by user.
70
+
71
+ ---
72
+
73
+ ## Phase 4 — Review Gate
74
+
75
+ ```bash
76
+ git status
77
+ git diff
78
+ git diff --staged
79
+ git log -5 --oneline
80
+ ```
81
+
82
+ Run git status/diff. STOP and wait for user approval.
83
+
84
+ ```
85
+ CHANGES READY TO COMMIT
86
+
87
+ Backend:
88
+ - path/to/file — what changed
89
+
90
+ Frontend:
91
+ - path/to/component — what changed
92
+
93
+ Tests:
94
+ - path/to/test — what it covers
95
+
96
+ MODULE.md updates:
97
+ - path/to/MODULE.md
98
+
99
+ Excluded:
100
+ - none
101
+ ```
102
+
103
+ STOP. Wait for: "yes" / "commit" / "looks good" / "go ahead"
104
+
105
+
106
+ ## Phase 5 — Commit
107
+
108
+ ### Commit message format
109
+
110
+ ```
111
+ <type>(<module>): <concise imperative title>
112
+
113
+ Backend:
114
+ - <specific change — file context>
115
+
116
+ Frontend:
117
+ - <specific change — file context>
118
+
119
+ Tests:
120
+ - <what is covered and where>
121
+
122
+ Config:
123
+ - <migrations, registry changes, config updates>
124
+ ```
125
+
126
+ ### Commit steps
127
+
128
+ 1. Scan diff — if .env or secrets found, warn user and ask if they want to include. Commit only on confirmation.
129
+ 2. git add relevant files — state any exclusions clearly
130
+ 3. git commit using HEREDOC — never add Cursor attribution lines
131
+ 4. If Cursor injects co-author lines — amend immediately if unpushed
132
+ 5. Verify: git status + git log -1 --format=full
133
+ 6. Show commit hash to user
134
+ 7. Move `.cursor/plans/current.md` → `.cursor/plans/done/<YYYY-MM-DD>-<title>.md`
135
+
136
+ Never run git push under any condition.
137
+
138
+ ### Commit safety
139
+
140
+ - Never --no-verify unless user explicitly requests
141
+ - Never force-push any branch
142
+ - Nothing staged → skip commit, report clearly
143
+
144
+ ---
145
+
146
+ ## Final Report
147
+
148
+ | Phase | Status | Notes |
149
+ | -------- | -------------- | --------------------------------- |
150
+ | 1 Plan | done / skipped | saved to .cursor/plans/current.md |
151
+ | 2 Impl | fe / be / both | done / blocked |
152
+ | 3 Tests | create / exec | pass / fail / blocked |
153
+ | 4 Review | approved | confirmed by user |
154
+ | 5 Commit | done / skipped | hash if committed |
155
+
156
+ ---
157
+
158
+ ## User Opt-outs
159
+
160
+ | User says | Effect |
161
+ | ------------- | ----------------------------------------- |
162
+ | "plan only" | Stop after phase 1 |
163
+ | "no tests" | Skip phase 3 — confirm with user first |
164
+ | "no commit" | Stop after phase 4 review |
165
+ | "commit only" | Phase 4+5 only — still show diff and wait |
166
+ | "skip review" | Go straight to commit — confirm with user |
167
+
package/CLAUDE.md ADDED
@@ -0,0 +1,122 @@
1
+ # Pixelize Design Library — Agent Guide
2
+
3
+ Rules for AI assistants working in **Micro-Components** (npm: `pixelize-design-library`).
4
+
5
+ ## 1. App name and purpose
6
+
7
+ **Pixelize Design Library** — shared React UI component library and theme system for all Pixelize frontends. Published to npm; local Vite playground demos components in `src/Pages/`.
8
+
9
+ ## 2. Stack
10
+
11
+ | Layer | Technology | Version |
12
+ | ------------- | ----------------------------------- | -------------- |
13
+ | Framework | React + TypeScript | 18.3.1 / 5.9.3 |
14
+ | UI base | Chakra UI + Emotion + Framer Motion | 2.8.2 |
15
+ | Build | `tsc` → `dist/` + CSS copy | — |
16
+ | Dev | Vite playground | 6.2.0 |
17
+ | Styling | Tailwind + global CSS | 3.4.17 |
18
+ | Tests | Jest + Testing Library | 29.7.0 |
19
+ | Package | `pixelize-design-library` | 2.2.x |
20
+
21
+ Not a monorepo — single package, one `package.json`.
22
+
23
+ ## 3. Repo relationship
24
+
25
+ | Repo / package | Role |
26
+ | --------------------------- | ------------------------------------------------- |
27
+ | **Micro-Components** (here) | Source of `pixelize-design-library` npm package |
28
+ | **crm-frontend** | Consumer — `npm run pixelize` to update |
29
+ | **account-frontend** | Consumer |
30
+ | **social-frontend** | Consumer |
31
+ | **tickets-frontend** | Consumer |
32
+ | **crm-mobile** | Consumer (native-base overlap — check mobile) |
33
+ | **pixelize-authenticator** | Companion auth UI package (separate repo) |
34
+
35
+ No backend API in this repo. Demo pages may call dev APIs for playground only.
36
+
37
+ ## 4. Folder structure (2 levels)
38
+
39
+ ```
40
+ Micro-Components/
41
+ ├── package.json, tsconfig.json, vite.config.ts
42
+ ├── src/
43
+ │ ├── index.ts public exports (~50)
44
+ │ ├── withTheme.tsx HOC wrapper
45
+ │ ├── Components/ 57 component families
46
+ │ ├── Theme/ 7 brand presets + useCustomTheme
47
+ │ ├── Pages/ 40 Vite demo/playground pages
48
+ │ ├── Utils/, Hooks/, services/, types/
49
+ │ └── App.tsx, Layout.tsx playground shell
50
+ ├── dist/ publish output (gitignored)
51
+ └── .cursor/modules/ MODULE.md per component domain
52
+ ```
53
+
54
+ ## 5. Dev commands
55
+
56
+ ```bash
57
+ npm start # Vite playground
58
+ npm run build # tsc + copy CSS → dist/
59
+ npm test # Jest
60
+ npm run test:watch
61
+ npm run remove # strip dev artifacts from dist before publish
62
+ npm run package # version patch + build + publish
63
+ ```
64
+
65
+ ## 6. Module / component pattern
66
+
67
+ Follow the **Table** or **KanbanBoard** pattern for complex components:
68
+
69
+ | Step | Path |
70
+ | ---- | ---- |
71
+ | Component | `src/Components/<Name>/` |
72
+ | Subcomponents | `src/Components/<Name>/Components/` or nested folders |
73
+ | Props/types | `<Name>Props.ts` or colocated types |
74
+ | Tests | `*.test.tsx` next to component |
75
+ | Stories | `*.stories.tsx` (where present) |
76
+ | Demo page | `src/Pages/<name>.tsx` |
77
+ | Public export | add to `src/index.ts` |
78
+ | Module doc | `.cursor/modules/<domain>/MODULE.md` |
79
+
80
+ Read `.cursor/modules/<domain>/MODULE.md` before touching a component family.
81
+
82
+ ## 7. Publishing integration
83
+
84
+ - **Exports:** every public component must be exported from `src/index.ts`
85
+ - **Peers:** React 18, Chakra, Emotion — consumers install alongside library
86
+ - **Build:** `npm run build` compiles to `dist/`; never edit `dist/` directly
87
+ - **Version:** patch releases via `npm run package`; CI publishes on merge to `develop`
88
+ - **Breaking changes:** require version bump + consumer update in frontends
89
+
90
+ ## 8. Checklist — adding a new component
91
+
92
+ 1. Read similar component + `.cursor/modules/<domain>/MODULE.md`
93
+ 2. Create `src/Components/<Name>/` with component + props
94
+ 3. Add demo page in `src/Pages/` if needed
95
+ 4. Export from `src/index.ts`
96
+ 5. Add Jest tests (`*.test.tsx`)
97
+ 6. Update `.cursor/modules/<domain>/MODULE.md`
98
+ 7. Verify playground: `npm start`
99
+ 8. After merge to develop: consumers run `npm run pixelize` in their frontend
100
+
101
+ ## 9. Do
102
+
103
+ - Match existing Chakra + design token patterns in `src/Theme/`
104
+ - Keep components framework-agnostic where possible (props in, events out)
105
+ - Add tests for new behavior
106
+ - Use `useCustomTheme` / theme tokens — no hardcoded brand colors
107
+ - Branch from **feature/cursor-ai-setup** or **develop**
108
+
109
+ ## 10. Don't
110
+
111
+ - Don't add app-specific business logic (CRM entities, API calls) to library components
112
+ - Don't break existing exports without semver major bump
113
+ - Don't edit `dist/` — always change `src/` and rebuild
114
+ - Don't skip `index.ts` export for public components
115
+ - Don't introduce a second component pattern without team agreement
116
+ - Don't commit npm tokens or `.env` secrets
117
+
118
+ ## Task pipeline
119
+
120
+ - **Feature work:** invoke via **`/` menu → `task`** (not by typing `/task` in the message).
121
+ - Cross-repo: **`/ → design-task**`.
122
+ - One-time status line + hook details: [.cursor/TASK-SETUP.md](.cursor/TASK-SETUP.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "2.2.199",
3
+ "version": "2.2.201",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",