@morphika/andami 0.1.8 → 0.1.10

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 (49) hide show
  1. package/README.md +3 -0
  2. package/components/admin/nav-builder/NavBuilder.tsx +90 -14
  3. package/components/admin/nav-builder/NavGeneralSettings.tsx +521 -271
  4. package/components/admin/nav-builder/NavItemSettings.tsx +331 -312
  5. package/components/admin/nav-builder/NavMobileSettings.tsx +159 -140
  6. package/components/admin/nav-builder/NavSettingsFields.tsx +287 -21
  7. package/components/admin/nav-builder/NavSettingsPanel.tsx +137 -127
  8. package/components/blocks/TextBlockRenderer.tsx +1 -1
  9. package/components/builder/SettingsPanel.tsx +29 -543
  10. package/components/builder/editors/ButtonBlockEditor.tsx +8 -3
  11. package/components/builder/editors/CoverBlockEditor.tsx +14 -6
  12. package/components/builder/editors/ImageBlockEditor.tsx +8 -3
  13. package/components/builder/editors/ImageGridBlockEditor.tsx +8 -3
  14. package/components/builder/editors/ProjectGridEditor.tsx +7 -46
  15. package/components/builder/editors/SpacerBlockEditor.tsx +4 -1
  16. package/components/builder/editors/StaggerSettings.tsx +2 -1
  17. package/components/builder/editors/TextBlockEditor.tsx +8 -3
  18. package/components/builder/editors/VideoBlockEditor.tsx +10 -4
  19. package/components/builder/editors/section-icons.tsx +492 -0
  20. package/components/builder/editors/shared.tsx +23 -4
  21. package/components/builder/live-preview/GhostCard.tsx +84 -0
  22. package/components/builder/live-preview/LiveProjectGridPreview.tsx +294 -1010
  23. package/components/builder/live-preview/LiveTextEditor.tsx +1 -1
  24. package/components/builder/live-preview/ProjectCardWrapper.tsx +291 -0
  25. package/components/builder/live-preview/drag-utils.tsx +89 -0
  26. package/components/builder/live-preview/useDragReorder.ts +370 -0
  27. package/components/builder/settings-panel/AnimationTab.tsx +152 -0
  28. package/components/builder/settings-panel/BlockLayoutTab.tsx +13 -58
  29. package/components/builder/settings-panel/CardEntranceSection.tsx +114 -0
  30. package/components/builder/settings-panel/ColumnV2AnimationTab.tsx +32 -0
  31. package/components/builder/settings-panel/ColumnV2Settings.tsx +4 -1
  32. package/components/builder/settings-panel/CustomSectionSettings.tsx +150 -0
  33. package/components/builder/settings-panel/LayoutTab.tsx +11 -47
  34. package/components/builder/settings-panel/PageSettings.tsx +10 -4
  35. package/components/builder/settings-panel/ParallaxGroupSettings.tsx +6 -2
  36. package/components/builder/settings-panel/ParallaxSlideSettings.tsx +8 -3
  37. package/components/builder/settings-panel/SectionV2LayoutTab.tsx +11 -47
  38. package/components/builder/settings-panel/SectionV2Settings.tsx +6 -27
  39. package/components/builder/settings-panel/index.ts +6 -0
  40. package/components/builder/settings-panel/useSettingsPanelSelection.ts +184 -0
  41. package/components/ui/Navbar.tsx +151 -30
  42. package/lib/builder/serializer/migrations.ts +107 -0
  43. package/lib/builder/serializer/normalizers.ts +278 -0
  44. package/lib/builder/serializer/serializers.ts +393 -0
  45. package/lib/builder/serializer/shared.ts +102 -0
  46. package/lib/builder/serializer.ts +11 -846
  47. package/lib/sanity/types.ts +22 -0
  48. package/package.json +13 -10
  49. package/styles/base.css +7 -3
@@ -704,6 +704,28 @@ export interface NavDesign {
704
704
  entrance_delay?: number; // ms, default 0
705
705
  entrance_stagger?: boolean; // stagger items, default false
706
706
  entrance_stagger_delay?: number; // ms between items, default 80
707
+
708
+ /** Per-viewport overrides for responsive nav settings.
709
+ * Only typography + spacing fields are overridable.
710
+ * Missing fields = inherit from desktop. */
711
+ responsive?: {
712
+ tablet?: NavDesignResponsiveOverride;
713
+ phone?: NavDesignResponsiveOverride;
714
+ };
715
+ }
716
+
717
+ /** Subset of NavDesign fields that can be overridden per viewport */
718
+ export interface NavDesignResponsiveOverride {
719
+ font_size?: number;
720
+ font_weight?: string;
721
+ text_align?: "left" | "center" | "right";
722
+ vertical_align?: "top" | "middle" | "bottom";
723
+ text_transform?: "none" | "uppercase" | "lowercase" | "capitalize";
724
+ padding_h?: number;
725
+ padding_v?: number;
726
+ margin_h?: number;
727
+ margin_v?: number;
728
+ items_gap?: number;
707
729
  }
708
730
 
709
731
  // ============================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphika/andami",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Visual Page Builder — core library. A reusable website builder with visual editing, CMS integration, and asset management.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -17,6 +17,9 @@
17
17
  "page-builder",
18
18
  "morphika"
19
19
  ],
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
20
23
  "files": [
21
24
  "admin/",
22
25
  "app/",
@@ -37,7 +40,6 @@
37
40
  ],
38
41
  "scripts": {
39
42
  "prepack": "node scripts/prepack.mjs",
40
- "postpack": "node scripts/postpack.mjs",
41
43
  "test": "vitest",
42
44
  "test:run": "vitest run",
43
45
  "lint": "eslint",
@@ -184,26 +186,27 @@
184
186
  "@dnd-kit/sortable": "^10.0.0",
185
187
  "@dnd-kit/utilities": "^3.2.2",
186
188
  "next-sanity": "^12.1.5",
189
+ "ogl": "^1.0.8",
187
190
  "sanity": "^5.17.1",
188
- "zustand": "^5.0.12",
189
- "ogl": "^1.0.8"
191
+ "zustand": "^5.0.12"
190
192
  },
191
193
  "devDependencies": {
192
194
  "@tailwindcss/postcss": "^4",
195
+ "@testing-library/dom": "^10.4.1",
196
+ "@testing-library/jest-dom": "^6.6.3",
197
+ "@testing-library/react": "^16.3.0",
198
+ "@testing-library/user-event": "^14.6.1",
193
199
  "@types/node": "^20",
194
200
  "@types/react": "^19",
195
201
  "@types/react-dom": "^19",
196
202
  "eslint": "^9",
197
203
  "eslint-config-next": "16.2.1",
204
+ "jsdom": "^26.1.0",
198
205
  "next": "16.2.1",
199
206
  "react": "19.2.4",
200
207
  "react-dom": "19.2.4",
201
208
  "tailwindcss": "^4",
202
209
  "typescript": "^5",
203
- "vitest": "^4.1.2",
204
- "@testing-library/react": "^16.3.0",
205
- "@testing-library/jest-dom": "^6.6.3",
206
- "@testing-library/user-event": "^14.6.1",
207
- "jsdom": "^26.1.0"
210
+ "vitest": "^4.1.2"
208
211
  }
209
- }
212
+ }
package/styles/base.css CHANGED
@@ -57,15 +57,19 @@ body {
57
57
  overflow-x: clip;
58
58
  }
59
59
 
60
- /* Prevent text overflow in grid columns on narrow viewports */
60
+ /* Prevent text overflow in grid columns on narrow viewports.
61
+ * overflow-wrap: anywhere — only breaks mid-word when the ENTIRE word
62
+ * cannot fit on a fresh line. Unlike word-break: break-word, this keeps
63
+ * whole words together and wraps at natural word boundaries first.
64
+ * Prevents ugly splits like "Collecti" + "on" on narrow mobile viewports. */
61
65
  [data-site] p,
62
66
  [data-site] h1,
63
67
  [data-site] h2,
64
68
  [data-site] h3,
65
69
  [data-site] h4,
66
70
  [data-site] span {
67
- overflow-wrap: break-word;
68
- word-break: break-word;
71
+ overflow-wrap: anywhere;
72
+ word-break: normal;
69
73
  }
70
74
 
71
75
  [data-custom-cursor] {