@xenide-io/the-old-ui-theme 0.9.17 → 0.10.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.
Files changed (70) hide show
  1. package/dist/{Chip-BzuNgJIa.d.mts → Chip-DKT-82Lf.d.mts} +5 -3
  2. package/dist/{Chip-BzuNgJIa.d.ts → Chip-DKT-82Lf.d.ts} +5 -3
  3. package/dist/{chunk-6SVJAU5K.mjs → chunk-LHE4ROON.mjs} +977 -521
  4. package/dist/index.d.mts +2 -2
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.js +138 -99
  7. package/dist/index.mjs +1 -1
  8. package/dist/suite.d.mts +23 -1
  9. package/dist/suite.d.ts +23 -1
  10. package/dist/suite.js +4250 -4041
  11. package/dist/suite.mjs +1008 -795
  12. package/dist/tailwind-preset.js +10 -1
  13. package/dist/tailwind-preset.mjs +10 -1
  14. package/dist/ui.d.mts +33 -4
  15. package/dist/ui.d.ts +33 -4
  16. package/dist/ui.js +1024 -566
  17. package/dist/ui.mjs +13 -1
  18. package/docs/macos-identity-audit.md +279 -0
  19. package/package.json +1 -1
  20. package/src/app/globals.css +334 -44
  21. package/src/components/ui/Accordion.tsx +4 -7
  22. package/src/components/ui/Avatar.tsx +5 -5
  23. package/src/components/ui/Calendar.tsx +7 -7
  24. package/src/components/ui/CodeBlock.tsx +3 -10
  25. package/src/components/ui/CollapsibleSection.tsx +4 -4
  26. package/src/components/ui/CommandPalette.tsx +7 -10
  27. package/src/components/ui/EmptyState.tsx +2 -2
  28. package/src/components/ui/Input.tsx +1 -1
  29. package/src/components/ui/Marketing.tsx +128 -0
  30. package/src/components/ui/MarketingIllustrations.tsx +287 -0
  31. package/src/components/ui/Panel.tsx +1 -1
  32. package/src/components/ui/SegmentedControl.tsx +59 -13
  33. package/src/components/ui/ShowcaseWrapper.tsx +3 -3
  34. package/src/components/ui/Table.tsx +18 -6
  35. package/src/components/ui/Typography.tsx +4 -4
  36. package/src/components/ui/avatar-stat.test.tsx +14 -1
  37. package/src/components/ui/index.ts +13 -12
  38. package/src/components/ui/interaction-primitives.test.tsx +12 -6
  39. package/src/components/ui/marketing.test.tsx +39 -0
  40. package/src/components/ui/table.test.tsx +20 -0
  41. package/src/styles/suite-skin.css +405 -40
  42. package/src/styles/themes.css +45 -45
  43. package/src/styles/typography.css +25 -1
  44. package/src/suite/components/ai-panel.tsx +17 -17
  45. package/src/suite/components/app-switcher.tsx +9 -9
  46. package/src/suite/components/suite-app-layout.tsx +7 -4
  47. package/src/suite/components/suite-bottom-nav.tsx +1 -1
  48. package/src/suite/components/suite-clients-projects-directory.tsx +6 -6
  49. package/src/suite/components/suite-entity-icon.tsx +3 -3
  50. package/src/suite/components/suite-integration-picker.tsx +7 -7
  51. package/src/suite/components/suite-integration-rules.tsx +5 -5
  52. package/src/suite/components/suite-layout.test.tsx +32 -3
  53. package/src/suite/components/suite-layout.tsx +4 -4
  54. package/src/suite/components/suite-mobile-drawer.tsx +2 -2
  55. package/src/suite/components/suite-mobile-header.tsx +1 -1
  56. package/src/suite/components/suite-notification-bell.tsx +4 -4
  57. package/src/suite/components/suite-notification-settings.tsx +171 -0
  58. package/src/suite/components/suite-palette-library.test.tsx +46 -0
  59. package/src/suite/components/suite-palette-library.tsx +82 -15
  60. package/src/suite/components/suite-settings-layout.tsx +2 -2
  61. package/src/suite/components/suite-settings-mobile-nav.tsx +5 -9
  62. package/src/suite/components/suite-sidebar.test.tsx +39 -0
  63. package/src/suite/components/suite-sidebar.tsx +41 -19
  64. package/src/suite/components/suite-skeleton.tsx +6 -6
  65. package/src/suite/components/suite-user-menu.tsx +2 -2
  66. package/src/suite/components/today-calibrating.tsx +3 -3
  67. package/src/suite/components/today-ui.tsx +12 -12
  68. package/src/suite/components/workspace-switcher.tsx +3 -3
  69. package/src/suite/index.ts +6 -0
  70. package/tailwind-preset.ts +9 -0
@@ -65,7 +65,7 @@ export function SuiteSkeletonCard({
65
65
  return (
66
66
  <div
67
67
  className={cn(
68
- 'ph-skeleton-card animate-[skeleton-stagger_0.5s_ease-out_both] rounded-2xl border border-ph-border bg-ph-surface p-6 shadow-sm',
68
+ 'ph-skeleton-card animate-[skeleton-stagger_0.5s_ease-out_both] rounded-[var(--ph-radius-surface)] border border-ph-border bg-ph-surface p-6',
69
69
  className,
70
70
  )}
71
71
  aria-hidden
@@ -75,7 +75,7 @@ export function SuiteSkeletonCard({
75
75
  className="mb-5 flex items-center gap-3 animate-[skeleton-stagger_0.5s_ease-out_both]"
76
76
  style={{ animationDelay: '100ms' }}
77
77
  >
78
- <div className="ph-skeleton h-10 w-10 rounded-xl" />
78
+ <div className="ph-skeleton h-10 w-10 rounded-[var(--ph-radius-control)]" />
79
79
  <div className="flex-1 space-y-2">
80
80
  <div className="ph-skeleton h-4 w-1/3" />
81
81
  <div className="ph-skeleton h-3 w-1/2" />
@@ -115,8 +115,8 @@ export function SuiteSkeletonList({
115
115
  className="animate-[skeleton-stagger_0.6s_ease-out_both]"
116
116
  style={{ animationDelay: `${index * 100}ms` }}
117
117
  >
118
- <div className="flex items-center gap-3 rounded-xl border border-ph-border bg-ph-surface p-4">
119
- <div className="ph-skeleton h-10 w-10 rounded-lg" />
118
+ <div className="flex items-center gap-3 rounded-[var(--ph-radius-surface)] border border-ph-border bg-ph-surface p-4">
119
+ <div className="ph-skeleton h-10 w-10 rounded-[var(--ph-radius-control)]" />
120
120
  <div className="min-w-0 flex-1 space-y-2">
121
121
  <div className="ph-skeleton h-3.5 w-3/4" />
122
122
  <div className="ph-skeleton h-3 w-1/2" />
@@ -152,7 +152,7 @@ export function SuiteEmptyState({
152
152
  return (
153
153
  <div
154
154
  className={cn(
155
- 'relative overflow-hidden rounded-2xl border border-ph-border bg-ph-surface text-center',
155
+ 'relative overflow-hidden rounded-[var(--ph-radius-surface)] border border-ph-border bg-ph-surface text-center',
156
156
  size === 'sm' ? 'px-5 py-8' : 'px-6 py-12 sm:px-10 sm:py-16',
157
157
  className,
158
158
  )}
@@ -163,7 +163,7 @@ export function SuiteEmptyState({
163
163
  </div>
164
164
  <div className="relative">
165
165
  {icon ? (
166
- <div className="mx-auto mb-4 inline-flex items-center justify-center rounded-2xl bg-ph-muted p-3 shadow-sm ring-1 ring-black/[0.06]">
166
+ <div className="mx-auto mb-4 inline-flex items-center justify-center rounded-[var(--ph-radius-surface)] border border-ph-border bg-ph-muted p-3 shadow-[var(--ph-shadow-control)]">
167
167
  {icon}
168
168
  </div>
169
169
  ) : null}
@@ -148,7 +148,7 @@ export function SuiteUserMenu({
148
148
  className={cn(
149
149
  "[&_.ph-dropdown-trigger]:rounded-full",
150
150
  showDetails &&
151
- "min-w-0 flex-1 [&_.ph-dropdown-trigger]:w-full [&_.ph-dropdown-trigger]:justify-start [&_.ph-dropdown-trigger]:rounded-lg",
151
+ "min-w-0 flex-1 [&_.ph-dropdown-trigger]:w-full [&_.ph-dropdown-trigger]:justify-start [&_.ph-dropdown-trigger]:rounded-[var(--ph-radius-control)]",
152
152
  showSignOutAction ? undefined : className,
153
153
  )}
154
154
  data-test={dataTest}
@@ -193,7 +193,7 @@ export function SuiteUserMenu({
193
193
  data-test={`${dataTest}-visible-sign-out`}
194
194
  title="Sign out"
195
195
  aria-label="Sign out"
196
- className="inline-flex h-10 w-10 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"
196
+ className="ph-btn ph-btn-ghost ph-btn-square h-10 w-10 shrink-0 text-ph-mutedtext"
197
197
  onClick={onSignOut}
198
198
  >
199
199
  <LogOut className="h-4 w-4" aria-hidden />
@@ -30,7 +30,7 @@ export function TodayCalibrating({
30
30
  return (
31
31
  <div
32
32
  className={cn(
33
- 'suite-auth-handoff relative flex min-h-[14rem] flex-col items-center justify-center overflow-hidden rounded-2xl border border-ph-border bg-ph-surface px-5 py-8 text-center shadow-sm',
33
+ 'suite-auth-handoff relative flex min-h-[14rem] flex-col items-center justify-center overflow-hidden rounded-[var(--ph-radius-surface)] border border-ph-border bg-ph-surface px-5 py-8 text-center',
34
34
  className,
35
35
  )}
36
36
  data-test="today-calibrating"
@@ -39,7 +39,7 @@ export function TodayCalibrating({
39
39
  className="pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_50%_35%,rgba(251,191,36,0.1),transparent_55%)]"
40
40
  aria-hidden
41
41
  />
42
- <div className="relative mb-5 flex h-14 w-14 items-center justify-center rounded-2xl border border-ph-border bg-ph-surface text-ph-ink shadow-sm">
42
+ <div className="relative mb-5 flex h-14 w-14 items-center justify-center rounded-[var(--ph-radius-surface)] border border-ph-border bg-ph-surface text-ph-ink shadow-[var(--ph-shadow-control)]">
43
43
  <Sun className="h-8 w-8" strokeWidth={2} aria-hidden />
44
44
  </div>
45
45
  <h2 className="relative text-base font-semibold tracking-tight text-ph-ink sm:text-lg md:text-xl">
@@ -56,7 +56,7 @@ export function TodayCalibrating({
56
56
  type="button"
57
57
  onClick={onRetry}
58
58
  disabled={retrying}
59
- className="relative mt-6 inline-flex items-center gap-2 rounded-xl border border-ph-border bg-ph-canvas px-4 py-2 text-sm font-medium text-ph-ink transition hover:bg-ph-muted disabled:opacity-60"
59
+ className="ph-btn ph-btn-secondary relative mt-6"
60
60
  >
61
61
  {retrying ? (
62
62
  <Spinner size="sm" className={retrySpinnerClassName} />
@@ -68,7 +68,7 @@ export function SourceAppGlyph({
68
68
  <img
69
69
  src={SOURCE_APP_LOGOS[app]}
70
70
  alt=""
71
- className={cn("h-7 w-7 shrink-0 rounded-lg object-contain", className)}
71
+ className={cn("h-7 w-7 shrink-0 rounded-[var(--ph-radius-control)] object-contain", className)}
72
72
  />
73
73
  );
74
74
  }
@@ -210,11 +210,11 @@ export function TodayTopBar({
210
210
  {icon}
211
211
  </div>
212
212
  <div className="flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1">
213
- <h1 className="font-display text-[1.625rem] font-bold leading-tight tracking-tight text-ph-ink sm:text-[2.25rem]">
213
+ <h1 className="ph-page-title font-display font-semibold text-ph-ink">
214
214
  Today
215
215
  </h1>
216
216
  {appName ? (
217
- <span className="rounded-md bg-ph-muted px-2 py-0.5 text-[11px] font-semibold uppercase tracking-wide text-ph-subtle">
217
+ <span className="rounded-[var(--ph-radius-control)] bg-ph-muted px-2 py-0.5 text-[length:var(--ph-type-overline)] font-semibold uppercase tracking-wide text-ph-subtle">
218
218
  {appName}
219
219
  </span>
220
220
  ) : null}
@@ -226,7 +226,7 @@ export function TodayTopBar({
226
226
  type="button"
227
227
  onClick={onRefresh}
228
228
  disabled={refreshing || loading}
229
- className="press-subtle inline-flex h-10 w-10 items-center justify-center rounded-lg text-ph-subtle transition hover:bg-ph-surface hover:text-ph-ink disabled:opacity-50"
229
+ className="ph-btn ph-btn-ghost ph-btn-square press-subtle h-10 w-10 text-ph-subtle"
230
230
  data-test="today-refresh"
231
231
  aria-label="Refresh today"
232
232
  >
@@ -340,7 +340,7 @@ export function TodayPrimaryAction({
340
340
  dataTest?: string;
341
341
  }) {
342
342
  const classes = cn(
343
- "today-primary-action group relative flex w-full max-w-md items-center gap-3 overflow-hidden rounded-xl px-3.5 py-2.5 text-left transition sm:px-4 sm:py-3",
343
+ "today-primary-action group relative flex w-full max-w-md items-center gap-3 overflow-hidden rounded-[var(--ph-radius-surface)] px-3.5 py-2.5 text-left transition-colors focus-visible:outline-none focus-visible:shadow-[var(--ph-focus-halo)] sm:px-4 sm:py-3",
344
344
  `today-primary-action--${accent}`,
345
345
  active && "today-primary-action--active",
346
346
  loading && "pointer-events-none opacity-70",
@@ -349,7 +349,7 @@ export function TodayPrimaryAction({
349
349
 
350
350
  const body = (
351
351
  <>
352
- <span className="today-primary-action__icon inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-lg sm:h-10 sm:w-10">
352
+ <span className="today-primary-action__icon inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--ph-radius-control)] sm:h-10 sm:w-10">
353
353
  {icon}
354
354
  </span>
355
355
  <span className="min-w-0 flex-1">
@@ -363,7 +363,7 @@ export function TodayPrimaryAction({
363
363
  ) : null}
364
364
  </span>
365
365
  <span
366
- className="today-primary-action__chevron shrink-0 text-base opacity-60 transition group-hover:translate-x-0.5 group-hover:opacity-100"
366
+ className="today-primary-action__chevron shrink-0 text-base opacity-60 transition-[transform,opacity] group-hover:translate-x-0.5 group-hover:opacity-100"
367
367
  aria-hidden
368
368
  >
369
369
  →
@@ -415,7 +415,7 @@ export function TodayEmptyAction({
415
415
  }) {
416
416
  return (
417
417
  <div
418
- className="rounded-lg border border-dashed border-ph-border/80 bg-ph-muted/30 px-4 py-4 text-center"
418
+ className="rounded-[var(--ph-radius-surface)] border border-dashed border-ph-border/80 bg-[var(--ph-surface-inset)] px-4 py-4 text-center"
419
419
  data-test={dataTest}
420
420
  >
421
421
  <p className="text-sm font-semibold text-ph-ink">{title}</p>
@@ -496,7 +496,7 @@ export function TodayAskAiCard({
496
496
  href?: string;
497
497
  }) {
498
498
  const classes = cn(
499
- "group flex w-full items-start gap-3.5 rounded-2xl border border-ph-border/70 bg-ph-surface px-4 py-3.5 text-left shadow-[0_1px_12px_-8px_rgba(15,23,42,0.1)] transition hover:border-ph-brand/35 hover:bg-[color-mix(in_oklab,var(--ph-accent)_6%,var(--ph-surface))] sm:px-5",
499
+ "suite-press group flex w-full items-start gap-3.5 rounded-[var(--ph-radius-surface)] border border-ph-border/70 bg-ph-surface px-4 py-3.5 text-left transition-[background-color,border-color,box-shadow] hover:border-ph-brand/35 hover:bg-[var(--ph-surface-hover)] hover:shadow-[var(--ph-shadow-raised)] focus-visible:outline-none focus-visible:shadow-[var(--ph-focus-halo)] sm:px-5",
500
500
  className,
501
501
  );
502
502
 
@@ -575,7 +575,7 @@ export function TodaySection({
575
575
  <div className="flex min-w-0 items-start gap-3.5">
576
576
  <span
577
577
  className={cn(
578
- "inline-flex h-10 w-10 sm:h-11 sm:w-11 shrink-0 items-center justify-center rounded-2xl shadow-sm ring-1 ring-black/[0.06]",
578
+ "inline-flex h-10 w-10 sm:h-11 sm:w-11 shrink-0 items-center justify-center rounded-[var(--ph-radius-surface)] border border-ph-border/70 shadow-[var(--ph-shadow-control)]",
579
579
  iconClassName ?? "bg-ph-muted text-ph-ink",
580
580
  )}
581
581
  >
@@ -609,7 +609,7 @@ export function TodayPanel({
609
609
  return (
610
610
  <div
611
611
  className={cn(
612
- "border-ph-border/70 rounded-2xl border bg-ph-surface p-5 shadow-[0_1px_16px_-8px_rgba(15,23,42,0.12)] sm:p-5",
612
+ "rounded-[var(--ph-radius-surface)] border border-ph-border/70 bg-ph-surface p-5 sm:p-5",
613
613
  className,
614
614
  )}
615
615
  >
@@ -626,7 +626,7 @@ export function TodayEmptyState({
626
626
  description?: string;
627
627
  }) {
628
628
  return (
629
- <div className="border-ph-border/80 rounded-xl border border-dashed px-5 py-8 text-center">
629
+ <div className="rounded-[var(--ph-radius-surface)] border border-dashed border-ph-border/80 bg-[var(--ph-surface-inset)] px-5 py-8 text-center">
630
630
  <p className="text-sm font-semibold text-ph-ink">{title}</p>
631
631
  {description ? (
632
632
  <p className="mt-1.5 text-sm leading-relaxed text-ph-subtle">
@@ -77,9 +77,9 @@ export function SuiteWorkspaceSwitcher({
77
77
  trigger={
78
78
  <span
79
79
  className={cn(
80
- "flex min-w-0 max-w-full items-center gap-2 rounded-lg border border-ph-border bg-ph-muted text-left transition-colors hover:bg-ph-muted",
80
+ "flex min-w-0 max-w-full items-center gap-2 rounded-[var(--ph-radius-control)] border border-ph-border bg-[var(--ph-surface-inset)] text-left transition-colors hover:bg-[var(--ph-surface-hover)]",
81
81
  collapsed ? "h-10 w-10 justify-center p-0" : "w-full px-3 py-2",
82
- open && "border-ph-brand/40",
82
+ open && "border-[var(--ph-selected-border)] bg-[var(--ph-selected-bg)]",
83
83
  )}
84
84
  data-test="workspace-switcher-trigger"
85
85
  >
@@ -111,7 +111,7 @@ export function SuiteWorkspaceSwitcher({
111
111
  ) : (
112
112
  sections.map((section) => (
113
113
  <div key={section.id}>
114
- <p className="px-3 py-2 text-[10px] font-semibold uppercase tracking-[0.14em] text-ph-mutedtext">
114
+ <p className="px-3 py-2 text-[length:var(--ph-type-overline)] font-semibold uppercase tracking-[0.08em] text-ph-mutedtext">
115
115
  {section.label}
116
116
  </p>
117
117
  {section.workspaces.map((workspace) => (
@@ -11,6 +11,12 @@ export {
11
11
  type SuiteAppSelectOptions,
12
12
  } from "./components/app-switcher";
13
13
  export { SuiteNotificationBell } from "./components/suite-notification-bell";
14
+ export {
15
+ SuiteNotificationSettings,
16
+ type SuiteWebPushController,
17
+ type SuiteWebPushState,
18
+ type SuiteNotificationSettingsProps,
19
+ } from "./components/suite-notification-settings";
14
20
  export {
15
21
  SuiteNotificationsProvider,
16
22
  useSuiteNotifications,
@@ -23,6 +23,15 @@ const posthogThemePreset: Partial<Config> = {
23
23
  ],
24
24
  mono: ["var(--ph-font-monospace-stack)"],
25
25
  shortcut: ["var(--ph-font-shortcut-stack)"],
26
+ display: ["var(--ph-font-sans-stack)"],
27
+ },
28
+ fontSize: {
29
+ xs: ["var(--ph-type-meta)", { lineHeight: "var(--ph-leading-ui)" }],
30
+ sm: ["var(--ph-type-small)", { lineHeight: "var(--ph-leading-ui)" }],
31
+ base: ["var(--ph-type-body)", { lineHeight: "var(--ph-leading-body)" }],
32
+ lg: ["var(--ph-type-card)", { lineHeight: "1.4" }],
33
+ xl: ["var(--ph-type-subsection)", { lineHeight: "1.35" }],
34
+ "2xl": ["var(--ph-type-product-section)", { lineHeight: "1.25" }],
26
35
  },
27
36
  borderRadius: {
28
37
  lemon: "var(--ph-radius-app)",