@pantoia/ui 0.1.0 → 0.2.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 (63) hide show
  1. package/accordion/AGENTS.md +5 -5
  2. package/accordion/index.tsx +17 -9
  3. package/alert-dialog/AGENTS.md +7 -7
  4. package/alert-dialog/index.tsx +20 -10
  5. package/badge/AGENTS.md +5 -5
  6. package/badge/index.tsx +7 -7
  7. package/button/AGENTS.md +7 -7
  8. package/button/index.tsx +36 -36
  9. package/callout/AGENTS.md +4 -5
  10. package/callout/index.tsx +13 -14
  11. package/checkbox/AGENTS.md +5 -5
  12. package/checkbox/index.tsx +15 -13
  13. package/combobox/AGENTS.md +13 -13
  14. package/combobox/index.tsx +82 -38
  15. package/command-palette/AGENTS.md +3 -2
  16. package/command-palette/index.tsx +4 -2
  17. package/dialog/AGENTS.md +6 -6
  18. package/dialog/index.tsx +11 -5
  19. package/dist/index.js +63 -34
  20. package/drawer/AGENTS.md +5 -5
  21. package/drawer/index.tsx +8 -4
  22. package/dropdown-menu/AGENTS.md +12 -12
  23. package/dropdown-menu/index.tsx +23 -11
  24. package/field/AGENTS.md +8 -8
  25. package/field/index.tsx +27 -9
  26. package/input/AGENTS.md +4 -4
  27. package/input/index.tsx +8 -8
  28. package/kbd/AGENTS.md +1 -1
  29. package/kbd/index.tsx +6 -2
  30. package/label/AGENTS.md +1 -1
  31. package/label/index.tsx +3 -1
  32. package/number-field/AGENTS.md +6 -6
  33. package/number-field/index.tsx +22 -16
  34. package/package.json +3 -6
  35. package/popover/AGENTS.md +4 -4
  36. package/popover/index.tsx +14 -4
  37. package/press.css +7 -7
  38. package/radio-group/AGENTS.md +8 -8
  39. package/radio-group/index.tsx +20 -16
  40. package/registry.json +3 -51
  41. package/select/AGENTS.md +10 -10
  42. package/select/index.tsx +41 -23
  43. package/styles.css +291 -139
  44. package/switch/AGENTS.md +4 -4
  45. package/switch/index.tsx +13 -13
  46. package/table/AGENTS.md +9 -9
  47. package/table/index.tsx +17 -7
  48. package/tabs/AGENTS.md +4 -4
  49. package/tabs/index.module.css +1 -1
  50. package/tabs/index.tsx +17 -9
  51. package/textarea/AGENTS.md +4 -4
  52. package/textarea/index.tsx +8 -8
  53. package/toast/AGENTS.md +5 -13
  54. package/toast/index.tsx +31 -37
  55. package/toggle/AGENTS.md +4 -4
  56. package/toggle/index.tsx +10 -9
  57. package/tooltip/AGENTS.md +2 -2
  58. package/tooltip/index.tsx +14 -4
  59. package/code-block/AGENTS.md +0 -60
  60. package/code-block/index.module.css +0 -46
  61. package/code-block/index.tsx +0 -127
  62. package/copy-button/AGENTS.md +0 -43
  63. package/copy-button/index.tsx +0 -119
package/select/index.tsx CHANGED
@@ -8,17 +8,17 @@ import { tv } from '../tv'
8
8
 
9
9
  export const selectTrigger = tv({
10
10
  base: 'flex w-full items-center justify-between gap-tight rounded-r8'
11
- + ' text-value text-fg'
11
+ + ' text-value text-foreground'
12
12
  + ' transition-state'
13
- + ' invalid:ring-2 invalid:ring-danger'
14
- + ' focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring'
15
- + ' disabled:bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed'
16
- + ' unset:text-fg-placeholder',
13
+ + ' invalid:ring-2 invalid:ring-line-danger'
14
+ + ' focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-line-focus-ring'
15
+ + ' disabled:bg-bg-neutral-disabled disabled:text-foreground-disabled disabled:cursor-not-allowed'
16
+ + ' unset:text-foreground-placeholder',
17
17
 
18
18
  variants: {
19
19
  surface: {
20
20
  bare: 'bg-transparent ring-1 ring-inset ring-line-strong',
21
- well: 'bg-well',
21
+ well: 'bg-background-well',
22
22
  },
23
23
  size: {
24
24
  sm: 'h-8 px-3',
@@ -72,48 +72,56 @@ export function Select({
72
72
  <span className="min-w-0 truncate">
73
73
  <SelectPrimitive.Value placeholder={placeholder} />
74
74
  </span>
75
- <SelectPrimitive.Icon className="text-fg-subtle">
75
+ <SelectPrimitive.Icon className="text-foreground-subtle">
76
76
  <ChevronDown className="size-4" />
77
77
  </SelectPrimitive.Icon>
78
78
  </SelectPrimitive.Trigger>
79
79
 
80
80
  <SelectPrimitive.Portal>
81
81
  <SelectPrimitive.Content
82
- className="bg-float text-fg rounded-float shadow-s3 z-overlay
83
- min-w-(--radix-select-trigger-width) p-1
82
+ className="float text-foreground rounded-float z-overlay
83
+ min-w-(--radix-select-trigger-width) py-1
84
84
  open:animate-enter closed:animate-exit"
85
85
  position="popper"
86
86
  sideOffset={8}
87
87
  arrowPadding={16}
88
88
  >
89
- <SelectPrimitive.ScrollUpButton className="text-fg-subtle flex h-6 cursor-default items-center justify-center">
89
+ <SelectPrimitive.ScrollUpButton className="text-foreground-subtle flex h-6 cursor-default items-center justify-center">
90
90
  <ChevronUp className="size-4" />
91
91
  </SelectPrimitive.ScrollUpButton>
92
92
 
93
- <SelectPrimitive.Viewport className="flex flex-col gap-px">
93
+ <SelectPrimitive.Viewport className="flex flex-col gap-px px-1">
94
94
  {children}
95
95
  </SelectPrimitive.Viewport>
96
96
 
97
- <SelectPrimitive.ScrollDownButton className="text-fg-subtle flex h-6 cursor-default items-center justify-center">
97
+ <SelectPrimitive.ScrollDownButton className="text-foreground-subtle flex h-6 cursor-default items-center justify-center">
98
98
  <ChevronDown className="size-4" />
99
99
  </SelectPrimitive.ScrollDownButton>
100
100
 
101
- {arrow && <SelectPrimitive.Arrow className="fill-float" width={12} height={6} />}
101
+ {arrow && (
102
+ <SelectPrimitive.Arrow asChild width={12} height={6}>
103
+ <svg viewBox="0 0 12 6" preserveAspectRatio="none" className="fill-background-panel -translate-y-px">
104
+ <path d="M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0" className="stroke-line stroke-1" />
105
+ </svg>
106
+ </SelectPrimitive.Arrow>
107
+ )}
102
108
  </SelectPrimitive.Content>
103
109
  </SelectPrimitive.Portal>
104
110
  </SelectPrimitive.Root>
105
111
  )
106
112
  }
107
113
 
114
+ const selectGroup = tv({ base: 'flex flex-col gap-px' })
115
+
108
116
  export function SelectGroup({ label, className, children }: {
109
117
  label?: string
110
118
  className?: string
111
119
  children?: ReactNode
112
120
  }) {
113
121
  return (
114
- <SelectPrimitive.Group className={tv({ base: 'flex flex-col gap-px' })({ className })}>
122
+ <SelectPrimitive.Group className={selectGroup({ className })}>
115
123
  {label && (
116
- <SelectPrimitive.Label className="text-caption text-fg-subtle px-2 pb-1 pt-2">
124
+ <SelectPrimitive.Label className="text-caption text-foreground-subtle px-2 pb-1 pt-2">
117
125
  {label}
118
126
  </SelectPrimitive.Label>
119
127
  )}
@@ -122,6 +130,13 @@ export function SelectGroup({ label, className, children }: {
122
130
  )
123
131
  }
124
132
 
133
+ const selectItem = tv({
134
+ base: 'flex min-h-9 cursor-default items-center justify-between gap-stack'
135
+ + ' rounded-r8 px-2 py-1 transition-state'
136
+ + ' data-highlighted:bg-bg-neutral-hover data-highlighted:outline-none'
137
+ + ' data-disabled:text-foreground-disabled data-disabled:pointer-events-none',
138
+ })
139
+
125
140
  export function SelectItem({ value, disabled, className, children }: {
126
141
  value: string
127
142
  disabled?: boolean
@@ -132,38 +147,41 @@ export function SelectItem({ value, disabled, className, children }: {
132
147
  <SelectPrimitive.Item
133
148
  value={value}
134
149
  disabled={disabled}
135
- className={tv({ base: 'flex min-h-9 cursor-default items-center justify-between gap-stack'
136
- + ' rounded-r8 px-2 py-1 transition-state'
137
- + ' data-highlighted:bg-hover data-highlighted:outline-none'
138
- + ' data-disabled:text-fg-disabled data-disabled:pointer-events-none' })({ className })}
150
+ className={selectItem({ className })}
139
151
  >
140
152
  <span className="flex min-w-0 flex-col">
141
153
  {children}
142
154
  </span>
143
155
 
144
- <SelectPrimitive.ItemIndicator className="text-fg-muted flex shrink-0">
156
+ <SelectPrimitive.ItemIndicator className="text-foreground-muted flex shrink-0">
145
157
  <Check className="size-4" />
146
158
  </SelectPrimitive.ItemIndicator>
147
159
  </SelectPrimitive.Item>
148
160
  )
149
161
  }
150
162
 
163
+ const selectItemText = tv({ base: 'text-label text-foreground' })
164
+
151
165
  export function SelectItemText({ className, children }: { className?: string, children?: ReactNode }) {
152
166
  return (
153
- <SelectPrimitive.ItemText className={tv({ base: 'text-label text-fg' })({ className })}>
167
+ <SelectPrimitive.ItemText className={selectItemText({ className })}>
154
168
  {children}
155
169
  </SelectPrimitive.ItemText>
156
170
  )
157
171
  }
158
172
 
173
+ const selectItemDescription = tv({ base: 'text-caption text-foreground-subtle' })
174
+
159
175
  export function SelectItemDescription({ className, children }: { className?: string, children?: ReactNode }) {
160
176
  return (
161
- <span className={tv({ base: 'text-caption text-fg-subtle' })({ className })}>
177
+ <span className={selectItemDescription({ className })}>
162
178
  {children}
163
179
  </span>
164
180
  )
165
181
  }
166
182
 
183
+ const selectSeparator = tv({ base: 'bg-line -mx-1 my-1 h-px' })
184
+
167
185
  export function SelectSeparator({ className }: { className?: string }) {
168
- return <SelectPrimitive.Separator className={tv({ base: 'bg-line -mx-1 my-1 h-px' })({ className })} />
186
+ return <SelectPrimitive.Separator className={selectSeparator({ className })} />
169
187
  }
package/styles.css CHANGED
@@ -23,55 +23,118 @@
23
23
  @custom-variant menu-gutter (.menu:has(.menu-lead) &:not(:has(.menu-lead)));
24
24
 
25
25
  :root, .light {
26
- --gray-50:#f9fafb; --gray-100:#f2f4f6; --gray-200:#e5e8eb; --gray-300:#d1d6db;
27
- --gray-400:#b0b8c1; --gray-500:#8b95a1; --gray-600:#6b7684; --gray-700:#4e5968;
28
- --gray-800:#333d4b; --gray-900:#191f28;
26
+ --pds-gray-50:#f9fafb; --pds-gray-100:#f2f4f6; --pds-gray-200:#e5e8eb; --pds-gray-300:#d1d6db;
27
+ --pds-gray-400:#b0b8c1; --pds-gray-500:#8b95a1; --pds-gray-600:#6b7684; --pds-gray-700:#4e5968;
28
+ --pds-gray-800:#333d4b; --pds-gray-900:#191f28;
29
29
 
30
- --purple-50:#f5f1fd; --purple-100:#e4d6ff; --purple-200:#ceb0ff; --purple-300:#bb8ffa;
31
- --purple-400:#aa74f2; --purple-500:#9c63e4; --purple-600:#8750c9; --purple-700:#7543b0;
32
- --purple-800:#633997; --purple-900:#54317f;
30
+ --pds-brand-50:#f5f1fd; --pds-brand-100:#e4d6ff; --pds-brand-200:#ceb0ff; --pds-brand-300:#bb8ffa;
31
+ --pds-brand-400:#aa74f2; --pds-brand-500:#9c63e4; --pds-brand-600:#8750c9; --pds-brand-700:#7543b0;
32
+ --pds-brand-800:#633997; --pds-brand-900:#54317f;
33
33
 
34
- --blue-50:#e8f3ff; --blue-100:#c9e2ff; --blue-200:#90c2ff; --blue-300:#64a8ff;
35
- --blue-400:#4593fc; --blue-500:#3182f6; --blue-600:#2272eb; --blue-700:#1b64da;
36
- --blue-800:#1957c2; --blue-900:#194aa6;
34
+ --pds-blue-50:#e8f3ff; --pds-blue-100:#c9e2ff; --pds-blue-200:#90c2ff; --pds-blue-300:#64a8ff;
35
+ --pds-blue-400:#4593fc; --pds-blue-500:#3182f6; --pds-blue-600:#2272eb; --pds-blue-700:#1b64da;
36
+ --pds-blue-800:#1957c2; --pds-blue-900:#194aa6;
37
37
 
38
- --green-50:#f0faf6; --green-100:#aeefd5; --green-200:#76e4b8; --green-300:#3fd599;
39
- --green-400:#15c47e; --green-500:#03b26c; --green-600:#02a262; --green-700:#029359;
40
- --green-800:#028450; --green-900:#027648;
38
+ --pds-green-50:#f0faf6; --pds-green-100:#aeefd5; --pds-green-200:#76e4b8; --pds-green-300:#3fd599;
39
+ --pds-green-400:#15c47e; --pds-green-500:#03b26c; --pds-green-600:#02a262; --pds-green-700:#029359;
40
+ --pds-green-800:#028450; --pds-green-900:#027648;
41
41
 
42
- --orange-50:#fff3e0; --orange-100:#ffe0b0; --orange-200:#ffcd80; --orange-300:#ffbd51;
43
- --orange-400:#ffa927; --orange-500:#fe9800; --orange-600:#fb8800; --orange-700:#f57800;
44
- --orange-800:#ed6700; --orange-900:#e45600;
42
+ --pds-orange-50:#fff3e0; --pds-orange-100:#ffe0b0; --pds-orange-200:#ffcd80; --pds-orange-300:#ffbd51;
43
+ --pds-orange-400:#ffa927; --pds-orange-500:#fe9800; --pds-orange-600:#fb8800; --pds-orange-700:#f57800;
44
+ --pds-orange-800:#ed6700; --pds-orange-900:#e45600;
45
45
 
46
- --red-50:#ffeeee; --red-100:#ffd4d6; --red-200:#feafb4; --red-300:#fb8890;
47
- --red-400:#f66570; --red-500:#f04452; --red-600:#e42939; --red-700:#d22030;
48
- --red-800:#bc1b2a; --red-900:#a51926;
46
+ --pds-red-50:#ffeeee; --pds-red-100:#ffd4d6; --pds-red-200:#feafb4; --pds-red-300:#fb8890;
47
+ --pds-red-400:#f66570; --pds-red-500:#f04452; --pds-red-600:#e42939; --pds-red-700:#d22030;
48
+ --pds-red-800:#bc1b2a; --pds-red-900:#a51926;
49
49
  }
50
50
 
51
51
  .dark {
52
- --gray-50:#202027; --gray-100:#2c2c35; --gray-200:#3c3c47; --gray-300:#4d4d59;
53
- --gray-400:#62626d; --gray-500:#7e7e87; --gray-600:#9e9ea4; --gray-700:#c3c3c6;
54
- --gray-800:#e4e4e5; --gray-900:#ffffff;
52
+ --pds-gray-50:#202027; --pds-gray-100:#2c2c35; --pds-gray-200:#3c3c47; --pds-gray-300:#4d4d59;
53
+ --pds-gray-400:#62626d; --pds-gray-500:#7e7e87; --pds-gray-600:#9e9ea4; --pds-gray-700:#c3c3c6;
54
+ --pds-gray-800:#e4e4e5; --pds-gray-900:#ffffff;
55
55
 
56
- --purple-50:#362949; --purple-100:#462e66; --purple-200:#583682; --purple-300:#6b3fa0;
57
- --purple-400:#8451c4; --purple-500:#9c63e4; --purple-600:#ad75f7; --purple-700:#c094ff;
58
- --purple-800:#d6baff; --purple-900:#eadeff;
56
+ --pds-brand-50:#362949; --pds-brand-100:#462e66; --pds-brand-200:#583682; --pds-brand-300:#6b3fa0;
57
+ --pds-brand-400:#8451c4; --pds-brand-500:#9c63e4; --pds-brand-600:#ad75f7; --pds-brand-700:#c094ff;
58
+ --pds-brand-800:#d6baff; --pds-brand-900:#eadeff;
59
59
 
60
- --blue-50:#202c4d; --blue-100:#23386a; --blue-200:#25478c; --blue-300:#265ab3;
61
- --blue-400:#2970d9; --blue-500:#3485fa; --blue-600:#449bff; --blue-700:#61b0ff;
62
- --blue-800:#8fcdff; --blue-900:#c8e7ff;
60
+ --pds-blue-50:#202c4d; --pds-blue-100:#23386a; --pds-blue-200:#25478c; --pds-blue-300:#265ab3;
61
+ --pds-blue-400:#2970d9; --pds-blue-500:#3485fa; --pds-blue-600:#449bff; --pds-blue-700:#61b0ff;
62
+ --pds-blue-800:#8fcdff; --pds-blue-900:#c8e7ff;
63
63
 
64
- --green-50:#153729; --green-100:#135338; --green-200:#136d47; --green-300:#138a59;
65
- --green-400:#13a065; --green-500:#16bb76; --green-600:#26cf88; --green-700:#4ee4a6;
66
- --green-800:#82f6c5; --green-900:#ccffea;
64
+ --pds-green-50:#153729; --pds-green-100:#135338; --pds-green-200:#136d47; --pds-green-300:#138a59;
65
+ --pds-green-400:#13a065; --pds-green-500:#16bb76; --pds-green-600:#26cf88; --pds-green-700:#4ee4a6;
66
+ --pds-green-800:#82f6c5; --pds-green-900:#ccffea;
67
67
 
68
- --orange-50:#3d2500; --orange-100:#563200; --orange-200:#804600; --orange-300:#a85f00;
69
- --orange-400:#cf7200; --orange-500:#f18600; --orange-600:#fd9528; --orange-700:#ffa861;
70
- --orange-800:#ffc39e; --orange-900:#ffe4d6;
68
+ --pds-orange-50:#3d2500; --pds-orange-100:#563200; --pds-orange-200:#804600; --pds-orange-300:#a85f00;
69
+ --pds-orange-400:#cf7200; --pds-orange-500:#f18600; --pds-orange-600:#fd9528; --pds-orange-700:#ffa861;
70
+ --pds-orange-800:#ffc39e; --pds-orange-900:#ffe4d6;
71
71
 
72
- --red-50:#3c2020; --red-100:#562025; --red-200:#7a242d; --red-300:#9e2733;
73
- --red-400:#ca2f3d; --red-500:#f04251; --red-600:#fa616d; --red-700:#fe818b;
74
- --red-800:#ffa8ad; --red-900:#ffd1d3;
72
+ --pds-red-50:#3c2020; --pds-red-100:#562025; --pds-red-200:#7a242d; --pds-red-300:#9e2733;
73
+ --pds-red-400:#ca2f3d; --pds-red-500:#f04251; --pds-red-600:#fa616d; --pds-red-700:#fe818b;
74
+ --pds-red-800:#ffa8ad; --pds-red-900:#ffd1d3;
75
+ }
76
+
77
+ @theme inline {
78
+ --color-pds-gray-50: var(--pds-gray-50);
79
+ --color-pds-gray-100: var(--pds-gray-100);
80
+ --color-pds-gray-200: var(--pds-gray-200);
81
+ --color-pds-gray-300: var(--pds-gray-300);
82
+ --color-pds-gray-400: var(--pds-gray-400);
83
+ --color-pds-gray-500: var(--pds-gray-500);
84
+ --color-pds-gray-600: var(--pds-gray-600);
85
+ --color-pds-gray-700: var(--pds-gray-700);
86
+ --color-pds-gray-800: var(--pds-gray-800);
87
+ --color-pds-gray-900: var(--pds-gray-900);
88
+ --color-pds-brand-50: var(--pds-brand-50);
89
+ --color-pds-brand-100: var(--pds-brand-100);
90
+ --color-pds-brand-200: var(--pds-brand-200);
91
+ --color-pds-brand-300: var(--pds-brand-300);
92
+ --color-pds-brand-400: var(--pds-brand-400);
93
+ --color-pds-brand-500: var(--pds-brand-500);
94
+ --color-pds-brand-600: var(--pds-brand-600);
95
+ --color-pds-brand-700: var(--pds-brand-700);
96
+ --color-pds-brand-800: var(--pds-brand-800);
97
+ --color-pds-brand-900: var(--pds-brand-900);
98
+ --color-pds-blue-50: var(--pds-blue-50);
99
+ --color-pds-blue-100: var(--pds-blue-100);
100
+ --color-pds-blue-200: var(--pds-blue-200);
101
+ --color-pds-blue-300: var(--pds-blue-300);
102
+ --color-pds-blue-400: var(--pds-blue-400);
103
+ --color-pds-blue-500: var(--pds-blue-500);
104
+ --color-pds-blue-600: var(--pds-blue-600);
105
+ --color-pds-blue-700: var(--pds-blue-700);
106
+ --color-pds-blue-800: var(--pds-blue-800);
107
+ --color-pds-blue-900: var(--pds-blue-900);
108
+ --color-pds-green-50: var(--pds-green-50);
109
+ --color-pds-green-100: var(--pds-green-100);
110
+ --color-pds-green-200: var(--pds-green-200);
111
+ --color-pds-green-300: var(--pds-green-300);
112
+ --color-pds-green-400: var(--pds-green-400);
113
+ --color-pds-green-500: var(--pds-green-500);
114
+ --color-pds-green-600: var(--pds-green-600);
115
+ --color-pds-green-700: var(--pds-green-700);
116
+ --color-pds-green-800: var(--pds-green-800);
117
+ --color-pds-green-900: var(--pds-green-900);
118
+ --color-pds-orange-50: var(--pds-orange-50);
119
+ --color-pds-orange-100: var(--pds-orange-100);
120
+ --color-pds-orange-200: var(--pds-orange-200);
121
+ --color-pds-orange-300: var(--pds-orange-300);
122
+ --color-pds-orange-400: var(--pds-orange-400);
123
+ --color-pds-orange-500: var(--pds-orange-500);
124
+ --color-pds-orange-600: var(--pds-orange-600);
125
+ --color-pds-orange-700: var(--pds-orange-700);
126
+ --color-pds-orange-800: var(--pds-orange-800);
127
+ --color-pds-orange-900: var(--pds-orange-900);
128
+ --color-pds-red-50: var(--pds-red-50);
129
+ --color-pds-red-100: var(--pds-red-100);
130
+ --color-pds-red-200: var(--pds-red-200);
131
+ --color-pds-red-300: var(--pds-red-300);
132
+ --color-pds-red-400: var(--pds-red-400);
133
+ --color-pds-red-500: var(--pds-red-500);
134
+ --color-pds-red-600: var(--pds-red-600);
135
+ --color-pds-red-700: var(--pds-red-700);
136
+ --color-pds-red-800: var(--pds-red-800);
137
+ --color-pds-red-900: var(--pds-red-900);
75
138
  }
76
139
 
77
140
  @theme {
@@ -137,8 +200,6 @@
137
200
  src: url("@fontsource/jetbrains-mono/files/jetbrains-mono-latin-400-normal.woff2") format("woff2");
138
201
  font-weight: 400;
139
202
  font-display: swap;
140
- /* [TODO] size-adjust 를 지운다 — 시각 기준 이미지가 서고 나서 */
141
- size-adjust: 96%;
142
203
  unicode-range: U+0000-00FF, U+2000-206F;
143
204
  }
144
205
 
@@ -147,94 +208,194 @@
147
208
  .dark { color-scheme: dark; }
148
209
 
149
210
  body {
150
- background-color: var(--color-canvas);
151
- color: var(--color-fg);
211
+ background-color: var(--color-background);
212
+ color: var(--color-foreground);
152
213
  font-family: var(--font-sans);
153
214
  }
154
215
 
155
216
  code, pre, kbd, samp { font-family: var(--font-mono); }
156
217
  }
157
218
 
158
- @theme inline {
159
- --color-white:#ffffff;
160
- --color-black:#000000;
161
-
162
- --color-canvas: var(--ui-canvas);
163
- --color-well: var(--ui-well);
164
- --color-panel: var(--ui-panel);
165
- --color-float: var(--ui-float);
166
- --color-disabled: var(--gray-200);
167
-
168
- --color-hover: var(--ui-hover);
169
- --color-selected: var(--ui-selected);
170
- --color-selected-hover: var(--ui-selected-hover);
171
-
172
- --color-control-on: var(--gray-900);
173
- --color-control-on-hover: var(--gray-800);
174
- --color-control-on-disabled: var(--gray-600);
175
- --color-fg-on-control: var(--gray-50);
176
-
177
- --color-fg: var(--gray-900);
178
- --color-fg-muted: var(--gray-700);
179
- --color-fg-subtle: var(--gray-500);
180
- --color-fg-placeholder: var(--gray-400);
181
- --color-fg-disabled: var(--gray-600);
182
- --color-fg-on-solid:#ffffff;
183
-
184
- --color-line: var(--gray-200);
185
- --color-line-strong: var(--gray-300);
186
- --color-ring: var(--blue-500);
187
-
188
- --color-neutral-solid: var(--gray-900);
189
- --color-neutral-solid-hover: var(--gray-800);
190
-
191
- --color-primary-solid: var(--purple-500);
192
- --color-primary-solid-hover: var(--purple-600);
193
- --color-primary-weak: var(--purple-50);
194
- --color-primary-on-weak: var(--purple-700);
195
- --color-primary-stroke: var(--purple-200);
196
-
197
- --color-info: var(--blue-500);
198
- --color-info-weak: var(--blue-50);
199
- --color-info-on-weak: var(--blue-700);
200
- --color-info-stroke: var(--blue-200);
201
-
202
- --color-success: var(--green-500);
203
- --color-success-weak: var(--green-50);
204
- --color-success-on-weak: var(--green-700);
205
- --color-success-stroke: var(--green-200);
206
-
207
- --color-warning: var(--orange-500);
208
- --color-warning-weak: var(--orange-50);
209
- --color-warning-on-weak: var(--orange-700);
210
- --color-warning-stroke: var(--orange-200);
211
-
212
- --color-danger: var(--red-500);
213
- --color-danger-weak: var(--red-50);
214
- --color-danger-on-weak: var(--red-700);
215
- --color-danger-stroke: var(--red-200);
216
- --color-danger-solid: var(--red-500);
217
- --color-danger-solid-hover: var(--red-600);
218
- }
219
-
220
219
  :root, .light {
221
- --ui-canvas:#ffffff;
222
- --ui-well:#f2f4f6;
223
- --ui-panel:#ffffff;
224
- --ui-float:#ffffff;
225
- --ui-hover: rgba(0,23,51,0.02);
226
- --ui-selected: rgba(2,32,71,0.05);
227
- --ui-selected-hover: rgba(0,27,55,0.1);
220
+ --pds-background: #ffffff;
221
+ --pds-background-overlay: rgba(0,0,0,0.2);
222
+ --pds-background-panel: #ffffff;
223
+ --pds-background-well: #f2f4f6;
224
+
225
+ --pds-bg-brand-solid: var(--pds-brand-500);
226
+ --pds-bg-brand-solid-hover: var(--pds-brand-600);
227
+ --pds-bg-brand-weak: var(--pds-brand-50);
228
+ --pds-bg-danger-solid: var(--pds-red-500);
229
+ --pds-bg-danger-solid-hover: var(--pds-red-600);
230
+ --pds-bg-danger-weak: var(--pds-red-50);
231
+ --pds-bg-info-solid: var(--pds-blue-500);
232
+ --pds-bg-info-weak: var(--pds-blue-50);
233
+ --pds-bg-neutral-disabled: var(--pds-gray-200);
234
+ --pds-bg-neutral-hover: rgba(0,23,51,0.02);
235
+ --pds-bg-neutral-knob: #ffffff;
236
+ --pds-bg-neutral-selected: rgba(2,32,71,0.05);
237
+ --pds-bg-neutral-selected-hover: rgba(0,27,55,0.1);
238
+ --pds-bg-neutral-solid: var(--pds-gray-900);
239
+ --pds-bg-neutral-solid-checked-disabled: var(--pds-gray-600);
240
+ --pds-bg-neutral-solid-hover: var(--pds-gray-800);
241
+ --pds-bg-success-solid: var(--pds-green-500);
242
+ --pds-bg-success-weak: var(--pds-green-50);
243
+ --pds-bg-warning-solid: var(--pds-orange-500);
244
+ --pds-bg-warning-weak: var(--pds-orange-50);
245
+
246
+ --pds-fg-brand-contrast: var(--pds-brand-700);
247
+ --pds-fg-brand-solid-contrast: #ffffff;
248
+ --pds-fg-danger: var(--pds-red-500);
249
+ --pds-fg-danger-contrast: var(--pds-red-700);
250
+ --pds-fg-info: var(--pds-blue-500);
251
+ --pds-fg-info-contrast: var(--pds-blue-700);
252
+ --pds-fg-neutral-solid-contrast: var(--pds-gray-50);
253
+ --pds-fg-success: var(--pds-green-500);
254
+ --pds-fg-success-contrast: var(--pds-green-700);
255
+ --pds-fg-warning: var(--pds-orange-500);
256
+ --pds-fg-warning-contrast: var(--pds-orange-700);
257
+
258
+ --pds-line-brand-weak: var(--pds-brand-200);
259
+ --pds-line-danger: var(--pds-red-500);
260
+ --pds-line-danger-weak: var(--pds-red-200);
261
+ --pds-line-focus-ring: var(--pds-blue-500);
262
+ --pds-line-info: var(--pds-blue-500);
263
+ --pds-line-info-weak: var(--pds-blue-200);
264
+ --pds-line-neutral-solid: var(--pds-gray-900);
265
+ --pds-line-strong: var(--pds-gray-300);
266
+ --pds-line-success: var(--pds-green-500);
267
+ --pds-line-success-weak: var(--pds-green-200);
268
+ --pds-line-warning: var(--pds-orange-500);
269
+ --pds-line-warning-weak: var(--pds-orange-200);
270
+
271
+ --pds-black: #000000;
272
+ --pds-foreground: var(--pds-gray-900);
273
+ --pds-foreground-disabled: var(--pds-gray-600);
274
+ --pds-foreground-muted: var(--pds-gray-700);
275
+ --pds-foreground-placeholder: var(--pds-gray-400);
276
+ --pds-foreground-subtle: var(--pds-gray-500);
277
+ --pds-line: var(--pds-gray-200);
278
+ --pds-white: #ffffff;
228
279
  }
229
280
 
230
281
  .dark {
231
- --ui-canvas:#17171c;
232
- --ui-well:#101013;
233
- --ui-panel:#202027;
234
- --ui-float:#2c2c35;
235
- --ui-hover: rgba(209,209,253,0.05);
236
- --ui-selected: rgba(217,217,255,0.11);
237
- --ui-selected-hover: rgba(222,222,255,0.19);
282
+ --pds-background: #17171c;
283
+ --pds-background-overlay: rgba(0,0,0,0.56);
284
+ --pds-background-panel: #202027;
285
+ --pds-background-well: #101013;
286
+
287
+ --pds-bg-brand-solid: var(--pds-brand-500);
288
+ --pds-bg-brand-solid-hover: var(--pds-brand-600);
289
+ --pds-bg-brand-weak: var(--pds-brand-50);
290
+ --pds-bg-danger-solid: var(--pds-red-500);
291
+ --pds-bg-danger-solid-hover: var(--pds-red-600);
292
+ --pds-bg-danger-weak: var(--pds-red-50);
293
+ --pds-bg-info-solid: var(--pds-blue-500);
294
+ --pds-bg-info-weak: var(--pds-blue-50);
295
+ --pds-bg-neutral-disabled: var(--pds-gray-200);
296
+ --pds-bg-neutral-hover: rgba(209,209,253,0.05);
297
+ --pds-bg-neutral-knob: #2c2c35;
298
+ --pds-bg-neutral-selected: rgba(217,217,255,0.11);
299
+ --pds-bg-neutral-selected-hover: rgba(222,222,255,0.19);
300
+ --pds-bg-neutral-solid: var(--pds-gray-900);
301
+ --pds-bg-neutral-solid-checked-disabled: var(--pds-gray-600);
302
+ --pds-bg-neutral-solid-hover: var(--pds-gray-800);
303
+ --pds-bg-success-solid: var(--pds-green-500);
304
+ --pds-bg-success-weak: var(--pds-green-50);
305
+ --pds-bg-warning-solid: var(--pds-orange-500);
306
+ --pds-bg-warning-weak: var(--pds-orange-50);
307
+
308
+ --pds-fg-brand-contrast: var(--pds-brand-700);
309
+ --pds-fg-brand-solid-contrast: #ffffff;
310
+ --pds-fg-danger: var(--pds-red-500);
311
+ --pds-fg-danger-contrast: var(--pds-red-700);
312
+ --pds-fg-info: var(--pds-blue-500);
313
+ --pds-fg-info-contrast: var(--pds-blue-700);
314
+ --pds-fg-neutral-solid-contrast: var(--pds-gray-50);
315
+ --pds-fg-success: var(--pds-green-500);
316
+ --pds-fg-success-contrast: var(--pds-green-700);
317
+ --pds-fg-warning: var(--pds-orange-500);
318
+ --pds-fg-warning-contrast: var(--pds-orange-700);
319
+
320
+ --pds-line-brand-weak: var(--pds-brand-200);
321
+ --pds-line-danger: var(--pds-red-500);
322
+ --pds-line-danger-weak: var(--pds-red-200);
323
+ --pds-line-focus-ring: var(--pds-blue-500);
324
+ --pds-line-info: var(--pds-blue-500);
325
+ --pds-line-info-weak: var(--pds-blue-200);
326
+ --pds-line-neutral-solid: var(--pds-gray-900);
327
+ --pds-line-strong: var(--pds-gray-300);
328
+ --pds-line-success: var(--pds-green-500);
329
+ --pds-line-success-weak: var(--pds-green-200);
330
+ --pds-line-warning: var(--pds-orange-500);
331
+ --pds-line-warning-weak: var(--pds-orange-200);
332
+
333
+ --pds-black: #000000;
334
+ --pds-foreground: var(--pds-gray-900);
335
+ --pds-foreground-disabled: var(--pds-gray-600);
336
+ --pds-foreground-muted: var(--pds-gray-700);
337
+ --pds-foreground-placeholder: var(--pds-gray-400);
338
+ --pds-foreground-subtle: var(--pds-gray-500);
339
+ --pds-line: var(--pds-gray-200);
340
+ --pds-white: #ffffff;
341
+ }
342
+
343
+ @theme inline {
344
+ --color-background: var(--pds-background);
345
+ --color-background-overlay: var(--pds-background-overlay);
346
+ --color-background-panel: var(--pds-background-panel);
347
+ --color-background-well: var(--pds-background-well);
348
+ --color-bg-brand-solid: var(--pds-bg-brand-solid);
349
+ --color-bg-brand-solid-hover: var(--pds-bg-brand-solid-hover);
350
+ --color-bg-brand-weak: var(--pds-bg-brand-weak);
351
+ --color-bg-danger-solid: var(--pds-bg-danger-solid);
352
+ --color-bg-danger-solid-hover: var(--pds-bg-danger-solid-hover);
353
+ --color-bg-danger-weak: var(--pds-bg-danger-weak);
354
+ --color-bg-info-solid: var(--pds-bg-info-solid);
355
+ --color-bg-info-weak: var(--pds-bg-info-weak);
356
+ --color-bg-neutral-disabled: var(--pds-bg-neutral-disabled);
357
+ --color-bg-neutral-hover: var(--pds-bg-neutral-hover);
358
+ --color-bg-neutral-knob: var(--pds-bg-neutral-knob);
359
+ --color-bg-neutral-selected: var(--pds-bg-neutral-selected);
360
+ --color-bg-neutral-selected-hover: var(--pds-bg-neutral-selected-hover);
361
+ --color-bg-neutral-solid: var(--pds-bg-neutral-solid);
362
+ --color-bg-neutral-solid-checked-disabled: var(--pds-bg-neutral-solid-checked-disabled);
363
+ --color-bg-neutral-solid-hover: var(--pds-bg-neutral-solid-hover);
364
+ --color-bg-success-solid: var(--pds-bg-success-solid);
365
+ --color-bg-success-weak: var(--pds-bg-success-weak);
366
+ --color-bg-warning-solid: var(--pds-bg-warning-solid);
367
+ --color-bg-warning-weak: var(--pds-bg-warning-weak);
368
+ --color-fg-brand-contrast: var(--pds-fg-brand-contrast);
369
+ --color-fg-brand-solid-contrast: var(--pds-fg-brand-solid-contrast);
370
+ --color-fg-danger: var(--pds-fg-danger);
371
+ --color-fg-danger-contrast: var(--pds-fg-danger-contrast);
372
+ --color-fg-info: var(--pds-fg-info);
373
+ --color-fg-info-contrast: var(--pds-fg-info-contrast);
374
+ --color-fg-neutral-solid-contrast: var(--pds-fg-neutral-solid-contrast);
375
+ --color-fg-success: var(--pds-fg-success);
376
+ --color-fg-success-contrast: var(--pds-fg-success-contrast);
377
+ --color-fg-warning: var(--pds-fg-warning);
378
+ --color-fg-warning-contrast: var(--pds-fg-warning-contrast);
379
+ --color-line-brand-weak: var(--pds-line-brand-weak);
380
+ --color-line-danger: var(--pds-line-danger);
381
+ --color-line-danger-weak: var(--pds-line-danger-weak);
382
+ --color-line-focus-ring: var(--pds-line-focus-ring);
383
+ --color-line-info: var(--pds-line-info);
384
+ --color-line-info-weak: var(--pds-line-info-weak);
385
+ --color-line-neutral-solid: var(--pds-line-neutral-solid);
386
+ --color-line-strong: var(--pds-line-strong);
387
+ --color-line-success: var(--pds-line-success);
388
+ --color-line-success-weak: var(--pds-line-success-weak);
389
+ --color-line-warning: var(--pds-line-warning);
390
+ --color-line-warning-weak: var(--pds-line-warning-weak);
391
+ --color-black: var(--pds-black);
392
+ --color-foreground: var(--pds-foreground);
393
+ --color-foreground-disabled: var(--pds-foreground-disabled);
394
+ --color-foreground-muted: var(--pds-foreground-muted);
395
+ --color-foreground-placeholder: var(--pds-foreground-placeholder);
396
+ --color-foreground-subtle: var(--pds-foreground-subtle);
397
+ --color-line: var(--pds-line);
398
+ --color-white: var(--pds-white);
238
399
  }
239
400
 
240
401
  @theme {
@@ -309,39 +470,30 @@
309
470
  @theme {
310
471
  --shadow-*: initial;
311
472
 
312
- --shadow-s1: 0 1px 4px 0 var(--shade-1);
313
- --shadow-s2: 0 2px 10px 0 var(--shade-2);
314
- --shadow-s3: 0 4px 16px 0 var(--shade-3);
473
+ --shadow-s1: 0 1px 4px 0 var(--pds-shadow-1);
474
+ --shadow-s2: 0 2px 10px 0 var(--pds-shadow-2);
475
+ --shadow-s3: 0 4px 16px 0 var(--pds-shadow-3);
315
476
  }
316
477
 
317
- :root, .light { --shade-1:#00000014; --shade-2:#0000001a; --shade-3:#0000001f; }
318
- .dark { --shade-1:#00000080; --shade-2:#000000ad; --shade-3:#000000cc; }
319
-
320
- @theme inline {
321
- --color-overlay: var(--ui-overlay);
322
- }
323
- :root, .light { --ui-overlay: rgba(0,0,0,0.2); }
324
- .dark { --ui-overlay: rgba(0,0,0,0.56); }
478
+ :root, .light { --pds-shadow-1:#00000014; --pds-shadow-2:#0000001a; --pds-shadow-3:#0000001f; }
479
+ .dark { --pds-shadow-1:#00000080; --pds-shadow-2:#000000ad; --pds-shadow-3:#000000cc; }
325
480
 
326
481
  @utility z-sticky { z-index: 10; }
327
482
  @utility z-overlay { z-index: 50; }
328
483
  @utility z-toast { z-index: 60; }
329
484
 
330
- :root { --header-h: 56px; }
485
+ @utility frame {
486
+ @apply bg-background-panel border border-line;
487
+ }
331
488
 
332
- @utility side-rail {
333
- position: sticky;
334
- top: var(--header-h);
335
- max-height: calc(100dvh - var(--header-h));
336
- overflow-y: auto;
489
+ @utility card {
490
+ @apply bg-background-panel shadow-s3;
337
491
  }
338
492
 
339
- @utility scroll-slim {
340
- scrollbar-width: thin;
341
- scrollbar-color: var(--color-line-strong) transparent;
493
+ @utility float {
494
+ @apply bg-background-panel border border-line shadow-s3;
342
495
  }
343
496
 
344
- @utility scroll-hidden {
345
- scrollbar-width: none;
346
- &::-webkit-scrollbar { display: none; }
497
+ @utility sheet {
498
+ @apply bg-background-panel;
347
499
  }