matrix-design-system 1.1.1 → 2.0.0

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.
@@ -57,233 +57,95 @@ const panelVariants = {
57
57
  }
58
58
  }
59
59
  };
60
+ const noPinnedPaths = [];
61
+ const isDropdown = (entry) => "groups" in entry;
60
62
  const Menu = (t0) => {
61
- const $ = c(65);
62
- const { navHrefs, onPaletteTrigger, tracking, linkComponent, currentPath } = t0;
63
- let t1;
63
+ const $ = c(36);
64
+ const { entries, pinnedOnPaths: t1, onPaletteTrigger, linkComponent, currentPath } = t0;
65
+ const pinnedOnPaths = t1 === void 0 ? noPinnedPaths : t1;
66
+ let t2;
64
67
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
65
- t1 = { noScale: true };
66
- $[0] = t1;
67
- } else t1 = $[0];
68
- const { glassmorphismClass } = useGlassmorphism(t1);
69
- const { state, effects } = useMenuStore(currentPath, navHrefs.chat, onPaletteTrigger, tracking);
70
- const { pathname, shouldHideMenu, shouldOpenMenu, modifierKey } = state;
71
- const { openMenu, closeMenu, handlePaletteTrigger, onClickHome, onClickBlog, onClickBlogAuthors, onClickBlogTags, onClickBlogArchive, onClickBlogStats, onClickDsaRoadmap, onClickDsaExercises, onClickChat, onClickMcp, onClickMatrixRain, onClickEasterEggHunt, onClickAboutMe, onClickArt, onClickVideogames, onClickContact } = effects;
68
+ t2 = { noScale: true };
69
+ $[0] = t2;
70
+ } else t2 = $[0];
71
+ const { glassmorphismClass } = useGlassmorphism(t2);
72
+ const { state, effects } = useMenuStore(currentPath, pinnedOnPaths, onPaletteTrigger);
73
+ const { shouldHideMenu, shouldOpenMenu, modifierKey } = state;
74
+ const { openMenu, closeMenu, handlePaletteTrigger, handleLinkClick, isSelected } = effects;
72
75
  const baseClassName = _temp;
73
76
  const dropdownClassName = _temp2;
74
- let t2;
75
- if ($[1] !== linkComponent || $[2] !== navHrefs.aboutMe || $[3] !== navHrefs.art || $[4] !== navHrefs.blog || $[5] !== navHrefs.blogArchive || $[6] !== navHrefs.blogAuthor || $[7] !== navHrefs.blogAuthors || $[8] !== navHrefs.blogStats || $[9] !== navHrefs.blogTags || $[10] !== navHrefs.chat || $[11] !== navHrefs.contact || $[12] !== navHrefs.dsaExercises || $[13] !== navHrefs.dsaRoadmap || $[14] !== navHrefs.easterEggHunt || $[15] !== navHrefs.mcp || $[16] !== navHrefs.videogames || $[17] !== onClickAboutMe || $[18] !== onClickArt || $[19] !== onClickBlog || $[20] !== onClickBlogArchive || $[21] !== onClickBlogAuthors || $[22] !== onClickBlogStats || $[23] !== onClickBlogTags || $[24] !== onClickChat || $[25] !== onClickContact || $[26] !== onClickDsaExercises || $[27] !== onClickDsaRoadmap || $[28] !== onClickEasterEggHunt || $[29] !== onClickHome || $[30] !== onClickMatrixRain || $[31] !== onClickMcp || $[32] !== onClickVideogames || $[33] !== pathname) {
76
- t2 = (isMobile_1) => /* @__PURE__ */ jsxs(Fragment, { children: [
77
- /* @__PURE__ */ jsx(MenuItem, {
78
- linkComponent,
79
- className: baseClassName(isMobile_1),
80
- to: "/",
81
- selected: pathname === "/",
82
- onClick: onClickHome,
83
- children: "Home"
84
- }, `home-${isMobile_1 ? "mobile" : "desktop"}`),
85
- /* @__PURE__ */ jsx(DropdownMenu, {
77
+ let t3;
78
+ if ($[1] !== entries || $[2] !== handleLinkClick || $[3] !== isSelected || $[4] !== linkComponent) {
79
+ t3 = (isMobile_1) => /* @__PURE__ */ jsx(Fragment, { children: entries.map((entry) => {
80
+ const key = `${entry.label}-${isMobile_1 ? "mobile" : "desktop"}`;
81
+ if (isDropdown(entry)) return /* @__PURE__ */ jsx(DropdownMenu, {
86
82
  linkComponent,
87
- label: "Blog",
83
+ label: entry.label,
88
84
  className: dropdownClassName(isMobile_1),
89
- items: [
90
- {
91
- label: "Posts",
92
- items: [{
93
- label: "Latest posts",
94
- to: navHrefs.blog,
95
- selected: pathname === navHrefs.blog,
96
- onClick: onClickBlog
97
- }, {
98
- label: "Archive",
99
- to: navHrefs.blogArchive,
100
- selected: pathname === navHrefs.blogArchive,
101
- onClick: onClickBlogArchive
102
- }]
103
- },
104
- {
105
- label: "Discovery",
106
- items: [{
107
- label: "Authors",
108
- to: navHrefs.blogAuthors,
109
- selected: pathname === navHrefs.blogAuthors || pathname.startsWith(`${navHrefs.blogAuthor}/`),
110
- onClick: onClickBlogAuthors
111
- }, {
112
- label: "Tags",
113
- to: navHrefs.blogTags,
114
- selected: pathname === navHrefs.blogTags,
115
- onClick: onClickBlogTags
116
- }]
117
- },
118
- {
119
- label: "Insights",
120
- items: [{
121
- label: "Stats",
122
- to: navHrefs.blogStats,
123
- selected: pathname === navHrefs.blogStats,
124
- onClick: onClickBlogStats
125
- }]
126
- }
127
- ]
128
- }, `blog-${isMobile_1 ? "mobile" : "desktop"}`),
129
- /* @__PURE__ */ jsx(DropdownMenu, {
85
+ items: entry.groups.map((group) => ({
86
+ label: group.label,
87
+ items: group.items.map((link) => ({
88
+ label: link.label,
89
+ to: link.to,
90
+ external: link.external,
91
+ selected: isSelected(link),
92
+ onClick: handleLinkClick(link.onClick)
93
+ }))
94
+ }))
95
+ }, key);
96
+ return /* @__PURE__ */ jsx(MenuItem, {
130
97
  linkComponent,
131
- label: "Explore",
132
- className: dropdownClassName(isMobile_1),
133
- items: [
134
- {
135
- label: "DSA",
136
- items: [{
137
- label: "Roadmap",
138
- to: navHrefs.dsaRoadmap,
139
- selected: pathname === navHrefs.dsaRoadmap,
140
- onClick: onClickDsaRoadmap
141
- }, {
142
- label: "Exercises",
143
- to: navHrefs.dsaExercises,
144
- selected: pathname === navHrefs.dsaExercises,
145
- onClick: onClickDsaExercises
146
- }]
147
- },
148
- {
149
- label: "Artificial Intelligence",
150
- items: [{
151
- label: "Chat",
152
- to: navHrefs.chat,
153
- selected: pathname === navHrefs.chat,
154
- onClick: onClickChat
155
- }, {
156
- label: "MCP",
157
- to: navHrefs.mcp,
158
- selected: pathname === navHrefs.mcp,
159
- onClick: onClickMcp
160
- }]
161
- },
162
- {
163
- label: "Computer Graphics",
164
- items: [{
165
- label: "Matrix Rain",
166
- to: "https://chicio.github.io/chicio-blog/matrix-rain/",
167
- external: true,
168
- onClick: onClickMatrixRain
169
- }]
170
- },
171
- {
172
- label: "Secrets",
173
- items: [{
174
- label: "Easter eggs",
175
- to: navHrefs.easterEggHunt,
176
- selected: pathname === navHrefs.easterEggHunt,
177
- onClick: onClickEasterEggHunt
178
- }]
179
- }
180
- ]
181
- }),
182
- /* @__PURE__ */ jsx(DropdownMenu, {
183
- linkComponent,
184
- label: "The Author",
185
- className: dropdownClassName(isMobile_1),
186
- items: [{
187
- label: "Profile",
188
- items: [{
189
- label: "About me",
190
- to: navHrefs.aboutMe,
191
- selected: pathname === navHrefs.aboutMe,
192
- onClick: onClickAboutMe
193
- }, {
194
- label: "Contact me",
195
- to: navHrefs.contact,
196
- selected: pathname === navHrefs.contact,
197
- onClick: onClickContact
198
- }]
199
- }, {
200
- label: "Hobbies",
201
- items: [{
202
- label: "Art",
203
- to: navHrefs.art,
204
- selected: pathname === navHrefs.art,
205
- onClick: onClickArt
206
- }, {
207
- label: "Videogames",
208
- to: navHrefs.videogames,
209
- selected: pathname === navHrefs.videogames,
210
- onClick: onClickVideogames
211
- }]
212
- }]
213
- })
214
- ] });
215
- $[1] = linkComponent;
216
- $[2] = navHrefs.aboutMe;
217
- $[3] = navHrefs.art;
218
- $[4] = navHrefs.blog;
219
- $[5] = navHrefs.blogArchive;
220
- $[6] = navHrefs.blogAuthor;
221
- $[7] = navHrefs.blogAuthors;
222
- $[8] = navHrefs.blogStats;
223
- $[9] = navHrefs.blogTags;
224
- $[10] = navHrefs.chat;
225
- $[11] = navHrefs.contact;
226
- $[12] = navHrefs.dsaExercises;
227
- $[13] = navHrefs.dsaRoadmap;
228
- $[14] = navHrefs.easterEggHunt;
229
- $[15] = navHrefs.mcp;
230
- $[16] = navHrefs.videogames;
231
- $[17] = onClickAboutMe;
232
- $[18] = onClickArt;
233
- $[19] = onClickBlog;
234
- $[20] = onClickBlogArchive;
235
- $[21] = onClickBlogAuthors;
236
- $[22] = onClickBlogStats;
237
- $[23] = onClickBlogTags;
238
- $[24] = onClickChat;
239
- $[25] = onClickContact;
240
- $[26] = onClickDsaExercises;
241
- $[27] = onClickDsaRoadmap;
242
- $[28] = onClickEasterEggHunt;
243
- $[29] = onClickHome;
244
- $[30] = onClickMatrixRain;
245
- $[31] = onClickMcp;
246
- $[32] = onClickVideogames;
247
- $[33] = pathname;
248
- $[34] = t2;
249
- } else t2 = $[34];
250
- const renderMenuItems = t2;
251
- const t3 = `menu-container container-fixed fixed right-0 left-0 z-50 my-3 ${shouldOpenMenu ? "xs:block hidden" : ""}`;
252
- const t4 = shouldHideMenu ? "hidden" : "visible";
253
- const t5 = `${glassmorphismClass} xs:py-0 xs:pt-0 m-0 my-0 flex min-h-16 flex-row items-center gap-1 overflow-hidden px-2 sm:overflow-visible`;
254
- let t6;
255
- if ($[35] !== renderMenuItems) {
256
- t6 = renderMenuItems(false);
257
- $[35] = renderMenuItems;
258
- $[36] = t6;
259
- } else t6 = $[36];
98
+ className: baseClassName(isMobile_1),
99
+ to: entry.to,
100
+ external: entry.external,
101
+ selected: isSelected(entry),
102
+ onClick: handleLinkClick(entry.onClick),
103
+ children: entry.label
104
+ }, key);
105
+ }) });
106
+ $[1] = entries;
107
+ $[2] = handleLinkClick;
108
+ $[3] = isSelected;
109
+ $[4] = linkComponent;
110
+ $[5] = t3;
111
+ } else t3 = $[5];
112
+ const renderMenuItems = t3;
113
+ const t4 = `menu-container container-fixed fixed right-0 left-0 z-50 my-3 ${shouldOpenMenu ? "xs:block hidden" : ""}`;
114
+ const t5 = shouldHideMenu ? "hidden" : "visible";
115
+ const t6 = `${glassmorphismClass} xs:py-0 xs:pt-0 m-0 my-0 flex min-h-16 flex-row items-center gap-1 overflow-hidden px-2 sm:overflow-visible`;
260
116
  let t7;
261
- if ($[37] !== openMenu || $[38] !== shouldOpenMenu) {
262
- t7 = !shouldOpenMenu && /* @__PURE__ */ jsx("div", {
117
+ if ($[6] !== renderMenuItems) {
118
+ t7 = renderMenuItems(false);
119
+ $[6] = renderMenuItems;
120
+ $[7] = t7;
121
+ } else t7 = $[7];
122
+ let t8;
123
+ if ($[8] !== openMenu || $[9] !== shouldOpenMenu) {
124
+ t8 = !shouldOpenMenu && /* @__PURE__ */ jsx("div", {
263
125
  className: "sm:hidden",
264
126
  children: /* @__PURE__ */ jsx(HamburgerMenu, { onClick: openMenu })
265
127
  });
266
- $[37] = openMenu;
267
- $[38] = shouldOpenMenu;
268
- $[39] = t7;
269
- } else t7 = $[39];
270
- let t8;
128
+ $[8] = openMenu;
129
+ $[9] = shouldOpenMenu;
130
+ $[10] = t8;
131
+ } else t8 = $[10];
132
+ let t10;
271
133
  let t9;
272
- if ($[40] === Symbol.for("react.memo_cache_sentinel")) {
273
- t8 = /* @__PURE__ */ jsx(BiSearchAlt, { className: "text-accent group-hover:text-accent size-3.5 shrink-0 transition-colors duration-200" });
274
- t9 = /* @__PURE__ */ jsx("span", {
134
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
135
+ t9 = /* @__PURE__ */ jsx(BiSearchAlt, { className: "text-accent group-hover:text-accent size-3.5 shrink-0 transition-colors duration-200" });
136
+ t10 = /* @__PURE__ */ jsx("span", {
275
137
  className: "text-accent/40 group-hover:text-accent/60 hidden flex-1 text-left font-mono text-sm leading-none transition-colors duration-200 md:block",
276
138
  children: "Search..."
277
139
  });
278
- $[40] = t8;
279
- $[41] = t9;
140
+ $[11] = t10;
141
+ $[12] = t9;
280
142
  } else {
281
- t8 = $[40];
282
- t9 = $[41];
143
+ t10 = $[11];
144
+ t9 = $[12];
283
145
  }
284
- let t10;
285
- if ($[42] !== modifierKey) {
286
- t10 = modifierKey !== null && /* @__PURE__ */ jsxs("span", {
146
+ let t11;
147
+ if ($[13] !== modifierKey) {
148
+ t11 = modifierKey !== null && /* @__PURE__ */ jsxs("span", {
287
149
  className: "hidden items-center gap-1 md:inline-flex",
288
150
  children: [
289
151
  /* @__PURE__ */ jsx("kbd", {
@@ -300,58 +162,58 @@ const Menu = (t0) => {
300
162
  })
301
163
  ]
302
164
  });
303
- $[42] = modifierKey;
304
- $[43] = t10;
305
- } else t10 = $[43];
306
- let t11;
307
- if ($[44] !== handlePaletteTrigger || $[45] !== t10) {
308
- t11 = /* @__PURE__ */ jsxs("button", {
165
+ $[13] = modifierKey;
166
+ $[14] = t11;
167
+ } else t11 = $[14];
168
+ let t12;
169
+ if ($[15] !== handlePaletteTrigger || $[16] !== t11) {
170
+ t12 = /* @__PURE__ */ jsxs("button", {
309
171
  className: "group border-accent bg-accent/10 hover:border-accent hover:bg-accent/20 ml-auto flex min-h-10 w-auto cursor-pointer items-center gap-2 rounded-lg border px-3 py-1.5 transition-all duration-200 sm:mr-3 md:w-60",
310
172
  onClick: handlePaletteTrigger,
311
173
  "aria-label": "Open command palette",
312
174
  children: [
313
- t8,
314
175
  t9,
315
- t10
176
+ t10,
177
+ t11
316
178
  ]
317
179
  });
318
- $[44] = handlePaletteTrigger;
319
- $[45] = t10;
320
- $[46] = t11;
321
- } else t11 = $[46];
322
- let t12;
323
- if ($[47] !== t11 || $[48] !== t5 || $[49] !== t6 || $[50] !== t7) {
324
- t12 = /* @__PURE__ */ jsxs("div", {
325
- className: t5,
180
+ $[15] = handlePaletteTrigger;
181
+ $[16] = t11;
182
+ $[17] = t12;
183
+ } else t12 = $[17];
184
+ let t13;
185
+ if ($[18] !== t12 || $[19] !== t6 || $[20] !== t7 || $[21] !== t8) {
186
+ t13 = /* @__PURE__ */ jsxs("div", {
187
+ className: t6,
326
188
  children: [
327
- t6,
328
189
  t7,
329
- t11
190
+ t8,
191
+ t12
330
192
  ]
331
193
  });
332
- $[47] = t11;
333
- $[48] = t5;
334
- $[49] = t6;
335
- $[50] = t7;
336
- $[51] = t12;
337
- } else t12 = $[51];
338
- let t13;
339
- if ($[52] !== t12 || $[53] !== t3 || $[54] !== t4) {
340
- t13 = /* @__PURE__ */ jsx(MotionDiv, {
341
- className: t3,
194
+ $[18] = t12;
195
+ $[19] = t6;
196
+ $[20] = t7;
197
+ $[21] = t8;
198
+ $[22] = t13;
199
+ } else t13 = $[22];
200
+ let t14;
201
+ if ($[23] !== t13 || $[24] !== t4 || $[25] !== t5) {
202
+ t14 = /* @__PURE__ */ jsx(MotionDiv, {
203
+ className: t4,
342
204
  variants: menuVariants,
343
- animate: t4,
205
+ animate: t5,
344
206
  initial: "visible",
345
- children: t12
207
+ children: t13
346
208
  });
347
- $[52] = t12;
348
- $[53] = t3;
349
- $[54] = t4;
350
- $[55] = t13;
351
- } else t13 = $[55];
352
- let t14;
353
- if ($[56] !== closeMenu || $[57] !== renderMenuItems || $[58] !== shouldOpenMenu) {
354
- t14 = shouldOpenMenu && /* @__PURE__ */ jsx(MotionDiv, {
209
+ $[23] = t13;
210
+ $[24] = t4;
211
+ $[25] = t5;
212
+ $[26] = t14;
213
+ } else t14 = $[26];
214
+ let t15;
215
+ if ($[27] !== closeMenu || $[28] !== renderMenuItems || $[29] !== shouldOpenMenu) {
216
+ t15 = shouldOpenMenu && /* @__PURE__ */ jsx(MotionDiv, {
355
217
  className: "bg-black-alpha-75 fixed top-0 left-0 z-50 h-full w-full touch-pan-y overflow-y-auto backdrop-blur-sm sm:hidden",
356
218
  style: { willChange: "transform" },
357
219
  variants: panelVariants,
@@ -366,25 +228,25 @@ const Menu = (t0) => {
366
228
  }), renderMenuItems(true)]
367
229
  })
368
230
  });
369
- $[56] = closeMenu;
370
- $[57] = renderMenuItems;
371
- $[58] = shouldOpenMenu;
372
- $[59] = t14;
373
- } else t14 = $[59];
374
- let t15;
375
- if ($[60] !== t14) {
376
- t15 = /* @__PURE__ */ jsx(AnimatePresence, { children: t14 });
377
- $[60] = t14;
378
- $[61] = t15;
379
- } else t15 = $[61];
231
+ $[27] = closeMenu;
232
+ $[28] = renderMenuItems;
233
+ $[29] = shouldOpenMenu;
234
+ $[30] = t15;
235
+ } else t15 = $[30];
380
236
  let t16;
381
- if ($[62] !== t13 || $[63] !== t15) {
382
- t16 = /* @__PURE__ */ jsxs(Fragment, { children: [t13, t15] });
383
- $[62] = t13;
384
- $[63] = t15;
385
- $[64] = t16;
386
- } else t16 = $[64];
387
- return t16;
237
+ if ($[31] !== t15) {
238
+ t16 = /* @__PURE__ */ jsx(AnimatePresence, { children: t15 });
239
+ $[31] = t15;
240
+ $[32] = t16;
241
+ } else t16 = $[32];
242
+ let t17;
243
+ if ($[33] !== t14 || $[34] !== t16) {
244
+ t17 = /* @__PURE__ */ jsxs(Fragment, { children: [t14, t16] });
245
+ $[33] = t14;
246
+ $[34] = t16;
247
+ $[35] = t17;
248
+ } else t17 = $[35];
249
+ return t17;
388
250
  };
389
251
  function _temp(isMobile) {
390
252
  return isMobile ? "mb-2 w-80" : "hidden sm:flex xs:mb-0 xs:w-auto";