pixelize-design-library 2.4.1-beta.10 → 2.4.1-beta.11

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 (168) hide show
  1. package/dist/Theme/chakra/common.web.d.ts.map +1 -1
  2. package/dist/Theme/chakra/common.web.js +4 -1
  3. package/dist/Theme/provider/PixelizeThemeProvider.d.ts +12 -3
  4. package/dist/Theme/provider/PixelizeThemeProvider.d.ts.map +1 -1
  5. package/dist/Theme/provider/PixelizeThemeProvider.js +30 -8
  6. package/dist/Theme/tokens/brands/lavender/palette.light.d.ts.map +1 -1
  7. package/dist/Theme/tokens/brands/lavender/palette.light.js +22 -15
  8. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts.map +1 -1
  9. package/dist/Theme/tokens/brands/zinc/palette.dark.js +5 -4
  10. package/dist/Theme/tokens/builders/buildDarkPalette.d.ts.map +1 -1
  11. package/dist/Theme/tokens/builders/buildDarkPalette.js +19 -4
  12. package/package.json +1 -1
  13. package/dist/App.d.ts +0 -4
  14. package/dist/App.js +0 -95
  15. package/dist/Layout.d.ts +0 -3
  16. package/dist/Layout.js +0 -286
  17. package/dist/Pages/TInput.d.ts +0 -3
  18. package/dist/Pages/TInput.d.ts.map +0 -1
  19. package/dist/Pages/TInput.js +0 -20
  20. package/dist/Pages/accordion.d.ts +0 -3
  21. package/dist/Pages/accordion.d.ts.map +0 -1
  22. package/dist/Pages/accordion.js +0 -21
  23. package/dist/Pages/alertdialog.d.ts +0 -3
  24. package/dist/Pages/alertdialog.d.ts.map +0 -1
  25. package/dist/Pages/alertdialog.js +0 -53
  26. package/dist/Pages/button.d.ts +0 -3
  27. package/dist/Pages/button.d.ts.map +0 -1
  28. package/dist/Pages/button.js +0 -32
  29. package/dist/Pages/card.d.ts +0 -3
  30. package/dist/Pages/card.d.ts.map +0 -1
  31. package/dist/Pages/card.js +0 -102
  32. package/dist/Pages/chart.d.ts +0 -4
  33. package/dist/Pages/chart.d.ts.map +0 -1
  34. package/dist/Pages/chart.js +0 -25
  35. package/dist/Pages/checkbox.d.ts +0 -3
  36. package/dist/Pages/checkbox.d.ts.map +0 -1
  37. package/dist/Pages/checkbox.js +0 -11
  38. package/dist/Pages/contactForm.d.ts +0 -3
  39. package/dist/Pages/contactForm.d.ts.map +0 -1
  40. package/dist/Pages/contactForm.js +0 -15
  41. package/dist/Pages/customModulesTable.d.ts +0 -4
  42. package/dist/Pages/customModulesTable.d.ts.map +0 -1
  43. package/dist/Pages/customModulesTable.js +0 -25
  44. package/dist/Pages/datePick.d.ts +0 -3
  45. package/dist/Pages/datePick.d.ts.map +0 -1
  46. package/dist/Pages/datePick.js +0 -49
  47. package/dist/Pages/drawer.d.ts +0 -3
  48. package/dist/Pages/drawer.d.ts.map +0 -1
  49. package/dist/Pages/drawer.js +0 -53
  50. package/dist/Pages/dropdown.d.ts +0 -3
  51. package/dist/Pages/dropdown.d.ts.map +0 -1
  52. package/dist/Pages/dropdown.js +0 -21
  53. package/dist/Pages/editor.d.ts +0 -3
  54. package/dist/Pages/editor.d.ts.map +0 -1
  55. package/dist/Pages/editor.js +0 -13
  56. package/dist/Pages/feedback.d.ts +0 -2
  57. package/dist/Pages/feedback.d.ts.map +0 -1
  58. package/dist/Pages/feedback.js +0 -12
  59. package/dist/Pages/fileUpload.d.ts +0 -2
  60. package/dist/Pages/fileUpload.d.ts.map +0 -1
  61. package/dist/Pages/fileUpload.js +0 -36
  62. package/dist/Pages/input.d.ts +0 -3
  63. package/dist/Pages/input.d.ts.map +0 -1
  64. package/dist/Pages/input.js +0 -48
  65. package/dist/Pages/kanbanboard.d.ts +0 -3
  66. package/dist/Pages/kanbanboard.d.ts.map +0 -1
  67. package/dist/Pages/kanbanboard.js +0 -182
  68. package/dist/Pages/modal.d.ts +0 -3
  69. package/dist/Pages/modal.d.ts.map +0 -1
  70. package/dist/Pages/modal.js +0 -61
  71. package/dist/Pages/multiSelect.d.ts +0 -3
  72. package/dist/Pages/multiSelect.d.ts.map +0 -1
  73. package/dist/Pages/multiSelect.js +0 -22
  74. package/dist/Pages/noteArea.d.ts +0 -3
  75. package/dist/Pages/noteArea.d.ts.map +0 -1
  76. package/dist/Pages/noteArea.js +0 -26
  77. package/dist/Pages/notification.d.ts +0 -3
  78. package/dist/Pages/notification.d.ts.map +0 -1
  79. package/dist/Pages/notification.js +0 -37
  80. package/dist/Pages/numberInput.d.ts +0 -3
  81. package/dist/Pages/numberInput.d.ts.map +0 -1
  82. package/dist/Pages/numberInput.js +0 -16
  83. package/dist/Pages/orgSwitcher.d.ts +0 -4
  84. package/dist/Pages/orgSwitcher.d.ts.map +0 -1
  85. package/dist/Pages/orgSwitcher.js +0 -36
  86. package/dist/Pages/organizationDetails.d.ts +0 -4
  87. package/dist/Pages/organizationDetails.d.ts.map +0 -1
  88. package/dist/Pages/organizationDetails.js +0 -80
  89. package/dist/Pages/photoViewer.d.ts +0 -3
  90. package/dist/Pages/photoViewer.d.ts.map +0 -1
  91. package/dist/Pages/photoViewer.js +0 -12
  92. package/dist/Pages/pinInputs.d.ts +0 -3
  93. package/dist/Pages/pinInputs.d.ts.map +0 -1
  94. package/dist/Pages/pinInputs.js +0 -11
  95. package/dist/Pages/productCaard.d.ts +0 -3
  96. package/dist/Pages/productCaard.d.ts.map +0 -1
  97. package/dist/Pages/productCaard.js +0 -311
  98. package/dist/Pages/productDetailCard.d.ts +0 -3
  99. package/dist/Pages/productDetailCard.d.ts.map +0 -1
  100. package/dist/Pages/productDetailCard.js +0 -78
  101. package/dist/Pages/productFilter.d.ts +0 -3
  102. package/dist/Pages/productFilter.d.ts.map +0 -1
  103. package/dist/Pages/productFilter.js +0 -148
  104. package/dist/Pages/progressbar.d.ts +0 -3
  105. package/dist/Pages/progressbar.d.ts.map +0 -1
  106. package/dist/Pages/progressbar.js +0 -11
  107. package/dist/Pages/radioButton.d.ts +0 -3
  108. package/dist/Pages/radioButton.d.ts.map +0 -1
  109. package/dist/Pages/radioButton.js +0 -18
  110. package/dist/Pages/rolesPermission.d.ts +0 -4
  111. package/dist/Pages/rolesPermission.d.ts.map +0 -1
  112. package/dist/Pages/rolesPermission.js +0 -144
  113. package/dist/Pages/search.d.ts +0 -3
  114. package/dist/Pages/search.d.ts.map +0 -1
  115. package/dist/Pages/search.js +0 -21
  116. package/dist/Pages/searchSelect.d.ts +0 -3
  117. package/dist/Pages/searchSelect.d.ts.map +0 -1
  118. package/dist/Pages/searchSelect.js +0 -97
  119. package/dist/Pages/select.d.ts +0 -3
  120. package/dist/Pages/select.d.ts.map +0 -1
  121. package/dist/Pages/select.js +0 -20
  122. package/dist/Pages/selectSearch.d.ts +0 -3
  123. package/dist/Pages/selectSearch.d.ts.map +0 -1
  124. package/dist/Pages/selectSearch.js +0 -58
  125. package/dist/Pages/signInActivityTable.d.ts +0 -4
  126. package/dist/Pages/signInActivityTable.d.ts.map +0 -1
  127. package/dist/Pages/signInActivityTable.js +0 -17
  128. package/dist/Pages/skeleton.d.ts +0 -3
  129. package/dist/Pages/skeleton.d.ts.map +0 -1
  130. package/dist/Pages/skeleton.js +0 -12
  131. package/dist/Pages/stageProgress.d.ts +0 -4
  132. package/dist/Pages/stageProgress.d.ts.map +0 -1
  133. package/dist/Pages/stageProgress.js +0 -31
  134. package/dist/Pages/switch.d.ts +0 -3
  135. package/dist/Pages/switch.d.ts.map +0 -1
  136. package/dist/Pages/switch.js +0 -17
  137. package/dist/Pages/table.d.ts +0 -3
  138. package/dist/Pages/table.d.ts.map +0 -1
  139. package/dist/Pages/table.js +0 -182
  140. package/dist/Pages/tag.d.ts +0 -3
  141. package/dist/Pages/tag.d.ts.map +0 -1
  142. package/dist/Pages/tag.js +0 -27
  143. package/dist/Pages/textArea.d.ts +0 -3
  144. package/dist/Pages/textArea.d.ts.map +0 -1
  145. package/dist/Pages/textArea.js +0 -14
  146. package/dist/Pages/tier1.d.ts +0 -4
  147. package/dist/Pages/tier1.d.ts.map +0 -1
  148. package/dist/Pages/tier1.js +0 -86
  149. package/dist/Pages/timeline.d.ts +0 -3
  150. package/dist/Pages/timeline.d.ts.map +0 -1
  151. package/dist/Pages/timeline.js +0 -73
  152. package/dist/Pages/tooltip.d.ts +0 -3
  153. package/dist/Pages/tooltip.d.ts.map +0 -1
  154. package/dist/Pages/tooltip.js +0 -11
  155. package/dist/Pages/toster.d.ts +0 -3
  156. package/dist/Pages/toster.d.ts.map +0 -1
  157. package/dist/Pages/toster.js +0 -53
  158. package/dist/Pages/upgradeButton.d.ts +0 -4
  159. package/dist/Pages/upgradeButton.d.ts.map +0 -1
  160. package/dist/Pages/upgradeButton.js +0 -17
  161. package/dist/Pages/userDetails.d.ts +0 -4
  162. package/dist/Pages/userDetails.d.ts.map +0 -1
  163. package/dist/Pages/userDetails.js +0 -79
  164. package/dist/Pages/verifyEmail.d.ts +0 -3
  165. package/dist/Pages/verifyEmail.d.ts.map +0 -1
  166. package/dist/Pages/verifyEmail.js +0 -17
  167. package/dist/bootstrap.d.ts +0 -2
  168. package/dist/bootstrap.js +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"common.web.d.ts","sourceRoot":"","sources":["../../../src/Theme/chakra/common.web.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYX,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"common.web.d.ts","sourceRoot":"","sources":["../../../src/Theme/chakra/common.web.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAeX,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -15,7 +15,10 @@ const common = {
15
15
  radii: primitives_1.radii,
16
16
  zIndices: primitives_1.zIndices,
17
17
  config: {
18
- cssVarPrefix: "ck",
18
+ // Chakra's default, and it must stay that way. A custom prefix silently breaks every
19
+ // `var(--chakra-colors-*)` an app writes in plain CSS: the variable simply does not
20
+ // exist, so the fallback (usually #fff) wins and the surface renders white in dark mode.
21
+ cssVarPrefix: "chakra",
19
22
  },
20
23
  };
21
24
  exports.default = common;
@@ -10,10 +10,19 @@ export type ThemeModeContextValue = {
10
10
  };
11
11
  export type PixelizeThemeProviderProps = {
12
12
  children: React.ReactNode;
13
- /** Initial brand. A persisted brand wins over this. */
13
+ /** Initial brand. A persisted brand wins over this. Re-synced if the prop changes after mount. */
14
14
  brand?: ThemeName;
15
- /** Initial color mode. A persisted mode wins over this. */
15
+ /** Brand counterpart of `onModeChange`, with the same user-intent-only contract. */
16
+ onBrandChange?: (brand: ThemeName) => void;
17
+ /** Initial color mode. A persisted mode wins over this. Re-synced if the prop changes after mount. */
16
18
  defaultMode?: ColorMode;
19
+ /**
20
+ * Fired only when the mode changes through `setMode`/`toggle` — i.e. user intent. It is NOT
21
+ * fired when a changed `defaultMode` prop is synced in, which is what makes it safe to persist
22
+ * from: an app that instead mirrors `mode` in an effect re-persists its own echo, and if that
23
+ * store feeds `defaultMode` back the two ends flip each other forever.
24
+ */
25
+ onModeChange?: (mode: ColorMode) => void;
17
26
  storageKey?: string;
18
27
  disablePersistence?: boolean;
19
28
  /**
@@ -42,5 +51,5 @@ export declare const ThemeModeContext: React.Context<ThemeModeContextValue | und
42
51
  * whatever the active palette says. Read the mode from `useThemeMode()` instead. Existing apps are
43
52
  * unaffected: they are light-only, where that argument was always the one returned anyway.
44
53
  */
45
- export declare const PixelizeThemeProvider: ({ children, brand: brandProp, defaultMode, storageKey, disablePersistence, themeOverrides, }: PixelizeThemeProviderProps) => import("react/jsx-runtime").JSX.Element;
54
+ export declare const PixelizeThemeProvider: ({ children, brand: brandProp, onBrandChange, defaultMode, onModeChange, storageKey, disablePersistence, themeOverrides, }: PixelizeThemeProviderProps) => import("react/jsx-runtime").JSX.Element;
46
55
  //# sourceMappingURL=PixelizeThemeProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PixelizeThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/Theme/provider/PixelizeThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAU/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,iBAAiB,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,uDAAuD;IACvD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AA2BF,eAAO,MAAM,gBAAgB,kDAE5B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAAI,8FAOnC,0BAA0B,4CAwJ5B,CAAC"}
1
+ {"version":3,"file":"PixelizeThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/Theme/provider/PixelizeThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAU/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,iBAAiB,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kGAAkG;IAClG,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,oFAAoF;IACpF,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,sGAAsG;IACtG,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AA2BF,eAAO,MAAM,gBAAgB,kDAE5B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAAI,2HASnC,0BAA0B,4CA8K5B,CAAC"}
@@ -48,7 +48,7 @@ exports.ThemeModeContext = (0, react_1.createContext)(undefined);
48
48
  * whatever the active palette says. Read the mode from `useThemeMode()` instead. Existing apps are
49
49
  * unaffected: they are light-only, where that argument was always the one returned anyway.
50
50
  */
51
- const PixelizeThemeProvider = ({ children, brand: brandProp = DEFAULT_BRAND, defaultMode = DEFAULT_MODE, storageKey = DEFAULT_STORAGE_KEY, disablePersistence = false, themeOverrides, }) => {
51
+ const PixelizeThemeProvider = ({ children, brand: brandProp = DEFAULT_BRAND, onBrandChange, defaultMode = DEFAULT_MODE, onModeChange, storageKey = DEFAULT_STORAGE_KEY, disablePersistence = false, themeOverrides, }) => {
52
52
  const [mode, setModeState] = (0, react_1.useState)(defaultMode);
53
53
  const [brand, setBrandState] = (0, react_1.useState)(brandProp);
54
54
  // Deterministic on the server and on the first client render — the real OS value lands in
@@ -70,19 +70,27 @@ const PixelizeThemeProvider = ({ children, brand: brandProp = DEFAULT_BRAND, def
70
70
  // `brandProp` only seeds initial state above, so a consumer that re-renders with a new
71
71
  // `brand` prop after mount (e.g. persisting the pick through its own store, like tickets'
72
72
  // Settings page dispatching Redux instead of calling `setBrand`) would otherwise never see
73
- // it applied the same gap `colorMode` has, which callers work around with an effect
74
- // mirroring `mode`. Sync it here instead so every consumer gets it for free.
73
+ // it applied. Sync it here instead so every consumer gets it for free.
75
74
  const isFirstBrandPropRun = (0, react_1.useRef)(true);
76
75
  (0, react_1.useEffect)(() => {
77
76
  if (isFirstBrandPropRun.current) {
78
77
  isFirstBrandPropRun.current = false;
79
78
  return;
80
79
  }
81
- setBrandState(brandProp);
82
80
  // Only re-sync when the prop itself changes — not on every local `setBrand` call (that
83
81
  // would fight the user's own in-session brand picking, e.g. via ThemeSwitcher).
84
- // eslint-disable-next-line react-hooks/exhaustive-deps
82
+ setBrandState(brandProp);
85
83
  }, [brandProp]);
84
+ // Same prop-sync for the mode, so an app owning it in its own store no longer needs the
85
+ // `mode` -> store mirror effect that deadlocks against this one.
86
+ const isFirstModePropRun = (0, react_1.useRef)(true);
87
+ (0, react_1.useEffect)(() => {
88
+ if (isFirstModePropRun.current) {
89
+ isFirstModePropRun.current = false;
90
+ return;
91
+ }
92
+ setModeState(defaultMode);
93
+ }, [defaultMode]);
86
94
  // Skipping the mount run keeps the defaults from being written over a stored value before
87
95
  // the rehydrate effect above has applied it.
88
96
  const isFirstPersistRun = (0, react_1.useRef)(true);
@@ -107,11 +115,25 @@ const PixelizeThemeProvider = ({ children, brand: brandProp = DEFAULT_BRAND, def
107
115
  (0, react_1.useEffect)(() => {
108
116
  document.documentElement.style.colorScheme = resolvedMode;
109
117
  }, [resolvedMode]);
110
- const setMode = (0, react_1.useCallback)((next) => setModeState(next), []);
111
- const setBrand = (0, react_1.useCallback)((next) => setBrandState(next), []);
118
+ // Held in refs so a caller's inline arrow never re-creates `setMode`/`setBrand`, which would
119
+ // invalidate the context value on every render of the consuming app.
120
+ const onModeChangeRef = (0, react_1.useRef)(onModeChange);
121
+ onModeChangeRef.current = onModeChange;
122
+ const onBrandChangeRef = (0, react_1.useRef)(onBrandChange);
123
+ onBrandChangeRef.current = onBrandChange;
124
+ const setMode = (0, react_1.useCallback)((next) => {
125
+ var _a;
126
+ setModeState(next);
127
+ (_a = onModeChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onModeChangeRef, next);
128
+ }, []);
129
+ const setBrand = (0, react_1.useCallback)((next) => {
130
+ var _a;
131
+ setBrandState(next);
132
+ (_a = onBrandChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onBrandChangeRef, next);
133
+ }, []);
112
134
  // From "system", flip to the opposite of what the OS currently gives, so a click always
113
135
  // visibly changes the UI.
114
- const toggle = (0, react_1.useCallback)(() => setModeState(resolvedMode === "dark" ? "light" : "dark"), [resolvedMode]);
136
+ const toggle = (0, react_1.useCallback)(() => setMode(resolvedMode === "dark" ? "light" : "dark"), [resolvedMode, setMode]);
115
137
  const value = (0, react_1.useMemo)(() => ({ mode, resolvedMode, setMode, toggle, brand, setBrand }), [mode, resolvedMode, setMode, toggle, brand, setBrand]);
116
138
  const resolvedTheme = (0, react_1.useMemo)(() => {
117
139
  const base = index_1.brandThemes[brand][resolvedMode];
@@ -1 +1 @@
1
- {"version":3,"file":"palette.light.d.ts","sourceRoot":"","sources":["../../../../../src/Theme/tokens/brands/lavender/palette.light.ts"],"names":[],"mappings":"AA4SA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"palette.light.d.ts","sourceRoot":"","sources":["../../../../../src/Theme/tokens/brands/lavender/palette.light.ts"],"names":[],"mappings":"AAmTA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -150,7 +150,8 @@ const backgroundColor = {
150
150
  secondary: "#f2edf8",
151
151
  tertiary: "#ebe3f4",
152
152
  quaternary: "#e2d8ef",
153
- light: "#fdfcfe",
153
+ // A card must read as lifted off the tinted canvas; the old #fdfcfe was 2% away from it.
154
+ light: "#ffffff",
154
155
  medium: "#e8e0f2",
155
156
  accent: "#e0d5ed",
156
157
  subtle: "#f5f1fa",
@@ -227,25 +228,31 @@ const sidebar = {
227
228
  },
228
229
  };
229
230
  const boxborder = {
230
- 50: "#fefefe",
231
- 100: "#f5f3f9",
232
- 200: "#ece8f3",
233
- 300: "#e3deed",
234
- 400: "#dad4e8",
235
- 500: "#d1c9e2",
236
- 600: "#bdb5cf",
231
+ 50: "#f5f3f9",
232
+ 100: "#ece8f3",
233
+ 200: "#dad4e8",
234
+ 300: "#d1c9e2",
235
+ 400: "#c7bcda",
236
+ 500: "#bcb0d1",
237
+ 600: "#a79ac3",
237
238
  700: "#918ba1",
238
239
  800: "#6d6879",
239
240
  900: "#52505b",
240
241
  };
242
+ /**
243
+ * The low rungs sat two steps too pale to draw anything: `200` — the default hairline for
244
+ * cards, dividers and inputs — was L94 against a L98 canvas, so a card had no visible edge.
245
+ * It now lands at L88, contrast 1.22 against a white card, matching Chakra's gray.200 hairline.
246
+ * Rungs 700+ are unchanged; they were never the problem.
247
+ */
241
248
  const border = {
242
- 50: "#fefefe",
243
- 100: "#f6f4f9",
244
- 200: "#ede9f4",
245
- 300: "#e5dfef",
246
- 400: "#dcd5e9",
247
- 500: "#d3cbe3",
248
- 600: "#beb7d0",
249
+ 50: "#f6f4f9",
250
+ 100: "#ede9f4",
251
+ 200: "#dcd5e9",
252
+ 300: "#d3cbe3",
253
+ 400: "#c9bedb",
254
+ 500: "#beb2d2",
255
+ 600: "#a99cc4",
249
256
  700: "#938da3",
250
257
  800: "#6f6a7c",
251
258
  900: "#54505e",
@@ -1 +1 @@
1
- {"version":3,"file":"palette.dark.d.ts","sourceRoot":"","sources":["../../../../../src/Theme/tokens/brands/zinc/palette.dark.ts"],"names":[],"mappings":"AAuLA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"palette.dark.d.ts","sourceRoot":"","sources":["../../../../../src/Theme/tokens/brands/zinc/palette.dark.ts"],"names":[],"mappings":"AAwLA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -93,15 +93,16 @@ const header = {
93
93
  900: "#ffffff",
94
94
  };
95
95
  // muted-foreground = gray[500] = #a1a1aa (5.81:1 on the #27272a muted surface); it also serves
96
- // as the focus ring on the #09090b canvas (7.76:1). gray[400] = the interactive border/icon rung:
97
- // #6b6b75 (matching border[500]) measured 2.95:1 on the LIGHTEST named surface, just under the 3:1
98
- // non-text bar it is used at, so it is one step lighter than border[500] here.
96
+ // as the focus ring on the #09090b canvas (7.76:1). gray[400] = the interactive border/icon rung,
97
+ // and is the one value here NOT ported verbatim: it is pinned to whatever clears the 3:1 non-text
98
+ // bar on the LIGHTEST named surface, which is derived rather than ported. shadcn's own #71717a
99
+ // measures 2.81 there, so this sits two steps lighter (3.19).
99
100
  const gray = {
100
101
  50: "#18181b",
101
102
  100: "#27272a",
102
103
  200: "#3f3f46",
103
104
  300: "#52525b",
104
- 400: "#71717a",
105
+ 400: "#7a7a83",
105
106
  500: "#a1a1aa",
106
107
  600: "#b4b4bb",
107
108
  700: "#d4d4d8",
@@ -1 +1 @@
1
- {"version":3,"file":"buildDarkPalette.d.ts","sourceRoot":"","sources":["../../../../src/Theme/tokens/builders/buildDarkPalette.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA2CrE,uEAAuE;AACvE,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,KAAG,UAW/C,CAAC;AAEH,sFAAsF;AACtF,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,KAAG,UAW/C,CAAC;AAOH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,EAAE,OAAO,MAAM,KAAG,MAWvE,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,SAAS,GAAI,OAAO,UAAU,EAAE,OAAO,MAAM,KAAG,UAM5D,CAAC;AAqIF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAsElE;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"buildDarkPalette.d.ts","sourceRoot":"","sources":["../../../../src/Theme/tokens/builders/buildDarkPalette.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA2CrE,uEAAuE;AACvE,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,KAAG,UAW/C,CAAC;AAEH,sFAAsF;AACtF,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,KAAG,UAW/C,CAAC;AAOH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,EAAE,OAAO,MAAM,KAAG,MAWvE,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,SAAS,GAAI,OAAO,UAAU,EAAE,OAAO,MAAM,KAAG,UAM5D,CAAC;AAkJF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAwElE;AAED,eAAe,gBAAgB,CAAC"}
@@ -169,8 +169,11 @@ const TEXT_TARGETS = {
169
169
  const PLACEHOLDER_TARGETS = {
170
170
  50: 25, 100: 30, 200: 35, 300: 42, 400: 48, 500: 54, 600: 60, 700: 66, 800: 72, 900: 80,
171
171
  };
172
+ // Rung 200 is the default hairline. At L18 it sat 5 points off a card at L13 — below the
173
+ // perceptible step, so dark cards read as edgeless. L22 draws the same 1.2x edge the light
174
+ // ramp does, which is what makes a card look like a card in either mode.
172
175
  const BORDER_TARGETS = {
173
- 50: 12, 100: 15, 200: 18, 300: 21, 400: 24, 500: 27, 600: 33, 700: 42, 800: 52, 900: 62,
176
+ 50: 14, 100: 18, 200: 22, 300: 24, 400: 26, 500: 27, 600: 33, 700: 42, 800: 52, 900: 62,
174
177
  };
175
178
  const DISABLED_TARGETS = {
176
179
  50: 14, 100: 18, 200: 22, 300: 26, 400: 30, 500: 34, 600: 42, 700: 52, 800: 62, 900: 72,
@@ -215,12 +218,22 @@ const NAMED_SURFACE_L = {
215
218
  accent: 17,
216
219
  muted: 18,
217
220
  };
218
- const SURFACE_SAT = 14;
221
+ /**
222
+ * Surfaces are hue-NEUTRAL in dark: every brand shares one canvas, so switching theme recolors the
223
+ * accents and nothing else. Tinting them instead (this was 14) made a full-screen wash — Meadow's
224
+ * whole app read green — which reads as a different product per brand rather than a different
225
+ * accent. Light mode keeps its tinted canvas; there the tint is a hint on white, not the whole
226
+ * screen. Brand identity in dark lives in `primary`/semantic/text, which stay hued.
227
+ */
228
+ const SURFACE_SAT = 0;
219
229
  const TEXT_SAT = 12;
220
230
  const PLACEHOLDER_SAT = 10;
221
231
  const BORDER_SAT = 12;
222
232
  const DISABLED_SAT = 8;
223
- const GRAY_SAT = 6;
233
+ // Neutral for the same reason as SURFACE_SAT — gray's low rungs ARE surfaces, and a tinted ramp
234
+ // on a neutral canvas reads as a mismatch. It also buys back the contrast the neutral canvas
235
+ // cost: `gray[400]` on `muted` was 2.99 on lavender/zinc at sat 6, and is 3.16 at 0.
236
+ const GRAY_SAT = 0;
224
237
  function buildDarkPalette(light) {
225
238
  const hueSource = light.primary[500];
226
239
  const { h } = (0, color_1.hexToHsl)(hueSource);
@@ -265,7 +278,9 @@ function buildDarkPalette(light) {
265
278
  placeholder: fromTargets(hueSource, PLACEHOLDER_TARGETS, PLACEHOLDER_SAT),
266
279
  border: fromTargets(hueSource, BORDER_TARGETS, BORDER_SAT),
267
280
  boxborder: fromTargets(hueSource, BORDER_TARGETS, BORDER_SAT),
268
- table: { hover: fromTargets(hueSource, TABLE_HOVER_TARGETS, BORDER_SAT) },
281
+ // Neutral: a row hover is a surface fill, and across a full table its tint is exactly the
282
+ // brand wash the canvas was changed to avoid.
283
+ table: { hover: fromTargets(hueSource, TABLE_HOVER_TARGETS, SURFACE_SAT) },
269
284
  disabled: fromTargets(hueSource, DISABLED_TARGETS, DISABLED_SAT),
270
285
  // Derived from the LIFTED accent against the dark canvas: the lift stops at the white-label
271
286
  // floor (~4.55), which leaves primary[500] short of AA as text, so text needs its own rung.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "2.4.1-beta.10",
3
+ "version": "2.4.1-beta.11",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
package/dist/App.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import "./global.css";
2
- declare function App(): import("react/jsx-runtime").JSX.Element;
3
- export default App;
4
- //# sourceMappingURL=App.d.ts.map
package/dist/App.js DELETED
@@ -1,95 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const jsx_runtime_1 = require("react/jsx-runtime");
7
- const react_1 = require("react");
8
- const react_2 = require("@chakra-ui/react");
9
- const lucide_react_1 = require("lucide-react");
10
- const Loading_1 = __importDefault(require("./Components/Loading/Loading"));
11
- const SideBar_1 = __importDefault(require("./Components/SideBar/SideBar"));
12
- const NavigationBar_1 = __importDefault(require("./Components/NavigationBar/NavigationBar"));
13
- const useSidebarPrefs_1 = require("./Hooks/useSidebarPrefs");
14
- const provider_1 = require("./Theme/provider");
15
- const useCustomTheme_1 = require("./Theme/useCustomTheme");
16
- const Layout_1 = __importDefault(require("./Layout"));
17
- require("./global.css");
18
- // --- Static demo data (module scope so it isn't re-created each render) ------
19
- const menu = [
20
- {
21
- id: 1, title: "Dashboard", icon: lucide_react_1.House, url: "", group: "Main",
22
- secondaryItems: [
23
- { id: 11, title: "SubMenu", url: "submenu1", icon: lucide_react_1.Cuboid, badge: { count: 10, color: "red", radius: "5px", variant: "outline" } },
24
- { id: 12, title: "SubMenu2", url: "submenu2", icon: lucide_react_1.Cuboid },
25
- ],
26
- },
27
- {
28
- id: 2, title: "AlertDialog", icon: lucide_react_1.Calendar, url: "alertdialog",
29
- badge: { count: 10, color: "red", radius: "5px", variant: "outline" },
30
- },
31
- {
32
- id: 3, title: "SideMenu", icon: lucide_react_1.Cuboid, url: "sidemenu",
33
- subMenu: [
34
- { id: 31, title: "SubMenu1", url: "submenu1", icon: lucide_react_1.FileText },
35
- { id: 32, title: "SubMenu2", url: "submenu2", icon: lucide_react_1.Link2, badge: { count: 10, color: "red", radius: "5px", variant: "subtle" } },
36
- ],
37
- },
38
- {
39
- id: 4, title: "SideMenu", icon: lucide_react_1.Cuboid, url: "sidemenu",
40
- subMenu: [
41
- { id: 33, title: "SubMenu1", url: "submenu1" },
42
- { id: 34, title: "SubMenu2", url: "submenu2" },
43
- ],
44
- },
45
- {
46
- id: 8, title: "SideMenu", icon: lucide_react_1.Cuboid, url: "sidemenu", group: "Tools",
47
- subMenu: [
48
- { id: 41, title: "SubMenu1", url: "submenu1", icon: lucide_react_1.Cuboid },
49
- { id: 42, title: "SubMenu2", url: "submenu2", icon: lucide_react_1.Cuboid },
50
- ],
51
- },
52
- ];
53
- const navmenus = [
54
- { title: "Account Settings", url: "myaccount", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Cuboid, {}) },
55
- { title: "Reset password", url: "resetpassword" },
56
- { title: "Billing", url: "billing" },
57
- { title: "Notifications", url: "notifications" },
58
- ];
59
- function useWindowSize() {
60
- const [windowSize, setWindowSize] = (0, react_1.useState)({ width: 0, height: 0 });
61
- (0, react_1.useEffect)(() => {
62
- const handleResize = () => setWindowSize({ width: window.innerWidth, height: window.innerHeight });
63
- window.addEventListener("resize", handleResize);
64
- handleResize();
65
- return () => window.removeEventListener("resize", handleResize);
66
- }, []);
67
- return windowSize;
68
- }
69
- function App() {
70
- const { height } = useWindowSize();
71
- const theme = (0, useCustomTheme_1.useCustomTheme)();
72
- // Persisted layout choices — restored to exactly the same state on reload/new
73
- // session via localStorage. `collapsed` = mini-rail; `mobileNav` = navbar mode
74
- // forced on a big screen; `mobileOpen` = whether the overlay drawer is open.
75
- // Composed handlers (onToggleMobileNav / closeMobile) come straight from the hook,
76
- // so this app does not re-implement the navbar-mode/drawer behavior.
77
- const { collapsed: toggle, toggleCollapsed, mobileNav, mobileOpen, toggleMobileOpen, onToggleMobileNav, closeMobile, } = (0, useSidebarPrefs_1.useSidebarPrefs)();
78
- const [activeMenu, setActiveMenu] = (0, react_1.useState)(2);
79
- const [activeSecondaryItem, setActiveSecondaryItem] = (0, react_1.useState)(null);
80
- const handleMenuClick = (menu) => {
81
- setActiveMenu(menu === null || menu === void 0 ? void 0 : menu.id);
82
- setActiveSecondaryItem(null);
83
- };
84
- const handleSecondaryNavClick = (item) => {
85
- var _a, _b;
86
- setActiveSecondaryItem((_b = (_a = item === null || item === void 0 ? void 0 : item.id) !== null && _a !== void 0 ? _a : item === null || item === void 0 ? void 0 : item.title) !== null && _b !== void 0 ? _b : null);
87
- };
88
- const handleNavOnClick = () => { };
89
- const handleLogout = () => { };
90
- return ((0, jsx_runtime_1.jsx)("div", { className: "App", children: (0, jsx_runtime_1.jsxs)(react_2.Box, { minH: "100vh", bg: "gray.100", overflow: "hidden", children: [(0, jsx_runtime_1.jsx)(Loading_1.default, { text: "PIXELIZE CRM", isLoading: false, onlytext: true }), (0, jsx_runtime_1.jsxs)(react_2.Flex, { children: [(0, jsx_runtime_1.jsx)(react_2.Box, { children: (0, jsx_runtime_1.jsx)(SideBar_1.default, { menus: menu, activeMenu: activeMenu, handleMenuClick: handleMenuClick, handleSecondaryNavClick: handleSecondaryNavClick, toggle: toggle, changeToggle: toggleCollapsed, companyName: "PIXELIZE Technologies Pvt., Ltd.", selectedSecondaryItem: activeSecondaryItem, mobileOpen: mobileOpen, onMobileClose: closeMobile, mobileNav: mobileNav, onToggleMobileNav: onToggleMobileNav }) }), (0, jsx_runtime_1.jsxs)(react_2.Box, { flex: "1", minW: 0, overflow: "hidden", children: [(0, jsx_runtime_1.jsx)(NavigationBar_1.default, { userAvathar: "https://bit.ly/dan-abramo", userName: "PIXELIZE", userRole: "Admin", navMenu: navmenus, handleNavOnClick: handleNavOnClick, handleLogout: handleLogout, logoutText: "Logout", sideBarToggole: mobileOpen, onSideBarToggole: toggleMobileOpen, forceSideBarToggle: mobileNav, navigationBarText: {
91
- text: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Dashboard" }),
92
- onIconClick: () => { },
93
- }, moreIcon: (0, jsx_runtime_1.jsx)(lucide_react_1.Calendar, {}) }, "navbar"), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)(react_2.Flex, { "data-testid": "theme-controls", px: "50px", pb: 3, gap: 4, align: "center", justify: "flex-end", children: [(0, jsx_runtime_1.jsx)(provider_1.ThemeSwitcher, { variant: "segmented", showBrandPicker: true }), (0, jsx_runtime_1.jsx)(provider_1.ThemeSwitcher, { variant: "icon" })] }), (0, jsx_runtime_1.jsx)(react_2.Box, { p: "50px", pt: 0, height: height - 200, overflowY: "scroll", overflowX: "hidden", width: "100%", "data-testid": "playground-surface", bg: theme.colors.backgroundColor.main, children: (0, jsx_runtime_1.jsx)(Layout_1.default, {}) })] })] })] }) }));
94
- }
95
- exports.default = App;
package/dist/Layout.d.ts DELETED
@@ -1,3 +0,0 @@
1
- declare const Layout: () => import("react/jsx-runtime").JSX.Element;
2
- export default Layout;
3
- //# sourceMappingURL=Layout.d.ts.map