@xenide-io/the-old-ui-theme 0.5.2 → 0.5.3

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.
package/dist/suite.mjs CHANGED
@@ -99,10 +99,10 @@ var APP_ACCENTS = {
99
99
  },
100
100
  nakama: {
101
101
  label: "Nakama",
102
- accent: "#0891b2",
103
- tile: "#155e75",
104
- onTile: "#ffffff",
105
- onTileAccent: "#a5f3fc"
102
+ accent: "#b8eb44",
103
+ tile: "#17101f",
104
+ onTile: "#fff2e2",
105
+ onTileAccent: "#f54b87"
106
106
  }
107
107
  };
108
108
  var APP_GLYPHS = {
@@ -111,7 +111,7 @@ var APP_GLYPHS = {
111
111
  kraken: "squid-doc",
112
112
  shellstack: "stack-hex",
113
113
  crew: "crew-bot",
114
- nakama: "crew-bot"
114
+ nakama: "nakama-fist"
115
115
  };
116
116
 
117
117
  // src/suite/icons/glyph-parts.tsx
@@ -121,7 +121,15 @@ function GlyphElement({ element }) {
121
121
  const stroke = element.filled ? "none" : void 0;
122
122
  switch (element.kind) {
123
123
  case "path":
124
- return /* @__PURE__ */ jsx2("path", { d: element.d, fill, stroke });
124
+ return /* @__PURE__ */ jsx2(
125
+ "path",
126
+ {
127
+ d: element.d,
128
+ fill,
129
+ stroke,
130
+ transform: element.transform
131
+ }
132
+ );
125
133
  case "circle":
126
134
  return /* @__PURE__ */ jsx2(
127
135
  "circle",
@@ -226,6 +234,24 @@ var SUITE_GLYPHS = {
226
234
  { kind: "path", d: "M9.6 14.6q2.4 1.7 4.8 0", accent: true }
227
235
  ]
228
236
  },
237
+ "nakama-fist": {
238
+ description: "Nakama \u2014 raised fist with neon crew signal lines",
239
+ elements: [
240
+ {
241
+ kind: "path",
242
+ d: "M192 0c17.7 0 32 14.3 32 32v112h-64V32c0-17.7 14.3-32 32-32zM64 64c0-17.7-32-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32v-64zm-96 88v-.6c9.4 5.4 20.3 8.6 32 8.6 13.2 0 25.4-4 35.6-10.8 8.7 24.9 32.5 42.8 60.4 42.8 11.7 0 22.6-3.1 32-8.6v8.6c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-78.4c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267v-27c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40h-56c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z",
243
+ filled: true,
244
+ transform: "translate(2.5 1.75) scale(.0425 .0375)"
245
+ },
246
+ { kind: "path", d: "M7 18h3.5M12.2 18h3M8.5 19.5h6", accent: true },
247
+ {
248
+ kind: "path",
249
+ d: "M4.8 5.8h2.7M4.8 7.4h1.4M18.5 17.1h1.7",
250
+ accent: true
251
+ },
252
+ { kind: "circle", cx: 18.5, cy: 4.5, r: 0.8, accent: true, filled: true }
253
+ ]
254
+ },
229
255
  workspace: {
230
256
  description: "Workspace container \u2014 panel with header bar and content",
231
257
  elements: [
@@ -239,7 +265,15 @@ var SUITE_GLYPHS = {
239
265
  organisation: {
240
266
  description: "Organisation chart \u2014 root node with two members",
241
267
  elements: [
242
- { kind: "rect", x: 9.5, y: 3.5, width: 5, height: 5, rx: 1.4, accent: true },
268
+ {
269
+ kind: "rect",
270
+ x: 9.5,
271
+ y: 3.5,
272
+ width: 5,
273
+ height: 5,
274
+ rx: 1.4,
275
+ accent: true
276
+ },
243
277
  { kind: "path", d: "M12 8.5v2.5" },
244
278
  { kind: "path", d: "M6.75 13.5v-2.5h10.5v2.5" },
245
279
  { kind: "rect", x: 4.25, y: 13.5, width: 5, height: 5, rx: 1.4 },
@@ -283,7 +317,10 @@ var SUITE_GLYPHS = {
283
317
  "bell-wave": {
284
318
  description: "Notifications \u2014 bell with sound waves",
285
319
  elements: [
286
- { kind: "path", d: "M7 9.2a5 5 0 0 1 10 0c0 5.3 2.4 7.3 2.4 7.3H4.6S7 14.5 7 9.2" },
320
+ {
321
+ kind: "path",
322
+ d: "M7 9.2a5 5 0 0 1 10 0c0 5.3 2.4 7.3 2.4 7.3H4.6S7 14.5 7 9.2"
323
+ },
287
324
  { kind: "path", d: "M10.7 19.3a1.5 1.5 0 0 0 2.6 0" },
288
325
  { kind: "path", d: "M17.9 6.4a5.5 5.5 0 0 1 1.4 3.7", accent: true },
289
326
  { kind: "path", d: "M15.7 4a9.4 9.4 0 0 1 2.4 6", accent: true }
@@ -1806,23 +1843,24 @@ function SuiteUserMenu({
1806
1843
  settingsHref,
1807
1844
  onSignOut,
1808
1845
  fallbackInitials,
1846
+ showSignOutAction = false,
1809
1847
  dataTest = "suite-user-menu",
1810
1848
  className
1811
1849
  }) {
1812
1850
  const router = useRouter2();
1813
1851
  const initials = fallbackInitials != null ? fallbackInitials : computeInitials(name, email);
1814
- const avatar = /* @__PURE__ */ jsx14("span", { className: "inline-flex h-11 w-11 items-center justify-center rounded-full transition-colors hover:bg-ph-muted", children: image ? /* @__PURE__ */ jsx14(
1852
+ const avatar = /* @__PURE__ */ jsx14("span", { className: "inline-flex h-11 w-11 items-center justify-center rounded-full ring-2 ring-ph-border ring-offset-1 ring-offset-ph-canvas transition-colors hover:bg-ph-muted", children: image ? /* @__PURE__ */ jsx14(
1815
1853
  Image2,
1816
1854
  {
1817
1855
  src: image,
1818
1856
  alt: "",
1819
- width: 32,
1820
- height: 32,
1821
- className: "h-8 w-8 rounded-full object-cover",
1857
+ width: 40,
1858
+ height: 40,
1859
+ className: "h-10 w-10 rounded-full object-cover",
1822
1860
  unoptimized: true
1823
1861
  }
1824
- ) : /* @__PURE__ */ jsx14("span", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-ph-muted text-sm font-semibold text-ph-brand", children: initials }) });
1825
- return /* @__PURE__ */ jsxs12(
1862
+ ) : /* @__PURE__ */ jsx14("span", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-ph-muted text-sm font-semibold text-ph-brand", children: initials }) });
1863
+ const accountMenu = /* @__PURE__ */ jsxs12(
1826
1864
  DropdownMenu,
1827
1865
  {
1828
1866
  trigger: avatar,
@@ -1832,7 +1870,7 @@ function SuiteUserMenu({
1832
1870
  sideOffset: 6,
1833
1871
  collisionPadding: 16,
1834
1872
  modal: false,
1835
- className,
1873
+ className: showSignOutAction ? void 0 : className,
1836
1874
  "data-test": dataTest,
1837
1875
  children: [
1838
1876
  /* @__PURE__ */ jsxs12("div", { className: "px-2 py-1.5", children: [
@@ -1851,20 +1889,31 @@ function SuiteUserMenu({
1851
1889
  ]
1852
1890
  }
1853
1891
  ),
1854
- /* @__PURE__ */ jsxs12(
1855
- DropdownItem,
1856
- {
1857
- "data-test": `${dataTest}-sign-out`,
1858
- onClick: onSignOut,
1859
- children: [
1860
- /* @__PURE__ */ jsx14(LogOut, { className: "h-4 w-4 text-ph-mutedtext", "aria-hidden": true }),
1861
- "Sign out"
1862
- ]
1863
- }
1864
- )
1892
+ /* @__PURE__ */ jsxs12(DropdownItem, { "data-test": `${dataTest}-sign-out`, onClick: onSignOut, children: [
1893
+ /* @__PURE__ */ jsx14(LogOut, { className: "h-4 w-4 text-ph-mutedtext", "aria-hidden": true }),
1894
+ "Sign out"
1895
+ ] })
1865
1896
  ]
1866
1897
  }
1867
1898
  );
1899
+ if (!showSignOutAction) {
1900
+ return accountMenu;
1901
+ }
1902
+ return /* @__PURE__ */ jsxs12("div", { className: cn("flex min-w-0 items-center gap-2", className), children: [
1903
+ accountMenu,
1904
+ /* @__PURE__ */ jsx14(
1905
+ "button",
1906
+ {
1907
+ type: "button",
1908
+ "data-test": `${dataTest}-visible-sign-out`,
1909
+ title: "Sign out",
1910
+ "aria-label": "Sign out",
1911
+ className: "inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-lg text-ph-mutedtext transition-colors hover:bg-ph-muted hover:text-ph-ink focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ph-focus-ring",
1912
+ onClick: onSignOut,
1913
+ children: /* @__PURE__ */ jsx14(LogOut, { className: "h-4 w-4", "aria-hidden": true })
1914
+ }
1915
+ )
1916
+ ] });
1868
1917
  }
1869
1918
 
1870
1919
  // src/suite/components/suite-bottom-nav.tsx
@@ -2544,8 +2593,9 @@ function snapWidth(width) {
2544
2593
  if (width < SIDEBAR_MIN_EXPANDED_WIDTH) return SIDEBAR_MIN_EXPANDED_WIDTH;
2545
2594
  return Math.min(SIDEBAR_MAX_WIDTH, width);
2546
2595
  }
2547
- function useSidebarWidth(storageKey) {
2548
- const [width, setWidth] = useState8(SIDEBAR_DEFAULT_WIDTH);
2596
+ function useSidebarWidth(storageKey, defaultWidth = SIDEBAR_DEFAULT_WIDTH) {
2597
+ const fallbackWidth = snapWidth(clampWidth(defaultWidth));
2598
+ const [width, setWidth] = useState8(fallbackWidth);
2549
2599
  const [narrowViewport, setNarrowViewport] = useState8(false);
2550
2600
  const collapsed = narrowViewport || width <= SIDEBAR_COLLAPSE_THRESHOLD;
2551
2601
  useEffect7(() => {
@@ -2579,17 +2629,17 @@ function useSidebarWidth(storageKey) {
2579
2629
  const setCollapsed = useCallback3(
2580
2630
  (value) => {
2581
2631
  setWidth((current) => {
2582
- const next = value ? SIDEBAR_RAIL_WIDTH : current <= SIDEBAR_COLLAPSE_THRESHOLD ? SIDEBAR_DEFAULT_WIDTH : snapWidth(current);
2632
+ const next = value ? SIDEBAR_RAIL_WIDTH : current <= SIDEBAR_COLLAPSE_THRESHOLD ? fallbackWidth : snapWidth(current);
2583
2633
  persist(next);
2584
2634
  return next;
2585
2635
  });
2586
2636
  },
2587
- [persist]
2637
+ [fallbackWidth, persist]
2588
2638
  );
2589
2639
  const resetWidth = useCallback3(() => {
2590
- setWidth(SIDEBAR_DEFAULT_WIDTH);
2591
- persist(SIDEBAR_DEFAULT_WIDTH);
2592
- }, [persist]);
2640
+ setWidth(fallbackWidth);
2641
+ persist(fallbackWidth);
2642
+ }, [fallbackWidth, persist]);
2593
2643
  const startResize = useCallback3(
2594
2644
  (event) => {
2595
2645
  event.preventDefault();
@@ -2612,7 +2662,17 @@ function useSidebarWidth(storageKey) {
2612
2662
  },
2613
2663
  [persist, width]
2614
2664
  );
2615
- return { width, collapsed, setCollapsed, resetWidth, startResize };
2665
+ const resizeBy = useCallback3(
2666
+ (delta) => {
2667
+ setWidth((current) => {
2668
+ const next = clampWidth(current + delta);
2669
+ persist(next);
2670
+ return next;
2671
+ });
2672
+ },
2673
+ [persist]
2674
+ );
2675
+ return { width, collapsed, setCollapsed, resetWidth, startResize, resizeBy };
2616
2676
  }
2617
2677
 
2618
2678
  // src/suite/lib/motion.tsx
@@ -2881,67 +2941,60 @@ function SuiteSidebar({
2881
2941
  collapsed ? "px-1.5 py-2" : "p-2"
2882
2942
  ),
2883
2943
  children: [
2884
- /* @__PURE__ */ jsxs18(
2885
- "nav",
2886
- {
2887
- "aria-label": "Pages",
2888
- className: "shrink-0 space-y-0.5",
2889
- children: [
2890
- /* @__PURE__ */ jsx21("div", { className: cn("mb-3", collapsed && "flex justify-center"), children: renderNode(contextSwitcher, collapsed) }),
2891
- /* @__PURE__ */ jsx21("div", { className: "space-y-0.5", children: navItems.map((item) => {
2892
- const Icon = item.icon;
2893
- const active = Boolean(item.active);
2894
- const link = /* @__PURE__ */ jsxs18(
2895
- Link2,
2896
- {
2897
- href: item.href,
2898
- "data-test": "nav-link",
2899
- "aria-current": active ? "page" : void 0,
2900
- onClick: item.onClick,
2901
- className: cn(
2902
- "group relative flex items-center gap-2.5 rounded-[var(--ph-radius-app)] text-sm font-medium transition-colors",
2903
- active ? "bg-ph-muted" : "text-ph-subtle hover:bg-ph-muted hover:text-ph-ink",
2904
- collapsed ? "mx-auto size-10 shrink-0 justify-center gap-0 px-0 py-0" : "w-full px-2.5 py-2"
2905
- ),
2906
- children: [
2907
- /* @__PURE__ */ jsx21(
2908
- "span",
2909
- {
2910
- className: cn(
2911
- "relative flex h-4 w-4 shrink-0 items-center justify-center",
2912
- item.iconClassName
2913
- ),
2914
- "aria-hidden": true,
2915
- children: /* @__PURE__ */ jsx21(
2916
- Icon,
2917
- {
2918
- className: "h-full w-full",
2919
- strokeWidth: active ? 2 : 1.75
2920
- }
2921
- )
2922
- }
2944
+ /* @__PURE__ */ jsxs18("nav", { "aria-label": "Pages", className: "shrink-0 space-y-0.5", children: [
2945
+ /* @__PURE__ */ jsx21("div", { className: cn("mb-3", collapsed && "flex justify-center"), children: renderNode(contextSwitcher, collapsed) }),
2946
+ /* @__PURE__ */ jsx21("div", { className: "space-y-0.5", children: navItems.map((item) => {
2947
+ const Icon = item.icon;
2948
+ const active = Boolean(item.active);
2949
+ const link = /* @__PURE__ */ jsxs18(
2950
+ Link2,
2951
+ {
2952
+ href: item.href,
2953
+ "data-test": "nav-link",
2954
+ "aria-current": active ? "page" : void 0,
2955
+ onClick: item.onClick,
2956
+ className: cn(
2957
+ "group relative flex items-center gap-2.5 rounded-[var(--ph-radius-app)] text-sm font-medium transition-colors",
2958
+ active ? "bg-ph-muted" : "text-ph-subtle hover:bg-ph-muted hover:text-ph-ink",
2959
+ collapsed ? "mx-auto size-10 shrink-0 justify-center gap-0 px-0 py-0" : "w-full px-2.5 py-2"
2960
+ ),
2961
+ children: [
2962
+ /* @__PURE__ */ jsx21(
2963
+ "span",
2964
+ {
2965
+ className: cn(
2966
+ "relative flex h-4 w-4 shrink-0 items-center justify-center",
2967
+ item.iconClassName
2923
2968
  ),
2924
- /* @__PURE__ */ jsx21(
2925
- "span",
2969
+ "aria-hidden": true,
2970
+ children: /* @__PURE__ */ jsx21(
2971
+ Icon,
2926
2972
  {
2927
- className: cn(
2928
- "relative truncate",
2929
- active ? "text-ph-ink" : "text-ph-subtle group-hover:text-ph-ink",
2930
- collapsed && "sr-only"
2931
- ),
2932
- children: item.label
2973
+ className: "h-full w-full",
2974
+ strokeWidth: active ? 2 : 1.75
2933
2975
  }
2976
+ )
2977
+ }
2978
+ ),
2979
+ /* @__PURE__ */ jsx21(
2980
+ "span",
2981
+ {
2982
+ className: cn(
2983
+ "relative truncate",
2984
+ active ? "text-ph-ink" : "text-ph-subtle group-hover:text-ph-ink",
2985
+ collapsed && "sr-only"
2934
2986
  ),
2935
- !collapsed && item.badge ? /* @__PURE__ */ jsx21("span", { className: "relative ml-auto shrink-0", children: item.badge }) : null
2936
- ]
2937
- },
2938
- item.label
2939
- );
2940
- return collapsed ? /* @__PURE__ */ jsx21(Tooltip, { content: item.label, side: "right", children: link }, item.label) : link;
2941
- }) })
2942
- ]
2943
- }
2944
- ),
2987
+ children: item.label
2988
+ }
2989
+ ),
2990
+ !collapsed && item.badge ? /* @__PURE__ */ jsx21("span", { className: "relative ml-auto shrink-0", children: item.badge }) : null
2991
+ ]
2992
+ },
2993
+ item.label
2994
+ );
2995
+ return collapsed ? /* @__PURE__ */ jsx21(Tooltip, { content: item.label, side: "right", children: link }, item.label) : link;
2996
+ }) })
2997
+ ] }),
2945
2998
  secondaryNav ? /* @__PURE__ */ jsx21(
2946
2999
  "div",
2947
3000
  {
@@ -2966,11 +3019,11 @@ function SuiteSidebar({
2966
3019
  {
2967
3020
  className: cn(
2968
3021
  "flex items-center gap-2",
2969
- collapsed && "justify-center"
3022
+ collapsed ? "flex-col justify-center" : "min-w-0"
2970
3023
  ),
2971
3024
  children: [
2972
3025
  renderNode(userMenu, collapsed),
2973
- !collapsed && footerExtras ? /* @__PURE__ */ jsx21("div", { className: "ml-auto shrink-0", children: renderNode(footerExtras, collapsed) }) : null
3026
+ footerExtras ? /* @__PURE__ */ jsx21("div", { className: cn("shrink-0", collapsed ? "mt-2" : "ml-auto"), children: renderNode(footerExtras, collapsed) }) : null
2974
3027
  ]
2975
3028
  }
2976
3029
  )
@@ -2992,6 +3045,7 @@ function SuiteAppLayout({
2992
3045
  collapsed = false,
2993
3046
  lockMainScroll = false,
2994
3047
  onStartResize,
3048
+ onResizeBy,
2995
3049
  onResetWidth,
2996
3050
  className
2997
3051
  }) {
@@ -2999,12 +3053,15 @@ function SuiteAppLayout({
2999
3053
  "div",
3000
3054
  {
3001
3055
  "data-test": "app-shell",
3002
- className: cn("flex min-h-dvh lg:h-screen lg:overflow-hidden", className),
3056
+ className: cn(
3057
+ "suite-app-layout flex min-h-dvh lg:h-screen lg:overflow-hidden",
3058
+ className
3059
+ ),
3003
3060
  children: [
3004
3061
  /* @__PURE__ */ jsxs19(
3005
3062
  "aside",
3006
3063
  {
3007
- className: "relative hidden shrink-0 flex-col overflow-hidden border-r border-ph-border transition-[width] duration-200 ease-out lg:flex",
3064
+ className: "relative hidden shrink-0 flex-col overflow-visible border-r border-ph-border ease-out lg:flex",
3008
3065
  style: { width: `${sidebarWidth}px` },
3009
3066
  "data-collapsed": collapsed ? "true" : "false",
3010
3067
  children: [
@@ -3015,9 +3072,23 @@ function SuiteAppLayout({
3015
3072
  role: "separator",
3016
3073
  "aria-orientation": "vertical",
3017
3074
  "aria-label": "Resize sidebar",
3075
+ "data-test": "sidebar-resize-handle",
3076
+ tabIndex: onResizeBy ? 0 : void 0,
3018
3077
  onPointerDown: onStartResize,
3019
3078
  onDoubleClick: onResetWidth,
3020
- className: "absolute inset-y-0 right-0 z-10 w-1 cursor-col-resize transition-colors hover:bg-[color-mix(in_oklab,var(--ph-accent)_30%,transparent)]"
3079
+ onKeyDown: (event) => {
3080
+ if (event.key === "Home") {
3081
+ event.preventDefault();
3082
+ onResetWidth == null ? void 0 : onResetWidth();
3083
+ } else if (event.key === "ArrowLeft") {
3084
+ event.preventDefault();
3085
+ onResizeBy == null ? void 0 : onResizeBy(-16);
3086
+ } else if (event.key === "ArrowRight") {
3087
+ event.preventDefault();
3088
+ onResizeBy == null ? void 0 : onResizeBy(16);
3089
+ }
3090
+ },
3091
+ className: "absolute inset-y-0 -right-1 z-10 w-2 cursor-col-resize touch-none transition-colors hover:bg-[color-mix(in_oklab,var(--ph-accent)_30%,transparent)]"
3021
3092
  }
3022
3093
  ) : null
3023
3094
  ]
@@ -3033,6 +3104,7 @@ function SuiteAppLayout({
3033
3104
  "data-lock-scroll": lockMainScroll ? "true" : void 0,
3034
3105
  className: cn(
3035
3106
  "flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden overscroll-contain bg-ph-canvas focus:outline-none",
3107
+ "suite-app-layout__main",
3036
3108
  lockMainScroll ? "overflow-hidden" : "overflow-y-auto"
3037
3109
  ),
3038
3110
  children
package/dist/ui.js CHANGED
@@ -2388,177 +2388,65 @@ var THEMES = [
2388
2388
  colorScheme: "dark",
2389
2389
  group: "HedgeHog"
2390
2390
  },
2391
- {
2392
- id: "catppuccin-light",
2393
- name: "Catppuccin Light",
2394
- description: "Catppuccin Latte \u2014 soft pastels and mauve accent.",
2395
- colorScheme: "light",
2396
- group: "Catppuccin"
2397
- },
2398
- {
2399
- id: "catppuccin-dark",
2400
- name: "Catppuccin Dark",
2401
- description: "Catppuccin Mocha \u2014 deep base and lavender peach.",
2402
- colorScheme: "dark",
2403
- group: "Catppuccin"
2404
- },
2405
- {
2406
- id: "sheets",
2407
- name: "Sheets",
2408
- description: "Spreadsheet green on office neutrals.",
2409
- colorScheme: "light",
2410
- group: "Productivity"
2411
- },
2412
- {
2413
- id: "sheets-dark",
2414
- name: "Sheets Dark",
2415
- description: "Dark shell with spreadsheet green accent.",
2416
- colorScheme: "dark",
2417
- group: "Productivity"
2418
- },
2419
2391
  {
2420
2392
  id: "note",
2421
- name: "Note",
2393
+ name: "Note Light",
2422
2394
  description: "Notebook purple on lavender-white chrome.",
2423
2395
  colorScheme: "light",
2424
- group: "Productivity"
2396
+ group: "Note"
2425
2397
  },
2426
2398
  {
2427
2399
  id: "note-dark",
2428
2400
  name: "Note Dark",
2429
2401
  description: "Dark notebook purple \u2014 night reading mode.",
2430
2402
  colorScheme: "dark",
2431
- group: "Productivity"
2432
- },
2433
- {
2434
- id: "presentation",
2435
- name: "Presentation",
2436
- description: "Orange-red on office neutrals.",
2437
- colorScheme: "light",
2438
- group: "Productivity"
2439
- },
2440
- {
2441
- id: "presentation-dark",
2442
- name: "Presentation Dark",
2443
- description: "Dark shell with orange-red accent.",
2444
- colorScheme: "dark",
2445
- group: "Productivity"
2446
- },
2447
- {
2448
- id: "socials",
2449
- name: "Socials",
2450
- description: "Meta blue accent on familiar social greys.",
2451
- colorScheme: "light",
2452
- group: "Social"
2453
- },
2454
- {
2455
- id: "socials-dark",
2456
- name: "Socials Dark",
2457
- description: "Social dark mode \u2014 #18191A base and Meta blue.",
2458
- colorScheme: "dark",
2459
- group: "Social"
2460
- },
2461
- {
2462
- id: "chats-light",
2463
- name: "Chats Light",
2464
- description: "Aubergine brand on clean workspace neutrals.",
2465
- colorScheme: "light",
2466
- group: "Chats"
2467
- },
2468
- {
2469
- id: "chats-dark",
2470
- name: "Chats Dark",
2471
- description: "Dark sidebar \u2014 #1A1D21 base and green highlights.",
2472
- colorScheme: "dark",
2473
- group: "Chats"
2474
- },
2475
- {
2476
- id: "xenide-light",
2477
- name: "Xenide Light",
2478
- description: "xenide.io light \u2014 Excel green + purple on neutral greys.",
2479
- colorScheme: "light",
2480
- group: "Xenide"
2481
- },
2482
- {
2483
- id: "xenide-dark",
2484
- name: "Xenide Dark",
2485
- description: "xenide.io dark \u2014 #0A0A0F base, emerald green + violet.",
2486
- colorScheme: "dark",
2487
- group: "Xenide"
2488
- },
2489
- {
2490
- id: "bikini-bottom",
2491
- name: "Bikini Bottom",
2492
- description: "SpongeBob palette \u2014 ocean canvas, readable surfaces, character accents.",
2493
- colorScheme: "light",
2494
- group: "Fun"
2495
- },
2496
- {
2497
- id: "bikini-bottom-dark",
2498
- name: "Bikini Bottom Dark",
2499
- description: "Bikini Bottom at night \u2014 deep ocean with neon character accents.",
2500
- colorScheme: "dark",
2501
- group: "Fun"
2403
+ group: "Note"
2502
2404
  },
2503
2405
  {
2504
2406
  id: "turtletime",
2505
- name: "TurtleTime",
2407
+ name: "TurtleTime Light",
2506
2408
  description: "Turtle mascot palette \u2014 shell orange, leaf green, and warm cream.",
2507
2409
  colorScheme: "light",
2508
- group: "Fun"
2410
+ group: "TurtleTime"
2509
2411
  },
2510
2412
  {
2511
2413
  id: "turtletime-dark",
2512
2414
  name: "TurtleTime Dark",
2513
2415
  description: "TurtleTime after dusk \u2014 dark olive shell with bright orange clock accents.",
2514
2416
  colorScheme: "dark",
2515
- group: "Fun"
2516
- },
2517
- {
2518
- id: "github-light",
2519
- name: "GitHub Light",
2520
- description: "GitHub Primer \u2014 #f6f8fa canvas and emphasis blue accents.",
2521
- colorScheme: "light",
2522
- group: "GitHub"
2523
- },
2524
- {
2525
- id: "github-dark",
2526
- name: "GitHub Dark",
2527
- description: "GitHub dark dimmed \u2014 #0d1117 base and #4493f8 links.",
2528
- colorScheme: "dark",
2529
- group: "GitHub"
2417
+ group: "TurtleTime"
2530
2418
  },
2531
2419
  {
2532
2420
  id: "rosepine-light",
2533
- name: "Ros\xE9 Pine Dawn",
2421
+ name: "Ros\xE9 Pine Light",
2534
2422
  description: "Ros\xE9 Pine Dawn \u2014 warm paper base with muted iris accents.",
2535
2423
  colorScheme: "light",
2536
2424
  group: "Ros\xE9 Pine"
2537
2425
  },
2538
2426
  {
2539
2427
  id: "rosepine-dark",
2540
- name: "Ros\xE9 Pine",
2428
+ name: "Ros\xE9 Pine Dark",
2541
2429
  description: "Ros\xE9 Pine Main \u2014 moonlit base with iris and love accents.",
2542
2430
  colorScheme: "dark",
2543
2431
  group: "Ros\xE9 Pine"
2544
2432
  },
2545
2433
  {
2546
- id: "notion",
2547
- name: "Notion",
2548
- description: "Notion light \u2014 warm off-white canvas, Notion blue accent, signature dark text.",
2434
+ id: "kraken-light",
2435
+ name: "Kraken Light",
2436
+ description: "Medium-inspired warm paper, editorial black actions, and publication yellow.",
2549
2437
  colorScheme: "light",
2550
- group: "Productivity"
2438
+ group: "Kraken"
2551
2439
  },
2552
2440
  {
2553
- id: "notion-dark",
2554
- name: "Notion Dark",
2555
- description: "Notion dark mode \u2014 dark charcoal canvas with blue accent and clean typography.",
2441
+ id: "kraken-dark",
2442
+ name: "Kraken Dark",
2443
+ description: "Medium-inspired night reading canvas with white actions and publication yellow.",
2556
2444
  colorScheme: "dark",
2557
- group: "Productivity"
2445
+ group: "Kraken"
2558
2446
  },
2559
2447
  {
2560
2448
  id: "deepsea-light",
2561
- name: "Tokyo Night Day",
2449
+ name: "Tokyo Day",
2562
2450
  description: "Tokyo Night Day \u2014 soft bluish greys with vivid blue and purple accents.",
2563
2451
  colorScheme: "light",
2564
2452
  group: "Tokyo Night"
@@ -2571,21 +2459,23 @@ var THEMES = [
2571
2459
  group: "Tokyo Night"
2572
2460
  },
2573
2461
  {
2574
- id: "kraken-light",
2575
- name: "Kraken Light",
2576
- description: "Medium-inspired warm paper, editorial black actions, and classic publication yellow.",
2462
+ id: "malibu-light",
2463
+ name: "Malibu Light",
2464
+ description: "Sun-bleached GTA San Andreas palette with hot pink, sunset orange, and lime signals.",
2577
2465
  colorScheme: "light",
2578
- group: "Kraken"
2466
+ group: "Malibu"
2579
2467
  },
2580
2468
  {
2581
- id: "kraken-dark",
2582
- name: "Kraken Dark",
2583
- description: "Medium-inspired night reading canvas with white actions and classic publication yellow.",
2469
+ id: "malibu-dark",
2470
+ name: "Malibu Dark",
2471
+ description: "Deep plum command deck with hot pink, lime, cyan, and sunset signals.",
2584
2472
  colorScheme: "dark",
2585
- group: "Kraken"
2473
+ group: "Malibu"
2586
2474
  }
2587
2475
  ];
2588
- var THEME_GROUPS = Array.from(new Set(THEMES.map((theme) => theme.group)));
2476
+ var THEME_GROUPS = Array.from(
2477
+ new Set(THEMES.map((theme) => theme.group))
2478
+ );
2589
2479
  function isThemeId(value) {
2590
2480
  return THEMES.some((theme) => theme.id === value);
2591
2481
  }
@@ -2593,7 +2483,7 @@ function isThemeId(value) {
2593
2483
  // src/themes/init-theme.ts
2594
2484
  var STORAGE_KEY = "ph-theme";
2595
2485
  var VALID_THEMES = THEMES.map((theme) => theme.id);
2596
- var THEME_INIT_SCRIPT = `(function(){try{var k="${STORAGE_KEY}",d="${DEFAULT_THEME_ID}",v=${JSON.stringify(VALID_THEMES)},t=localStorage.getItem(k);if(t==="xenide")t="xenide-light";if(!t||v.indexOf(t)<0)t=d;document.documentElement.setAttribute("data-theme",t)}catch(e){document.documentElement.setAttribute("data-theme","${DEFAULT_THEME_ID}")}})();`;
2486
+ var THEME_INIT_SCRIPT = `(function(){try{var k="${STORAGE_KEY}",d="${DEFAULT_THEME_ID}",v=${JSON.stringify(VALID_THEMES)},t=localStorage.getItem(k);if(!t||v.indexOf(t)<0)t=d;document.documentElement.setAttribute("data-theme",t)}catch(e){document.documentElement.setAttribute("data-theme","${DEFAULT_THEME_ID}")}})();`;
2597
2487
  function persistTheme(themeId) {
2598
2488
  if (typeof window === "undefined") {
2599
2489
  return;
@@ -2609,9 +2499,6 @@ function readStoredTheme() {
2609
2499
  return DEFAULT_THEME_ID;
2610
2500
  }
2611
2501
  const stored = localStorage.getItem(STORAGE_KEY);
2612
- if (stored === "xenide") {
2613
- return "xenide-light";
2614
- }
2615
2502
  return stored && isThemeId(stored) ? stored : DEFAULT_THEME_ID;
2616
2503
  }
2617
2504
 
@@ -2637,7 +2524,7 @@ function ThemeManager({ children }) {
2637
2524
  var import_react15 = require("react");
2638
2525
  var import_jsx_runtime27 = require("react/jsx-runtime");
2639
2526
  function ThemeSwitcher({ className }) {
2640
- const [themeId, setThemeId] = (0, import_react15.useState)("hedgehog-light");
2527
+ const [themeId, setThemeId] = (0, import_react15.useState)(DEFAULT_THEME_ID);
2641
2528
  (0, import_react15.useEffect)(() => {
2642
2529
  const id = readStoredTheme();
2643
2530
  persistTheme(id);