@ponti-studios/ui 1.5.1 → 1.7.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 (77) hide show
  1. package/README.md +7 -11
  2. package/package.json +6 -31
  3. package/src/components/feedback/alert.tsx +8 -4
  4. package/src/components/feedback/index.ts +0 -4
  5. package/src/components/feedback/progress.stories.tsx +15 -0
  6. package/src/components/feedback/progress.tsx +14 -3
  7. package/src/components/feedback/update-guard.stories.tsx +4 -8
  8. package/src/components/feedback/update-guard.tsx +41 -272
  9. package/src/components/filters/filter-select.tsx +3 -5
  10. package/src/components/forms/date-picker.stories.tsx +158 -18
  11. package/src/components/forms/date-picker.tsx +286 -51
  12. package/src/components/forms/date-utils.ts +7 -2
  13. package/src/components/forms/drop-zone.tsx +11 -12
  14. package/src/components/forms/index.ts +2 -6
  15. package/src/components/forms/passkey-management.stories.tsx +8 -4
  16. package/src/components/forms/passkey-management.tsx +78 -42
  17. package/src/components/forms/radio-group.stories.tsx +3 -5
  18. package/src/components/forms/radio-group.tsx +2 -2
  19. package/src/components/forms/select.stories.tsx +16 -13
  20. package/src/components/forms/textarea.stories.tsx +1 -1
  21. package/src/components/layout/index.ts +2 -0
  22. package/src/components/layout/particle-background.stories.tsx +38 -0
  23. package/src/components/layout/particle-background.tsx +378 -0
  24. package/src/components/layout/scroll-area.stories.tsx +12 -4
  25. package/src/components/layout/scroll-area.tsx +41 -4
  26. package/src/components/navigation/tabs.stories.tsx +0 -21
  27. package/src/components/overlays/dialog.stories.tsx +38 -1
  28. package/src/components/overlays/dialog.tsx +53 -12
  29. package/src/components/overlays/index.ts +0 -11
  30. package/src/components/primitives/avatar-placeholder.svg +13 -0
  31. package/src/components/primitives/avatar.stories.tsx +2 -1
  32. package/src/components/primitives/badge.stories.tsx +13 -3
  33. package/src/components/primitives/badge.tsx +1 -1
  34. package/src/components/primitives/button.tsx +1 -1
  35. package/src/components/primitives/card.tsx +6 -2
  36. package/src/components/primitives/index.ts +0 -3
  37. package/src/index.ts +1 -3
  38. package/src/lib/index.ts +2 -3
  39. package/src/styles/animations.css +62 -0
  40. package/src/styles/index.css +27 -0
  41. package/src/styles/tokens/generated/dark.colors.generated.ts +15 -12
  42. package/src/styles/tokens/generated/dark.css +15 -12
  43. package/src/styles/tokens/generated/light.colors.generated.ts +14 -11
  44. package/src/styles/tokens/generated/light.css +14 -11
  45. package/src/styles/tokens/index.ts +0 -3
  46. package/src/styles/tokens/source/dark.tokens.json +24 -12
  47. package/src/styles/tokens/source/light.tokens.json +23 -11
  48. package/src/styles/tokens/typography.stories.tsx +157 -0
  49. package/src/components/feedback/file-upload-status.stories.tsx +0 -57
  50. package/src/components/feedback/file-upload-status.tsx +0 -160
  51. package/src/components/feedback/progress-bar.stories.tsx +0 -39
  52. package/src/components/feedback/progress-bar.tsx +0 -22
  53. package/src/components/forms/calendar.stories.tsx +0 -30
  54. package/src/components/forms/calendar.tsx +0 -70
  55. package/src/components/forms/date-field.stories.tsx +0 -164
  56. package/src/components/forms/date-field.tsx +0 -174
  57. package/src/components/overlays/alert-dialog.stories.tsx +0 -45
  58. package/src/components/overlays/alert-dialog.tsx +0 -116
  59. package/src/components/primitives/label.stories.tsx +0 -29
  60. package/src/components/primitives/label.tsx +0 -20
  61. package/src/components/primitives/status-badge.stories.tsx +0 -52
  62. package/src/components/primitives/status-badge.tsx +0 -33
  63. package/src/lib/create-memory-storage.ts +0 -24
  64. package/src/native/card.tsx +0 -36
  65. package/src/native/icon-button.tsx +0 -41
  66. package/src/native/index.ts +0 -38
  67. package/src/native/list-row.tsx +0 -67
  68. package/src/native/make-styles.ts +0 -32
  69. package/src/native/shadows.ts +0 -38
  70. package/src/native/text-field.tsx +0 -34
  71. package/src/native/uniwind.d.ts +0 -1
  72. package/src/native/use-theme-colors.ts +0 -19
  73. package/src/styles/tokens/foundations.stories.tsx +0 -109
  74. package/src/styles/tokens/generated/native.generated.ts +0 -266
  75. package/src/styles/tokens/normalize-native.ts +0 -88
  76. package/src/styles/tokens/source/native.tokens.json +0 -204
  77. package/src/styles/tokens/style-dictionary.native.mjs +0 -26
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
2
+ <title id="title">Portrait placeholder</title>
3
+ <desc id="desc">An illustrated portrait with warm coral and blue tones.</desc>
4
+ <rect width="256" height="256" fill="#dce8f2"/>
5
+ <circle cx="202" cy="54" r="34" fill="#ffb36b"/>
6
+ <path d="M0 214c36-34 74-47 112-39 37 8 63 34 79 81H0z" fill="#185a72"/>
7
+ <path d="M83 256c5-49 25-78 73-78 47 0 68 29 73 78z" fill="#ff704d"/>
8
+ <path d="M91 111c0-43 28-73 66-73s66 30 66 73c0 42-25 72-66 72s-66-30-66-72z" fill="#c97852"/>
9
+ <path d="M88 111c-2-46 25-79 70-79 42 0 68 29 68 72-14-16-31-26-51-30-23 27-52 39-87 37z" fill="#243746"/>
10
+ <circle cx="128" cy="116" r="5" fill="#243746"/>
11
+ <circle cx="176" cy="116" r="5" fill="#243746"/>
12
+ <path d="M137 145c8 6 17 6 25 0" fill="none" stroke="#243746" stroke-linecap="round" stroke-width="5"/>
13
+ </svg>
@@ -1,6 +1,7 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react-vite";
2
2
 
3
3
  import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage } from "./avatar";
4
+ import avatarPlaceholder from "./avatar-placeholder.svg";
4
5
 
5
6
  const meta = {
6
7
  title: "Primitives/Avatar",
@@ -14,7 +15,7 @@ type Story = StoryObj<typeof meta>;
14
15
  export const WithImage: Story = {
15
16
  render: () => (
16
17
  <Avatar>
17
- <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" />
18
+ <AvatarImage src={avatarPlaceholder} alt="Illustrated portrait" />
18
19
  <AvatarFallback>CN</AvatarFallback>
19
20
  </Avatar>
20
21
  ),
@@ -1,5 +1,6 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react-vite";
2
2
 
3
+ import { LucideAlertCircle, LucideDiamond, LucideNut } from "lucide-react";
3
4
  import { Badge } from "./badge";
4
5
 
5
6
  const meta = {
@@ -24,9 +25,18 @@ export const Default: Story = {
24
25
  export const Variants: Story = {
25
26
  render: () => (
26
27
  <div className="flex flex-wrap gap-3">
27
- <Badge variant="default">Default</Badge>
28
- <Badge variant="secondary">Secondary</Badge>
29
- <Badge variant="destructive">Destructive</Badge>
28
+ <Badge variant="default">
29
+ <LucideDiamond className="size-3" />
30
+ Default
31
+ </Badge>
32
+ <Badge variant="secondary">
33
+ <LucideNut className="size-3" />
34
+ Secondary
35
+ </Badge>
36
+ <Badge variant="destructive">
37
+ <LucideAlertCircle className="size-3" />
38
+ Destructive
39
+ </Badge>
30
40
  <Badge variant="outline">Outline</Badge>
31
41
  </div>
32
42
  ),
@@ -4,7 +4,7 @@ import * as React from "react";
4
4
  import { cn } from "../../lib/utils";
5
5
 
6
6
  const badgeVariants = cva(
7
- "state-settle inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden whitespace-nowrap rounded border border-transparent px-1.5 py-px text-xs font-medium [&>svg]:size-3 [&>svg]:pointer-events-none aria-invalid:border-destructive aria-invalid:ring-destructive/20",
7
+ "state-settle inline-flex w-fit shrink-0 items-center justify-center gap-2 overflow-hidden whitespace-nowrap rounded border border-transparent px-1.5 py-px text-xs font-medium [&>svg]:size-3 [&>svg]:pointer-events-none aria-invalid:border-destructive aria-invalid:ring-destructive/20",
8
8
  {
9
9
  variants: {
10
10
  variant: {
@@ -20,7 +20,7 @@ const buttonVariants = cva(
20
20
  outline: "border-input bg-background hover:bg-muted hover:text-muted-foreground",
21
21
  secondary: "border-input bg-secondary text-secondary-foreground hover:bg-secondary/80",
22
22
  ghost: "border-transparent bg-transparent hover:bg-muted hover:text-muted-foreground",
23
- link: "border-transparent bg-transparent px-0 text-primary underline-offset-4 hover:underline",
23
+ link: "border-transparent bg-transparent px-0 text-accent-text underline-offset-4 hover:underline",
24
24
  },
25
25
  size: {
26
26
  sm: "min-h-8 px-2.5 text-xs",
@@ -25,8 +25,12 @@ function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
25
25
  );
26
26
  }
27
27
 
28
- function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
29
- return <div data-slot="card-title" className={cn("text-xl", className)} {...props} />;
28
+ function CardTitle({ className, ...props }: React.ComponentProps<"h3">) {
29
+ return (
30
+ <h3 data-slot="card-title" className={cn("text-xl", className)} {...props}>
31
+ {props.children}
32
+ </h3>
33
+ );
30
34
  }
31
35
 
32
36
  function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
@@ -10,6 +10,3 @@ export {
10
10
  CardHeader,
11
11
  CardTitle,
12
12
  } from "./card";
13
- export { Label } from "./label";
14
- export { StatusBadge } from "./status-badge";
15
- export type { StatusBadgeConfig, StatusBadgeProps } from "./status-badge";
package/src/index.ts CHANGED
@@ -9,17 +9,16 @@ export { useMediaQuery } from "./hooks/use-media-query";
9
9
  export { useIsMobile } from "./hooks/use-mobile";
10
10
  export { normalizeOtp, OTP_LENGTH } from "./lib/auth";
11
11
  export { copyToClipboard } from "./lib/clipboard";
12
- export { createMemoryStorage } from "./lib/create-memory-storage";
13
12
  export { cn } from "./lib/utils";
14
13
  export { colors } from "./styles/tokens/css-vars";
15
14
  export {
16
15
  animations,
16
+ breakpoints,
17
17
  colorThemes,
18
18
  colorTokenNames,
19
19
  containers,
20
20
  easing,
21
21
  fontFamilies,
22
- fontFamiliesNative,
23
22
  fontWeights,
24
23
  leading,
25
24
  radii,
@@ -29,7 +28,6 @@ export {
29
28
  textSizes,
30
29
  tracking,
31
30
  transitionDurations,
32
- breakpoints,
33
31
  zIndices,
34
32
  } from "./styles/tokens/index";
35
33
  export type {
package/src/lib/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- export { cn } from "./utils";
2
- export { copyToClipboard } from "./clipboard";
3
- export { createMemoryStorage } from "./create-memory-storage";
4
1
  export { normalizeOtp, OTP_LENGTH } from "./auth";
2
+ export { copyToClipboard } from "./clipboard";
3
+ export { cn } from "./utils";
@@ -90,6 +90,14 @@
90
90
  opacity: 0;
91
91
  }
92
92
  }
93
+ @keyframes progress-shimmer {
94
+ from {
95
+ transform: translateX(-100%);
96
+ }
97
+ to {
98
+ transform: translateX(100%);
99
+ }
100
+ }
93
101
 
94
102
  .data-open\:animate-in[data-open],
95
103
  .data-open\:animate-in[data-state="open"] {
@@ -125,6 +133,44 @@
125
133
  animation: sheet-slide-out-bottom 200ms var(--ease-drawer);
126
134
  }
127
135
 
136
+ [data-slot="dialog-overlay"][data-open],
137
+ [data-slot="dialog-overlay"][data-state="open"] {
138
+ animation: fade-in 200ms var(--ease-out);
139
+ }
140
+ [data-slot="dialog-overlay"][data-closed],
141
+ [data-slot="dialog-overlay"][data-state="closed"] {
142
+ /* Must stay in lockstep with [data-slot="dialog-content"]'s close duration below (both 200ms) —
143
+ Base UI gates the whole portal's unmount on this element's own close-animation duration, not
144
+ the content panel's, so a mismatch here yanks the sliding/zooming panel off mid-animation. */
145
+ animation: fade-out 200ms var(--ease-in);
146
+ }
147
+
148
+ /* Mobile: bottom sheet, slides up from the edge it's anchored to. */
149
+ [data-slot="dialog-content"][data-open],
150
+ [data-slot="dialog-content"][data-state="open"] {
151
+ animation: sheet-slide-in-bottom 300ms var(--ease-drawer);
152
+ }
153
+ [data-slot="dialog-content"][data-closed],
154
+ [data-slot="dialog-content"][data-state="closed"] {
155
+ animation: sheet-slide-out-bottom 200ms var(--ease-drawer);
156
+ }
157
+
158
+ /* Desktop: centered card, fades and scales in place instead of sliding. */
159
+ @media (min-width: 640px) {
160
+ [data-slot="dialog-content"][data-open],
161
+ [data-slot="dialog-content"][data-state="open"] {
162
+ animation:
163
+ fade-in 150ms var(--ease-out),
164
+ zoom-in 150ms var(--ease-out);
165
+ }
166
+ [data-slot="dialog-content"][data-closed],
167
+ [data-slot="dialog-content"][data-state="closed"] {
168
+ animation:
169
+ fade-out 200ms var(--ease-in),
170
+ zoom-out 200ms var(--ease-in);
171
+ }
172
+ }
173
+
128
174
  @media (min-width: 768px) {
129
175
  [data-slot="sheet-content"][data-open],
130
176
  [data-slot="sheet-content"][data-state="open"] {
@@ -162,4 +208,20 @@
162
208
  [data-slot="sheet-content"][data-state="closed"] {
163
209
  animation: fade-out 120ms var(--ease-in) !important;
164
210
  }
211
+ [data-slot="dialog-overlay"][data-open],
212
+ [data-slot="dialog-overlay"][data-state="open"] {
213
+ animation: fade-in 120ms var(--ease-out) !important;
214
+ }
215
+ [data-slot="dialog-overlay"][data-closed],
216
+ [data-slot="dialog-overlay"][data-state="closed"] {
217
+ animation: fade-out 120ms var(--ease-in) !important;
218
+ }
219
+ [data-slot="dialog-content"][data-open],
220
+ [data-slot="dialog-content"][data-state="open"] {
221
+ animation: fade-in var(--duration-150) var(--ease-out) !important;
222
+ }
223
+ [data-slot="dialog-content"][data-closed],
224
+ [data-slot="dialog-content"][data-state="closed"] {
225
+ animation: fade-out 120ms var(--ease-in) !important;
226
+ }
165
227
  }
@@ -29,6 +29,7 @@
29
29
  --animate-fade-out: fade-out 120ms ease-in;
30
30
  --animate-zoom-in: zoom-in 150ms ease-out;
31
31
  --animate-zoom-out: zoom-out 120ms ease-in;
32
+ --animate-progress-shimmer: progress-shimmer 1.1s linear infinite;
32
33
  }
33
34
 
34
35
  @utility fade-in-0 {
@@ -63,6 +64,11 @@
63
64
  --color-muted-foreground: var(--text-secondary);
64
65
  --color-accent: var(--primary);
65
66
  --color-accent-foreground: var(--primary-foreground);
67
+ /* Distinct from --color-accent: that pairs with white/primary-foreground
68
+ * for solid fills (badges, active states). This pairs with the page
69
+ * background for standalone text/icons/borders (inline links, upload
70
+ * affordances) and must differ per theme to stay AA-compliant. */
71
+ --color-accent-text: var(--text-accent);
66
72
  --color-destructive: var(--destructive);
67
73
  --color-destructive-foreground: var(--destructive-foreground);
68
74
  /* Distinct from --color-destructive: that pairs with white for solid
@@ -71,7 +77,9 @@
71
77
  * messages, alert copy) and must differ per theme to stay AA-compliant. */
72
78
  --color-destructive-text: var(--text-destructive);
73
79
  --color-success: var(--success);
80
+ --color-success-foreground: var(--success-foreground);
74
81
  --color-warning: var(--warning);
82
+ --color-warning-foreground: var(--warning-foreground);
75
83
  --color-border: var(--border-default);
76
84
  --color-input: var(--border-default);
77
85
  --color-ring: var(--focus-ring);
@@ -178,6 +186,15 @@
178
186
  @utility scroll-fade-none {
179
187
  --scroll-fade-mask: none;
180
188
  }
189
+ /* Hides the native scrollbar so a custom overlay affordance (ScrollArea's
190
+ * Scrollbar/Thumb) can stand in for it. */
191
+ @utility scrollbar-hide {
192
+ scrollbar-width: none;
193
+ -ms-overflow-style: none;
194
+ &::-webkit-scrollbar {
195
+ display: none;
196
+ }
197
+ }
181
198
  @utility h-screen {
182
199
  height: 100vh;
183
200
  height: 100dvh;
@@ -279,6 +296,16 @@
279
296
  cursor: pointer;
280
297
  font-family: inherit;
281
298
  }
299
+ label {
300
+ color: var(--color-foreground);
301
+ font-size: var(--text-sm);
302
+ font-weight: var(--font-weight-medium);
303
+ line-height: 1;
304
+ }
305
+ :where(.peer:disabled) ~ label {
306
+ cursor: not-allowed;
307
+ opacity: 0.7;
308
+ }
282
309
  h1,
283
310
  h2,
284
311
  h3,
@@ -3,29 +3,32 @@
3
3
  */
4
4
 
5
5
  export default {
6
- background: "#111113",
7
- card: "#18191b",
8
- popover: "#212225",
9
- muted: "#18191b",
10
- "text-primary": "#edeef0",
11
- "text-secondary": "#b0b4ba",
12
- tertiary: "#777b84",
13
- primary: "#3e63dd",
6
+ background: "#171714",
7
+ card: "#1d1d19",
8
+ popover: "#22221e",
9
+ muted: "#1d1d19",
10
+ "text-primary": "#ffffff",
11
+ "text-secondary": "#aaa79f",
12
+ tertiary: "#d0ccc2",
13
+ primary: "#178277",
14
14
  destructive: "#ce2c31",
15
15
  success: "#30a46c",
16
16
  warning: "#ffc53d",
17
+ "success-foreground": "#15110f",
18
+ "warning-foreground": "#15110f",
17
19
  "primary-foreground": "#ffffff",
18
20
  "destructive-foreground": "#ffffff",
19
21
  "text-destructive": "#ff9592",
20
- "border-default": "#43484e",
21
- "focus-ring": "#3e63dd",
22
+ "text-accent": "#1b988b",
23
+ "border-default": "#6b6b66",
24
+ "focus-ring": "#1b988b",
22
25
  "chart-1": "#3e63dd",
23
26
  "chart-2": "#6e56cf",
24
- "chart-3": "#12a594",
27
+ "chart-3": "#c73178",
25
28
  "chart-4": "#f76b15",
26
29
  "chart-5": "#696e77",
27
30
  "chart-positive": "#30a46c",
28
31
  "chart-negative": "#e5484d",
29
- "chart-neutral": "#5a6169",
32
+ "chart-neutral": "#878d94",
30
33
  "overlay-scrim": "#000000",
31
34
  };
@@ -3,29 +3,32 @@
3
3
  */
4
4
 
5
5
  :root {
6
- --background: #111113;
7
- --card: #18191b;
8
- --popover: #212225;
9
- --muted: #18191b;
10
- --text-primary: #edeef0;
11
- --text-secondary: #b0b4ba;
12
- --tertiary: #777b84;
13
- --primary: #3e63dd;
6
+ --background: #171714;
7
+ --card: #1d1d19;
8
+ --popover: #22221e;
9
+ --muted: #1d1d19;
10
+ --text-primary: #ffffff;
11
+ --text-secondary: #aaa79f;
12
+ --tertiary: #d0ccc2;
13
+ --primary: #178277;
14
14
  --destructive: #ce2c31;
15
15
  --success: #30a46c;
16
16
  --warning: #ffc53d;
17
+ --success-foreground: #15110f;
18
+ --warning-foreground: #15110f;
17
19
  --primary-foreground: #ffffff;
18
20
  --destructive-foreground: #ffffff;
19
21
  --text-destructive: #ff9592;
20
- --border-default: #43484e;
21
- --focus-ring: #3e63dd;
22
+ --text-accent: #1b988b;
23
+ --border-default: #6b6b66;
24
+ --focus-ring: #1b988b;
22
25
  --chart-1: #3e63dd;
23
26
  --chart-2: #6e56cf;
24
- --chart-3: #12a594;
27
+ --chart-3: #c73178;
25
28
  --chart-4: #f76b15;
26
29
  --chart-5: #696e77;
27
30
  --chart-positive: #30a46c;
28
31
  --chart-negative: #e5484d;
29
- --chart-neutral: #5a6169;
32
+ --chart-neutral: #878d94;
30
33
  --overlay-scrim: #000000;
31
34
  }
@@ -3,25 +3,28 @@
3
3
  */
4
4
 
5
5
  export default {
6
- background: "#fcfcfd",
7
- card: "#f9f9fb",
8
- popover: "#f0f0f3",
9
- muted: "#f9f9fb",
10
- "text-primary": "#1c2024",
11
- "text-secondary": "#60646c",
12
- tertiary: "#80838d",
13
- primary: "#3e63dd",
6
+ background: "#f4f0e8",
7
+ card: "#fbf8f2",
8
+ popover: "#f6f2ea",
9
+ muted: "#efe9dc",
10
+ "text-primary": "#11110f",
11
+ "text-secondary": "#6a6352",
12
+ tertiary: "#6d6659",
13
+ primary: "#107066",
14
14
  destructive: "#ce2c31",
15
15
  success: "#30a46c",
16
16
  warning: "#ffc53d",
17
+ "success-foreground": "#15110f",
18
+ "warning-foreground": "#15110f",
17
19
  "primary-foreground": "#ffffff",
18
20
  "destructive-foreground": "#ffffff",
19
21
  "text-destructive": "#c82c31",
20
- "border-default": "#cdced6",
21
- "focus-ring": "#3e63dd",
22
+ "text-accent": "#107066",
23
+ "border-default": "#8f8576",
24
+ "focus-ring": "#107066",
22
25
  "chart-1": "#3e63dd",
23
26
  "chart-2": "#6e56cf",
24
- "chart-3": "#12a594",
27
+ "chart-3": "#c73178",
25
28
  "chart-4": "#f76b15",
26
29
  "chart-5": "#8b8d98",
27
30
  "chart-positive": "#1f7a50",
@@ -3,25 +3,28 @@
3
3
  */
4
4
 
5
5
  :root {
6
- --background: #fcfcfd;
7
- --card: #f9f9fb;
8
- --popover: #f0f0f3;
9
- --muted: #f9f9fb;
10
- --text-primary: #1c2024;
11
- --text-secondary: #60646c;
12
- --tertiary: #80838d;
13
- --primary: #3e63dd;
6
+ --background: #f4f0e8;
7
+ --card: #fbf8f2;
8
+ --popover: #f6f2ea;
9
+ --muted: #efe9dc;
10
+ --text-primary: #11110f;
11
+ --text-secondary: #6a6352;
12
+ --tertiary: #6d6659;
13
+ --primary: #107066;
14
14
  --destructive: #ce2c31;
15
15
  --success: #30a46c;
16
16
  --warning: #ffc53d;
17
+ --success-foreground: #15110f;
18
+ --warning-foreground: #15110f;
17
19
  --primary-foreground: #ffffff;
18
20
  --destructive-foreground: #ffffff;
19
21
  --text-destructive: #c82c31;
20
- --border-default: #cdced6;
21
- --focus-ring: #3e63dd;
22
+ --text-accent: #107066;
23
+ --border-default: #8f8576;
24
+ --focus-ring: #107066;
22
25
  --chart-1: #3e63dd;
23
26
  --chart-2: #6e56cf;
24
- --chart-3: #12a594;
27
+ --chart-3: #c73178;
25
28
  --chart-4: #f76b15;
26
29
  --chart-5: #8b8d98;
27
30
  --chart-positive: #1f7a50;
@@ -1,7 +1,6 @@
1
1
  import darkTokens from "./generated/dark.colors.generated";
2
2
  import foundations from "./generated/foundations.generated";
3
3
  import lightTokens from "./generated/light.colors.generated";
4
- import nativeTokens from "./generated/native.generated";
5
4
 
6
5
  const toPixels = (value: string) => {
7
6
  if (value.endsWith("rem")) return Number.parseFloat(value) * 16;
@@ -39,7 +38,6 @@ export const fontFamilies = Object.fromEntries(
39
38
  Object.entries(foundations.font).map(([key, value]) => [key, value.join(", ")]),
40
39
  ) as Record<keyof typeof foundations.font, string>;
41
40
 
42
- export const fontFamiliesNative = { sans: "System", serif: "serif", mono: "monospace" } as const;
43
41
  export const textSizes = Object.fromEntries(
44
42
  Object.entries(foundations.text).map(([key, value]) => [key, toPixels(value)]),
45
43
  ) as Record<keyof typeof foundations.text, number>;
@@ -63,7 +61,6 @@ export const transitionDurations = Object.fromEntries(
63
61
  Object.entries(foundations.duration).map(([key, value]) => [key, toMilliseconds(value)]),
64
62
  ) as Record<keyof typeof foundations.duration, number>;
65
63
  export const animations = foundations.animate;
66
- export const motion = nativeTokens.motion;
67
64
 
68
65
  export type RadiusToken = keyof typeof radii;
69
66
  export type TextSizeToken = keyof typeof textSizes;
@@ -4,35 +4,35 @@
4
4
  },
5
5
  "background": {
6
6
  "$type": "color",
7
- "$value": "rgb(17, 17, 19)"
7
+ "$value": "rgb(23, 23, 20)"
8
8
  },
9
9
  "card": {
10
10
  "$type": "color",
11
- "$value": "rgb(24, 25, 27)"
11
+ "$value": "rgb(29, 29, 25)"
12
12
  },
13
13
  "popover": {
14
14
  "$type": "color",
15
- "$value": "rgb(33, 34, 37)"
15
+ "$value": "rgb(34, 34, 30)"
16
16
  },
17
17
  "muted": {
18
18
  "$type": "color",
19
- "$value": "rgb(24, 25, 27)"
19
+ "$value": "rgb(29, 29, 25)"
20
20
  },
21
21
  "text-primary": {
22
22
  "$type": "color",
23
- "$value": "rgb(237, 238, 240)"
23
+ "$value": "rgb(255, 255, 255)"
24
24
  },
25
25
  "text-secondary": {
26
26
  "$type": "color",
27
- "$value": "rgb(176, 180, 186)"
27
+ "$value": "rgb(170, 167, 159)"
28
28
  },
29
29
  "tertiary": {
30
30
  "$type": "color",
31
- "$value": "rgb(119, 123, 132)"
31
+ "$value": "rgb(208, 204, 194)"
32
32
  },
33
33
  "primary": {
34
34
  "$type": "color",
35
- "$value": "rgb(62, 99, 221)"
35
+ "$value": "rgb(23, 130, 119)"
36
36
  },
37
37
  "destructive": {
38
38
  "$type": "color",
@@ -46,6 +46,14 @@
46
46
  "$type": "color",
47
47
  "$value": "rgb(255, 197, 61)"
48
48
  },
49
+ "success-foreground": {
50
+ "$type": "color",
51
+ "$value": "rgb(21, 17, 15)"
52
+ },
53
+ "warning-foreground": {
54
+ "$type": "color",
55
+ "$value": "rgb(21, 17, 15)"
56
+ },
49
57
  "primary-foreground": {
50
58
  "$type": "color",
51
59
  "$value": "rgb(255, 255, 255)"
@@ -58,13 +66,17 @@
58
66
  "$type": "color",
59
67
  "$value": "rgb(255, 149, 146)"
60
68
  },
69
+ "text-accent": {
70
+ "$type": "color",
71
+ "$value": "rgb(27, 152, 139)"
72
+ },
61
73
  "border-default": {
62
74
  "$type": "color",
63
- "$value": "rgb(67, 72, 78)"
75
+ "$value": "rgb(107, 107, 102)"
64
76
  },
65
77
  "focus-ring": {
66
78
  "$type": "color",
67
- "$value": "rgb(62, 99, 221)"
79
+ "$value": "rgb(27, 152, 139)"
68
80
  },
69
81
  "chart-1": {
70
82
  "$type": "color",
@@ -76,7 +88,7 @@
76
88
  },
77
89
  "chart-3": {
78
90
  "$type": "color",
79
- "$value": "rgb(18, 165, 148)"
91
+ "$value": "rgb(199, 49, 120)"
80
92
  },
81
93
  "chart-4": {
82
94
  "$type": "color",
@@ -96,7 +108,7 @@
96
108
  },
97
109
  "chart-neutral": {
98
110
  "$type": "color",
99
- "$value": "rgb(90, 97, 105)"
111
+ "$value": "rgb(135, 141, 148)"
100
112
  },
101
113
  "overlay-scrim": {
102
114
  "$type": "color",
@@ -4,35 +4,35 @@
4
4
  },
5
5
  "background": {
6
6
  "$type": "color",
7
- "$value": "rgb(252, 252, 253)"
7
+ "$value": "rgb(244, 240, 232)"
8
8
  },
9
9
  "card": {
10
10
  "$type": "color",
11
- "$value": "rgb(249, 249, 251)"
11
+ "$value": "rgb(251, 248, 242)"
12
12
  },
13
13
  "popover": {
14
14
  "$type": "color",
15
- "$value": "rgb(240, 240, 243)"
15
+ "$value": "rgb(246, 242, 234)"
16
16
  },
17
17
  "muted": {
18
18
  "$type": "color",
19
- "$value": "rgb(249, 249, 251)"
19
+ "$value": "rgb(239, 233, 220)"
20
20
  },
21
21
  "text-primary": {
22
22
  "$type": "color",
23
- "$value": "rgb(28, 32, 36)"
23
+ "$value": "rgb(17, 17, 15)"
24
24
  },
25
25
  "text-secondary": {
26
26
  "$type": "color",
27
- "$value": "rgb(96, 100, 108)"
27
+ "$value": "rgb(106, 99, 82)"
28
28
  },
29
29
  "tertiary": {
30
30
  "$type": "color",
31
- "$value": "rgb(128, 131, 141)"
31
+ "$value": "rgb(109, 102, 89)"
32
32
  },
33
33
  "primary": {
34
34
  "$type": "color",
35
- "$value": "rgb(62, 99, 221)"
35
+ "$value": "rgb(16, 112, 102)"
36
36
  },
37
37
  "destructive": {
38
38
  "$type": "color",
@@ -46,6 +46,14 @@
46
46
  "$type": "color",
47
47
  "$value": "rgb(255, 197, 61)"
48
48
  },
49
+ "success-foreground": {
50
+ "$type": "color",
51
+ "$value": "rgb(21, 17, 15)"
52
+ },
53
+ "warning-foreground": {
54
+ "$type": "color",
55
+ "$value": "rgb(21, 17, 15)"
56
+ },
49
57
  "primary-foreground": {
50
58
  "$type": "color",
51
59
  "$value": "rgb(255, 255, 255)"
@@ -58,13 +66,17 @@
58
66
  "$type": "color",
59
67
  "$value": "rgb(200, 44, 49)"
60
68
  },
69
+ "text-accent": {
70
+ "$type": "color",
71
+ "$value": "rgb(16, 112, 102)"
72
+ },
61
73
  "border-default": {
62
74
  "$type": "color",
63
- "$value": "rgb(205, 206, 214)"
75
+ "$value": "rgb(143, 133, 118)"
64
76
  },
65
77
  "focus-ring": {
66
78
  "$type": "color",
67
- "$value": "rgb(62, 99, 221)"
79
+ "$value": "rgb(16, 112, 102)"
68
80
  },
69
81
  "chart-1": {
70
82
  "$type": "color",
@@ -76,7 +88,7 @@
76
88
  },
77
89
  "chart-3": {
78
90
  "$type": "color",
79
- "$value": "rgb(18, 165, 148)"
91
+ "$value": "rgb(199, 49, 120)"
80
92
  },
81
93
  "chart-4": {
82
94
  "$type": "color",