@firecms/ui 3.0.0-canary.16 → 3.0.0-canary.160

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 (111) hide show
  1. package/README.md +60 -150
  2. package/dist/components/Avatar.d.ts +1 -0
  3. package/dist/components/BooleanSwitch.d.ts +1 -1
  4. package/dist/components/BooleanSwitchWithLabel.d.ts +4 -1
  5. package/dist/components/Button.d.ts +1 -1
  6. package/dist/components/CenteredView.d.ts +4 -2
  7. package/dist/components/Checkbox.d.ts +3 -2
  8. package/dist/components/Chip.d.ts +3 -2
  9. package/dist/components/DateTimeField.d.ts +5 -7
  10. package/dist/components/Dialog.d.ts +4 -1
  11. package/dist/components/DialogContent.d.ts +2 -1
  12. package/dist/components/DialogTitle.d.ts +10 -0
  13. package/dist/components/ExpandablePanel.d.ts +2 -1
  14. package/dist/components/FileUpload.d.ts +2 -2
  15. package/dist/components/InputLabel.d.ts +2 -2
  16. package/dist/components/Label.d.ts +4 -1
  17. package/dist/components/Markdown.d.ts +1 -0
  18. package/dist/components/Menu.d.ts +6 -2
  19. package/dist/components/Menubar.d.ts +79 -0
  20. package/dist/components/MultiSelect.d.ts +32 -16
  21. package/dist/components/Popover.d.ts +2 -1
  22. package/dist/components/RadioGroup.d.ts +26 -3
  23. package/dist/components/Select.d.ts +8 -11
  24. package/dist/components/Separator.d.ts +2 -1
  25. package/dist/components/Sheet.d.ts +6 -0
  26. package/dist/components/Slider.d.ts +21 -0
  27. package/dist/components/Table.d.ts +10 -10
  28. package/dist/components/Tabs.d.ts +4 -2
  29. package/dist/components/TextField.d.ts +1 -1
  30. package/dist/components/TextareaAutosize.d.ts +3 -34
  31. package/dist/components/Tooltip.d.ts +6 -2
  32. package/dist/components/Typography.d.ts +5 -4
  33. package/dist/components/index.d.ts +3 -1
  34. package/dist/hooks/index.d.ts +3 -0
  35. package/dist/icons/Icon.d.ts +3 -3
  36. package/dist/index.css +73 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.es.js +50174 -20590
  39. package/dist/index.es.js.map +1 -1
  40. package/dist/index.umd.js +50441 -857
  41. package/dist/index.umd.js.map +1 -1
  42. package/dist/styles.d.ts +9 -9
  43. package/dist/util/{cn.d.ts → cls.d.ts} +4 -0
  44. package/dist/util/index.d.ts +1 -3
  45. package/package.json +119 -118
  46. package/src/components/Alert.tsx +4 -4
  47. package/src/components/Autocomplete.tsx +7 -5
  48. package/src/components/Avatar.tsx +41 -26
  49. package/src/components/Badge.tsx +2 -2
  50. package/src/components/BooleanSwitch.tsx +14 -13
  51. package/src/components/BooleanSwitchWithLabel.tsx +17 -8
  52. package/src/components/Button.tsx +31 -23
  53. package/src/components/Card.tsx +4 -3
  54. package/src/components/CenteredView.tsx +26 -15
  55. package/src/components/Checkbox.tsx +16 -14
  56. package/src/components/Chip.tsx +13 -10
  57. package/src/components/CircularProgress.tsx +3 -3
  58. package/src/components/Collapse.tsx +4 -2
  59. package/src/components/Container.tsx +3 -2
  60. package/src/components/DateTimeField.tsx +144 -921
  61. package/src/components/DebouncedTextField.tsx +1 -0
  62. package/src/components/Dialog.tsx +17 -7
  63. package/src/components/DialogActions.tsx +3 -3
  64. package/src/components/DialogContent.tsx +7 -3
  65. package/src/components/DialogTitle.tsx +41 -0
  66. package/src/components/ExpandablePanel.tsx +20 -12
  67. package/src/components/FileUpload.tsx +11 -13
  68. package/src/components/IconButton.tsx +7 -11
  69. package/src/components/InfoLabel.tsx +2 -2
  70. package/src/components/InputLabel.tsx +12 -9
  71. package/src/components/Label.tsx +18 -4
  72. package/src/components/Markdown.tsx +15 -3
  73. package/src/components/Menu.tsx +50 -31
  74. package/src/components/Menubar.tsx +322 -0
  75. package/src/components/MultiSelect.tsx +341 -167
  76. package/src/components/Paper.tsx +2 -2
  77. package/src/components/Popover.tsx +19 -15
  78. package/src/components/RadioGroup.tsx +42 -9
  79. package/src/components/SearchBar.tsx +12 -11
  80. package/src/components/Select.tsx +142 -130
  81. package/src/components/Separator.tsx +10 -4
  82. package/src/components/Sheet.tsx +53 -31
  83. package/src/components/Skeleton.tsx +9 -6
  84. package/src/components/Slider.tsx +110 -0
  85. package/src/components/Table.tsx +54 -35
  86. package/src/components/Tabs.tsx +17 -15
  87. package/src/components/TextField.tsx +25 -23
  88. package/src/components/TextareaAutosize.tsx +4 -3
  89. package/src/components/Tooltip.tsx +33 -16
  90. package/src/components/Typography.tsx +42 -26
  91. package/src/components/common/SelectInputLabel.tsx +3 -3
  92. package/src/components/index.tsx +3 -1
  93. package/src/hooks/index.ts +3 -0
  94. package/src/{util → hooks}/useDebounceValue.tsx +2 -0
  95. package/src/{util → hooks}/useInjectStyles.tsx +1 -0
  96. package/src/{util → hooks}/useOutsideAlerter.tsx +2 -0
  97. package/src/icons/Icon.tsx +48 -43
  98. package/src/icons/icon_keys.ts +114 -1301
  99. package/src/index.css +73 -0
  100. package/src/index.ts +1 -0
  101. package/src/scripts/generateIconKeys.ts +20 -11
  102. package/src/styles.ts +9 -9
  103. package/src/util/cls.ts +14 -0
  104. package/src/util/index.ts +1 -3
  105. package/tailwind.config.js +42 -26
  106. package/dist/components/Spinner.d.ts +0 -1
  107. package/src/components/Spinner.tsx +0 -18
  108. package/src/util/cn.ts +0 -6
  109. /package/dist/{util → hooks}/useDebounceValue.d.ts +0 -0
  110. /package/dist/{util → hooks}/useInjectStyles.d.ts +0 -0
  111. /package/dist/{util → hooks}/useOutsideAlerter.d.ts +0 -0
@@ -0,0 +1,322 @@
1
+ import * as React from "react";
2
+
3
+ import * as MenubarPrimitive from "@radix-ui/react-menubar";
4
+ import { cls } from "../util";
5
+ import { CheckIcon, ChevronRightIcon } from "../icons";
6
+
7
+ export function Menubar({
8
+ children,
9
+ onSelect,
10
+ className
11
+ }: {
12
+ children: React.ReactNode,
13
+ onSelect?: (event: React.SyntheticEvent) => void,
14
+ className?: string
15
+ }) {
16
+ return (
17
+ <MenubarPrimitive.Root
18
+ onSelect={onSelect}
19
+ className={cls("z-10 flex bg-white dark:bg-surface-950 p-[3px] rounded-sm shadow-sm", className)}>
20
+ {children}
21
+ </MenubarPrimitive.Root>
22
+ )
23
+ }
24
+
25
+ export function MenubarMenu({
26
+ children,
27
+ }: { children: React.ReactNode }) {
28
+ return (
29
+ <MenubarPrimitive.Menu>
30
+ {children}
31
+ </MenubarPrimitive.Menu>
32
+ )
33
+ }
34
+
35
+ export function MenubarTrigger({
36
+ children,
37
+ onSelect,
38
+ className
39
+ }: {
40
+ children: React.ReactNode,
41
+ onSelect?: (event: React.SyntheticEvent) => void,
42
+ className?: string
43
+ }) {
44
+ return (
45
+ <MenubarPrimitive.Trigger
46
+ onSelect={onSelect}
47
+ className={cls("py-2 px-3 outline-none select-none font-medium leading-none rounded text-text-primary dark:text-text-primary-dark text-[13px] flex items-center justify-between gap-[2px] data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-800 data-[state=open]:bg-surface-accent-100 data-[state=open]:dark:bg-surface-800 hover:bg-surface-accent-200 hover:bg-opacity-75 dark:hover:bg-surface-700 dark:hover:bg-opacity-50",
48
+ className)}>
49
+ {children}
50
+ </MenubarPrimitive.Trigger>
51
+ )
52
+ }
53
+
54
+ export function MenubarPortal({
55
+ children,
56
+ }: { children: React.ReactNode }) {
57
+ return (
58
+ <MenubarPrimitive.Portal>
59
+ {children}
60
+ </MenubarPrimitive.Portal>
61
+ )
62
+ }
63
+
64
+ export function MenubarContent({
65
+ children,
66
+ className,
67
+ align,
68
+ sideOffset,
69
+ alignOffset,
70
+ onSelect,
71
+ ...rest
72
+ }: {
73
+ children: React.ReactNode,
74
+ className?: string,
75
+ onSelect?: (event: React.SyntheticEvent) => void,
76
+ align?: "start" | "center" | "end",
77
+ sideOffset?: number,
78
+ alignOffset?: number
79
+ }) {
80
+ return (
81
+ <MenubarPrimitive.Content
82
+ onSelect={onSelect}
83
+ className={cls("min-w-[220px] bg-white dark:bg-surface-950 rounded-md p-[6px] shadow-[0px_10px_38px_-10px_rgba(22,_23,_24,_0.35),_0px_10px_20px_-15px_rgba(22,_23,_24,_0.2)] [animation-duration:_400ms] [animation-timing-function:_cubic-bezier(0.16,_1,_0.3,_1)] will-change-[transform,opacity]", className)}
84
+ align={align ?? "start"}
85
+ sideOffset={sideOffset ?? 5}
86
+ alignOffset={alignOffset ?? -3}
87
+ {...rest}
88
+ >
89
+ {children}
90
+ </MenubarPrimitive.Content>
91
+ )
92
+ }
93
+
94
+ export function MenubarItem({
95
+ children,
96
+ leftPadding,
97
+ className,
98
+ disabled,
99
+ onSelect,
100
+ ...rest
101
+ }: {
102
+ children: React.ReactNode,
103
+ onSelect?: (event: Event) => void;
104
+ leftPadding?: boolean,
105
+ className?: string,
106
+ disabled?: boolean
107
+ }) {
108
+ return (
109
+ <MenubarPrimitive.Item
110
+ onSelect={onSelect}
111
+ className={cls("group text-[13px] leading-none rounded flex items-center h-[32px] px-[10px] py-[2px] relative select-none outline-none data-[state=open]:bg-surface-accent-100 data-[state=open]:dark:bg-surface-800 data-[state=open]:text-text-primary data-[state=open]:dark:text-text-primary-dark data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-800 data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark data-[disabled]:pointer-events-none",
112
+ leftPadding ? "pl-5" : "",
113
+ disabled ? "pointer-events-none text-text-secondary dark:text-text-secondary-dark" : "text-text-primary dark:text-text-primary-dark",
114
+ className)}
115
+ disabled={disabled}
116
+ {...rest}
117
+ >
118
+ {children}
119
+ </MenubarPrimitive.Item>
120
+ )
121
+ }
122
+
123
+ export function MenubarSeparator({
124
+ children,
125
+ className,
126
+ ...rest
127
+ }: {
128
+ children?: React.ReactNode,
129
+ className?: string,
130
+ }) {
131
+ return (
132
+ <MenubarPrimitive.Separator
133
+ className={cls("h-[1px] bg-surface-accent-100 dark:bg-surface-800 m-[5px]", className)}
134
+ {...rest}
135
+ >
136
+ {children}
137
+ </MenubarPrimitive.Separator>
138
+ )
139
+ }
140
+
141
+ export function MenubarSub({
142
+ children,
143
+ ...rest
144
+ }: {
145
+ children?: React.ReactNode,
146
+ }) {
147
+ return (
148
+ <MenubarPrimitive.Sub
149
+ {...rest}
150
+ >
151
+ {children}
152
+ </MenubarPrimitive.Sub>
153
+ )
154
+ }
155
+
156
+ export function MenubarSubTrigger({
157
+ children,
158
+ className,
159
+ onSelect,
160
+ ...rest
161
+ }: {
162
+ children?: React.ReactNode,
163
+ onSelect?: (event: React.SyntheticEvent) => void,
164
+ className?: string,
165
+ }) {
166
+ return (
167
+ <MenubarPrimitive.SubTrigger
168
+ onSelect={onSelect}
169
+ className={cls("group text-[13px] leading-none text-text-primary dark:text-text-primary-dark rounded flex items-center h-[32px] px-[10px] py-[2px] relative select-none outline-none data-[state=open]:bg-surface-accent-100 data-[state=open]:dark:bg-surface-800 data-[state=open]:text-text-primary data-[state=open]:dark:text-text-primary-dark data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-800 data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark data-[disabled]:pointer-events-none",
170
+ className)}
171
+ {...rest}
172
+ >
173
+ {children}
174
+ </MenubarPrimitive.SubTrigger>
175
+ )
176
+ }
177
+
178
+ export function MenubarSubContent({
179
+ children,
180
+ alignOffset,
181
+ className,
182
+ onSelect,
183
+ ...rest
184
+ }: {
185
+ children?: React.ReactNode,
186
+ onSelect?: (event: React.SyntheticEvent) => void,
187
+ alignOffset?: number,
188
+ className?: string,
189
+ }) {
190
+ return (
191
+ <MenubarPrimitive.SubContent
192
+ onSelect={onSelect}
193
+ alignOffset={alignOffset ?? -5}
194
+ className={cls("min-w-[220px] bg-white dark:bg-surface-950 rounded-md p-[6px] shadow-[0px_10px_38px_-10px_rgba(22,_23,_24,_0.35),_0px_10px_20px_-15px_rgba(22,_23,_24,_0.2)] [animation-duration:_400ms] [animation-timing-function:_cubic-bezier(0.16,_1,_0.3,_1)] will-change-[transform,opacity]",
195
+ className)}
196
+ {...rest}
197
+ >
198
+ {children}
199
+ </MenubarPrimitive.SubContent>
200
+ )
201
+ }
202
+
203
+ export function MenubarCheckboxItem({
204
+ children,
205
+ checked,
206
+ onCheckedChange,
207
+ className,
208
+ onSelect,
209
+ ...rest
210
+ }: {
211
+ children?: React.ReactNode,
212
+ onSelect?: (event: Event) => void;
213
+ checked?: boolean,
214
+ onCheckedChange?: () => void,
215
+ className?: string,
216
+ }) {
217
+ return (
218
+ <MenubarPrimitive.CheckboxItem
219
+ onSelect={onSelect}
220
+ className={cls("text-[13px] leading-none text-text-primary dark:text-text-primary-dark rounded flex items-center h-[32px] px-[10px] py-[2px] relative select-none pl-5 outline-none data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-800 data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark data-[disabled]:pointer-events-none",
221
+ className)}
222
+ checked={checked}
223
+ onCheckedChange={onCheckedChange}
224
+ {...rest}
225
+ >
226
+ {children}
227
+ </MenubarPrimitive.CheckboxItem>
228
+ )
229
+ }
230
+
231
+ export function MenubarItemIndicator({
232
+ children,
233
+ className,
234
+ ...rest
235
+ }: {
236
+ children?: React.ReactNode,
237
+ className?: string,
238
+ }) {
239
+ return (
240
+ <MenubarPrimitive.ItemIndicator
241
+ className={cls("absolute left-0 w-4 inline-flex items-center justify-center", className)}
242
+ {...rest}>
243
+ {children ?? <CheckIcon size={"smallest"}/>}
244
+ </MenubarPrimitive.ItemIndicator>
245
+ )
246
+ }
247
+
248
+ export function MenubarRadioGroup({
249
+ children,
250
+ className,
251
+ value,
252
+ onValueChange,
253
+ onSelect,
254
+ ...rest
255
+ }: {
256
+ children?: React.ReactNode,
257
+ onSelect?: (event: React.SyntheticEvent) => void,
258
+ value?: string,
259
+ onValueChange?: (value: string) => void,
260
+ className?: string,
261
+ }) {
262
+ return (
263
+ <MenubarPrimitive.RadioGroup
264
+ className={cls(className)}
265
+ value={value}
266
+ onValueChange={onValueChange}
267
+ onSelect={onSelect}
268
+ {...rest}>
269
+ {children ?? <CheckIcon size={"small"}/>}
270
+ </MenubarPrimitive.RadioGroup>
271
+ )
272
+ }
273
+
274
+ export function MenubarRadioItem({
275
+ children,
276
+ className,
277
+ value,
278
+ onSelect,
279
+ ...rest
280
+ }: {
281
+ children?: React.ReactNode,
282
+ onSelect?: (event: Event) => void;
283
+ value: string,
284
+ className?: string,
285
+ }) {
286
+ return (
287
+ <MenubarPrimitive.RadioItem
288
+ onSelect={onSelect}
289
+ className={cls("text-[13px] leading-none text-text-primary dark:text-text-primary-dark rounded flex items-center h-[32px] px-[10px] py-[2px] relative select-none pl-5 outline-none data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-800 data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark data-[disabled]:pointer-events-none",
290
+ className)}
291
+ value={value}
292
+ {...rest}>
293
+ {children ?? <CheckIcon size={"small"}/>}
294
+ </MenubarPrimitive.RadioItem>
295
+ )
296
+ }
297
+
298
+ export function MenubarShortcut({
299
+ children,
300
+ className,
301
+ ...rest
302
+ }: {
303
+ children?: React.ReactNode,
304
+ className?: string,
305
+ }) {
306
+ return (
307
+ <div
308
+ className={cls("ml-auto pl-5 group-data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark",
309
+ className)}
310
+ {...rest}>
311
+ {children}
312
+ </div>
313
+ )
314
+ }
315
+
316
+ export function MenubarSubTriggerIndicator() {
317
+ return (
318
+ <div className="ml-auto pl-5 ">
319
+ <ChevronRightIcon size={"small"}/>
320
+ </div>
321
+ )
322
+ }