startupjs-ui 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.mdx +62 -0
  2. package/UiProvider.tsx +50 -0
  3. package/exports/AbstractPopover.tsx +1 -0
  4. package/exports/Alert.tsx +1 -0
  5. package/exports/ArrayInput.tsx +1 -0
  6. package/exports/AutoSuggest.tsx +1 -0
  7. package/exports/Avatar.tsx +1 -0
  8. package/exports/Badge.tsx +1 -0
  9. package/exports/Br.tsx +1 -0
  10. package/exports/Breadcrumbs.tsx +1 -0
  11. package/exports/Button.tsx +1 -0
  12. package/exports/Card.tsx +1 -0
  13. package/exports/Carousel.tsx +1 -0
  14. package/exports/Checkbox.tsx +1 -0
  15. package/exports/Collapse.tsx +1 -0
  16. package/exports/ColorPicker.tsx +1 -0
  17. package/exports/Colors.tsx +1 -0
  18. package/exports/Content.tsx +1 -0
  19. package/exports/CssVariables.tsx +1 -0
  20. package/exports/DateTimePicker.tsx +1 -0
  21. package/exports/DialogsProvider.tsx +1 -0
  22. package/exports/Div.tsx +1 -0
  23. package/exports/Divider.tsx +1 -0
  24. package/exports/DragDropProvider.tsx +1 -0
  25. package/exports/Draggable.tsx +1 -0
  26. package/exports/Drawer.tsx +1 -0
  27. package/exports/DrawerSidebar.tsx +1 -0
  28. package/exports/Dropdown.tsx +1 -0
  29. package/exports/Droppable.tsx +1 -0
  30. package/exports/FileInput.tsx +1 -0
  31. package/exports/FlatList.tsx +1 -0
  32. package/exports/Form.tsx +1 -0
  33. package/exports/Icon.tsx +1 -0
  34. package/exports/Input.tsx +1 -0
  35. package/exports/Item.tsx +1 -0
  36. package/exports/Layout.tsx +1 -0
  37. package/exports/Link.tsx +1 -0
  38. package/exports/Loader.tsx +1 -0
  39. package/exports/Menu.tsx +1 -0
  40. package/exports/Modal.tsx +1 -0
  41. package/exports/MultiSelect.tsx +1 -0
  42. package/exports/NumberInput.tsx +1 -0
  43. package/exports/ObjectInput.tsx +1 -0
  44. package/exports/Pagination.tsx +1 -0
  45. package/exports/PasswordInput.tsx +1 -0
  46. package/exports/Popover.tsx +1 -0
  47. package/exports/Portal.tsx +1 -0
  48. package/exports/Progress.tsx +1 -0
  49. package/exports/Radio.tsx +1 -0
  50. package/exports/RangeInput.tsx +1 -0
  51. package/exports/Rank.tsx +1 -0
  52. package/exports/Rating.tsx +1 -0
  53. package/exports/ScrollView.tsx +1 -0
  54. package/exports/Select.tsx +1 -0
  55. package/exports/Sidebar.tsx +1 -0
  56. package/exports/SmartSidebar.tsx +1 -0
  57. package/exports/Span.tsx +1 -0
  58. package/exports/Table.tsx +1 -0
  59. package/exports/Tabs.tsx +1 -0
  60. package/exports/Tag.tsx +1 -0
  61. package/exports/Tbody.tsx +1 -0
  62. package/exports/Td.tsx +1 -0
  63. package/exports/TextInput.tsx +1 -0
  64. package/exports/Th.tsx +1 -0
  65. package/exports/Thead.tsx +1 -0
  66. package/exports/ThemeContext.tsx +1 -0
  67. package/exports/ThemeProvider.tsx +1 -0
  68. package/exports/Toast.tsx +1 -0
  69. package/exports/ToastProvider.tsx +1 -0
  70. package/exports/Tr.tsx +1 -0
  71. package/exports/UiProvider.tsx +1 -0
  72. package/exports/User.tsx +1 -0
  73. package/exports/_DEPRECATED_H1.tsx +3 -0
  74. package/exports/_DEPRECATED_H2.tsx +3 -0
  75. package/exports/_DEPRECATED_H3.tsx +3 -0
  76. package/exports/_DEPRECATED_H4.tsx +3 -0
  77. package/exports/_DEPRECATED_H5.tsx +3 -0
  78. package/exports/_DEPRECATED_H6.tsx +3 -0
  79. package/exports/_DEPRECATED_Multiselect.tsx +3 -0
  80. package/exports/_DEPRECATED_Row.tsx +3 -0
  81. package/exports/_DEPRECATED_Tooltip.tsx +3 -0
  82. package/exports/_alert.tsx +1 -0
  83. package/exports/_toast.tsx +1 -0
  84. package/exports/confirm.tsx +1 -0
  85. package/exports/deleteFile.tsx +1 -0
  86. package/exports/generateColors.tsx +1 -0
  87. package/exports/getCssVariable.tsx +1 -0
  88. package/exports/guessInput.tsx +1 -0
  89. package/exports/palette.tsx +1 -0
  90. package/exports/prompt.tsx +1 -0
  91. package/exports/themed.tsx +1 -0
  92. package/exports/uploadFile.tsx +1 -0
  93. package/exports/useColors.tsx +1 -0
  94. package/exports/useFormFields$.tsx +1 -0
  95. package/exports/useFormFields.tsx +1 -0
  96. package/exports/useFormProps.tsx +1 -0
  97. package/exports/useMedia.tsx +1 -0
  98. package/exports/useValidate.tsx +1 -0
  99. package/exports/wrapInput.tsx +1 -0
  100. package/index.tsx +114 -0
  101. package/package.json +169 -2
  102. package/plugin.js +44 -0
  103. package/CHANGELOG.md +0 -9
package/README.mdx ADDED
@@ -0,0 +1,62 @@
1
+ # startupjs-ui
2
+
3
+ startupjs-ui is the modular UI component library for StartupJS. You can import any component directly from `startupjs-ui` or from the individual subpaths `startupjs-ui/*`.
4
+
5
+ ```js
6
+ import { Button, Form } from 'startupjs-ui'
7
+ // or
8
+ import Button from 'startupjs-ui/Button'
9
+ import Form from 'startupjs-ui/Form'
10
+ ```
11
+
12
+ ## UiProvider
13
+
14
+ UiProvider wires up theming and shared UI infrastructure (CSS variables, portal, toasts, dialogs). It is plugged in automatically as a plugin into `StartupjsProvider`, so the only thing you need at the root of your app is:
15
+
16
+ ```jsx
17
+ import { StartupjsProvider } from 'startupjs'
18
+ import { Stack } from 'expo-router'
19
+
20
+ export default function RootLayout () {
21
+ return (
22
+ <StartupjsProvider>
23
+ <Stack />
24
+ </StartupjsProvider>
25
+ )
26
+ }
27
+ ```
28
+
29
+ You can pass UiProvider options via `StartupjsProvider` props:
30
+
31
+ ```jsx
32
+ import styleOverrides from './style.cssx.styl'
33
+
34
+ <StartupjsProvider
35
+ style={styleOverrides}
36
+ palette={palette}
37
+ colors={colors}
38
+ componentColors={componentColors}
39
+ >
40
+ <Stack />
41
+ </StartupjsProvider>
42
+ ```
43
+
44
+ ```styl
45
+ // style.cssx.styl
46
+
47
+ :root
48
+ --color-primary #0000ff
49
+ --color-error #ff0000
50
+
51
+ .Button
52
+ border-radius 12px
53
+ &:part(hover)
54
+ background-color #0000cc
55
+ ```
56
+
57
+ ### Options
58
+
59
+ - `style`: CSSX style overrides for UI components. You can also override static CSS variables by specifying them inside the `:root` section of `style`.
60
+ - `palette`: theme palette overrides.
61
+ - `colors`: theme color overrides.
62
+ - `componentColors`: component-level color overrides.
package/UiProvider.tsx ADDED
@@ -0,0 +1,50 @@
1
+ import { type ReactNode } from 'react'
2
+ import { pug, observer } from 'startupjs'
3
+ import { CssVariables, useCssVariablesMeta, StyleContext } from '@startupjs-ui/core'
4
+ import Portal from '@startupjs-ui/portal'
5
+ import { ToastProvider } from '@startupjs-ui/toast'
6
+ import DialogsProvider from '@startupjs-ui/dialogs/DialogsProvider'
7
+
8
+ export const _PropsJsonSchema = {/* UiProviderProps */}
9
+
10
+ export interface UiProviderProps {
11
+ /** App content rendered inside the provider */
12
+ children?: ReactNode
13
+ /** CSSX style overrides (use ':root' for static overrides) */
14
+ style?: Record<string, any>
15
+ /** Theme palette overrides */
16
+ palette?: Record<string, any>
17
+ /** Color overrides */
18
+ colors?: Record<string, any>
19
+ /** Component color overrides */
20
+ componentColors?: Record<string, any>
21
+ }
22
+
23
+ function UiProvider ({
24
+ children,
25
+ style,
26
+ palette,
27
+ colors,
28
+ componentColors
29
+ }: UiProviderProps): ReactNode {
30
+ const staticOverrides = style?.[':root']
31
+ const cssVariablesMeta = useCssVariablesMeta({
32
+ staticOverrides,
33
+ palette,
34
+ colors,
35
+ componentColors
36
+ })
37
+
38
+ return pug`
39
+ if cssVariablesMeta
40
+ CssVariables(meta=cssVariablesMeta)
41
+
42
+ StyleContext.Provider(value=style)
43
+ Portal.Provider
44
+ ToastProvider
45
+ = children
46
+ DialogsProvider
47
+ `
48
+ }
49
+
50
+ export default observer(UiProvider)
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/abstract-popover'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/alert'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/array-input'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/auto-suggest'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/avatar'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/badge'
package/exports/Br.tsx ADDED
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/br'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/breadcrumbs'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/button'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/card'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/carousel'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/checkbox'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/collapse'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/color-picker'
@@ -0,0 +1 @@
1
+ export { Colors as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/content'
@@ -0,0 +1 @@
1
+ export { CssVariables as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/date-time-picker'
@@ -0,0 +1 @@
1
+ export { DialogsProvider as default } from '@startupjs-ui/dialogs'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/div'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/divider'
@@ -0,0 +1 @@
1
+ export { DragDropProvider as default } from '@startupjs-ui/draggable'
@@ -0,0 +1 @@
1
+ export { Draggable as default } from '@startupjs-ui/draggable'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/drawer'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/drawer-sidebar'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/dropdown'
@@ -0,0 +1 @@
1
+ export { Droppable as default } from '@startupjs-ui/draggable'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/file-input'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/flat-list'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/form'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/icon'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/input'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/item'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/layout'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/link'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/loader'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/menu'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/modal'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/multi-select'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/number-input'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/object-input'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/pagination'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/password-input'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/popover'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/portal'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/progress'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/radio'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/range-input'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/rank'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/rating'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/scroll-view'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/select'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/sidebar'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/smart-sidebar'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/span'
@@ -0,0 +1 @@
1
+ export { Table as default } from '@startupjs-ui/table'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/tabs'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/tag'
@@ -0,0 +1 @@
1
+ export { Tbody as default } from '@startupjs-ui/table'
package/exports/Td.tsx ADDED
@@ -0,0 +1 @@
1
+ export { Td as default } from '@startupjs-ui/table'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/text-input'
package/exports/Th.tsx ADDED
@@ -0,0 +1 @@
1
+ export { Th as default } from '@startupjs-ui/table'
@@ -0,0 +1 @@
1
+ export { Thead as default } from '@startupjs-ui/table'
@@ -0,0 +1 @@
1
+ export { ThemeContext as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { ThemeProvider as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { Toast as default } from '@startupjs-ui/toast'
@@ -0,0 +1 @@
1
+ export { ToastProvider as default } from '@startupjs-ui/toast'
package/exports/Tr.tsx ADDED
@@ -0,0 +1 @@
1
+ export { Tr as default } from '@startupjs-ui/table'
@@ -0,0 +1 @@
1
+ export { default } from '../UiProvider'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/user'
@@ -0,0 +1,3 @@
1
+ export default function H1 () {
2
+ throw Error('H1 component is removed. Please use <Span h1> instead.')
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function H2 () {
2
+ throw Error('H2 component is removed. Please use <Span h2> instead.')
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function H3 () {
2
+ throw Error('H3 component is removed. Please use <Span h3> instead.')
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function H4 () {
2
+ throw Error('H4 component is removed. Please use <Span h4> instead.')
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function H5 () {
2
+ throw Error('H5 component is removed. Please use <Span h5> instead.')
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function H6 () {
2
+ throw Error('H6 component is removed. Please use <Span h6> instead.')
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function Multiselect () {
2
+ throw Error('Multiselect component is renamed. Please use <MultiSelect> instead.')
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function Row () {
2
+ throw Error('Row component is removed. Please use <Div row> instead.')
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function Tooltip () {
2
+ throw Error('Tooltip component is removed. Please use <Div tooltip=\'text\'> or <Popover> or <Dropdown> instead.')
3
+ }
@@ -0,0 +1 @@
1
+ export { alert as default } from '@startupjs-ui/dialogs'
@@ -0,0 +1 @@
1
+ export { toast as default } from '@startupjs-ui/toast'
@@ -0,0 +1 @@
1
+ export { confirm as default } from '@startupjs-ui/dialogs'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/file-input/deleteFile'
@@ -0,0 +1 @@
1
+ export { generateColors as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { getCssVariable as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { guessInput as default } from '@startupjs-ui/input'
@@ -0,0 +1 @@
1
+ export { Palette as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { prompt as default } from '@startupjs-ui/dialogs'
@@ -0,0 +1 @@
1
+ export { themed as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { default } from '@startupjs-ui/file-input/uploadFile'
@@ -0,0 +1 @@
1
+ export { useColors as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { useFormFields$ as default } from '@startupjs-ui/form'
@@ -0,0 +1 @@
1
+ export { useFormFields as default } from '@startupjs-ui/form'
@@ -0,0 +1 @@
1
+ export { useFormProps as default } from '@startupjs-ui/form'
@@ -0,0 +1 @@
1
+ export { useMedia as default } from '@startupjs-ui/core'
@@ -0,0 +1 @@
1
+ export { useValidate as default } from '@startupjs-ui/form'
@@ -0,0 +1 @@
1
+ export { wrapInput as default } from '@startupjs-ui/input'
package/index.tsx ADDED
@@ -0,0 +1,114 @@
1
+ // IMPORTANT: This file exports should match package.json/exports
2
+ // which are used by 'babel-plugin-startupjs' to generate
3
+ // precise components' import paths for tree-shaking
4
+ //
5
+ export { default as Alert } from '@startupjs-ui/alert'
6
+ export { default as AutoSuggest } from '@startupjs-ui/auto-suggest'
7
+ export { default as Avatar } from '@startupjs-ui/avatar'
8
+ export { default as Badge } from '@startupjs-ui/badge'
9
+ export { default as Br } from '@startupjs-ui/br'
10
+ export { default as Breadcrumbs } from '@startupjs-ui/breadcrumbs'
11
+ export { default as Button } from '@startupjs-ui/button'
12
+ export { default as Card } from '@startupjs-ui/card'
13
+ export { default as Carousel } from '@startupjs-ui/carousel'
14
+ export { default as Collapse } from '@startupjs-ui/collapse'
15
+ export { default as Content } from '@startupjs-ui/content'
16
+
17
+ // dialogs
18
+ export { DialogsProvider, alert, confirm, prompt } from '@startupjs-ui/dialogs'
19
+
20
+ export { default as Div } from '@startupjs-ui/div'
21
+ export { default as Divider } from '@startupjs-ui/divider'
22
+
23
+ // draggable
24
+ export { DragDropProvider, Draggable, Droppable } from '@startupjs-ui/draggable'
25
+
26
+ export { default as DrawerSidebar } from '@startupjs-ui/drawer-sidebar'
27
+ export { default as FlatList } from '@startupjs-ui/flat-list'
28
+
29
+ // inputs
30
+ export { wrapInput, guessInput } from '@startupjs-ui/input'
31
+ export { default as Form, useFormProps } from '@startupjs-ui/form'
32
+ export { default as Input } from '@startupjs-ui/input'
33
+ export { default as ArrayInput } from '@startupjs-ui/array-input'
34
+ export { default as Checkbox } from '@startupjs-ui/checkbox'
35
+ export { default as ColorPicker } from '@startupjs-ui/color-picker'
36
+ export { default as DateTimePicker } from '@startupjs-ui/date-time-picker'
37
+ export { default as MultiSelect } from '@startupjs-ui/multi-select'
38
+ export { default as Multiselect } from './exports/_DEPRECATED_Multiselect'
39
+ export { default as NumberInput } from '@startupjs-ui/number-input'
40
+ export { default as ObjectInput } from '@startupjs-ui/object-input'
41
+ export { default as PasswordInput } from '@startupjs-ui/password-input'
42
+ export { default as Radio } from '@startupjs-ui/radio'
43
+ export { default as RangeInput } from '@startupjs-ui/range-input'
44
+ export { default as Rank } from '@startupjs-ui/rank'
45
+ export { default as Select } from '@startupjs-ui/select'
46
+ export { default as TextInput } from '@startupjs-ui/text-input'
47
+ export { default as FileInput } from '@startupjs-ui/file-input'
48
+ export { default as deleteFile } from '@startupjs-ui/file-input/deleteFile'
49
+ export { default as uploadFile } from '@startupjs-ui/file-input/uploadFile'
50
+
51
+ export { default as Icon } from '@startupjs-ui/icon'
52
+ export { default as Item } from '@startupjs-ui/item'
53
+ export { default as Layout } from '@startupjs-ui/layout'
54
+ export { default as Link } from '@startupjs-ui/link'
55
+ export { default as Loader } from '@startupjs-ui/loader'
56
+ export { default as Menu } from '@startupjs-ui/menu'
57
+ export { default as Modal } from '@startupjs-ui/modal'
58
+ export { default as Pagination } from '@startupjs-ui/pagination'
59
+
60
+ // popups
61
+ export { default as AbstractPopover } from '@startupjs-ui/abstract-popover'
62
+ export { default as Drawer } from '@startupjs-ui/drawer'
63
+ export { default as Popover } from '@startupjs-ui/popover'
64
+ export { default as Dropdown } from '@startupjs-ui/dropdown'
65
+
66
+ export { default as Portal } from '@startupjs-ui/portal'
67
+ export { default as Progress } from '@startupjs-ui/progress'
68
+ export { default as Rating } from '@startupjs-ui/rating'
69
+ export { default as Row } from './exports/_DEPRECATED_Row'
70
+ export { default as ScrollView } from '@startupjs-ui/scroll-view'
71
+ export { default as Sidebar } from '@startupjs-ui/sidebar'
72
+ export { default as SmartSidebar } from '@startupjs-ui/smart-sidebar'
73
+
74
+ // table
75
+ export { Table, Tbody, Td, Th, Thead, Tr } from '@startupjs-ui/table'
76
+
77
+ export { default as Tabs } from '@startupjs-ui/tabs'
78
+ export { default as Tag } from '@startupjs-ui/tag'
79
+
80
+ // toast
81
+ export { ToastProvider, Toast, toast } from '@startupjs-ui/toast'
82
+
83
+ export { default as Tooltip } from './exports/_DEPRECATED_Tooltip'
84
+
85
+ // typography
86
+ export { default as Span } from '@startupjs-ui/span'
87
+ export { default as H1 } from './exports/_DEPRECATED_H1'
88
+ export { default as H2 } from './exports/_DEPRECATED_H2'
89
+ export { default as H3 } from './exports/_DEPRECATED_H3'
90
+ export { default as H4 } from './exports/_DEPRECATED_H4'
91
+ export { default as H5 } from './exports/_DEPRECATED_H5'
92
+ export { default as H6 } from './exports/_DEPRECATED_H6'
93
+
94
+ export { default as User } from '@startupjs-ui/user'
95
+
96
+ // theming
97
+ export {
98
+ CssVariables,
99
+ palette,
100
+ generateColors,
101
+ getCssVariable,
102
+ Palette,
103
+ Colors,
104
+ themed,
105
+ ThemeProvider,
106
+ ThemeContext
107
+ } from '@startupjs-ui/core'
108
+
109
+ // hooks
110
+ export { useMedia, useColors } from '@startupjs-ui/core'
111
+ export { useFormFields, useFormFields$, useValidate } from '@startupjs-ui/form'
112
+
113
+ // UiProvider
114
+ export { default as UiProvider } from './UiProvider'
package/package.json CHANGED
@@ -1,11 +1,178 @@
1
1
  {
2
2
  "name": "startupjs-ui",
3
3
  "description": "Universal React-Native and Web UI components",
4
+ "version": "0.1.3",
4
5
  "publishConfig": {
5
6
  "access": "public"
6
7
  },
7
- "version": "0.1.1",
8
8
  "type": "module",
9
+ "exports": {
10
+ ".": "./index.tsx",
11
+ "./plugin": "./plugin.js",
12
+ "./Alert": "./exports/Alert.tsx",
13
+ "./AutoSuggest": "./exports/AutoSuggest.tsx",
14
+ "./Avatar": "./exports/Avatar.tsx",
15
+ "./Badge": "./exports/Badge.tsx",
16
+ "./Br": "./exports/Br.tsx",
17
+ "./Breadcrumbs": "./exports/Breadcrumbs.tsx",
18
+ "./Button": "./exports/Button.tsx",
19
+ "./Card": "./exports/Card.tsx",
20
+ "./Carousel": "./exports/Carousel.tsx",
21
+ "./Collapse": "./exports/Collapse.tsx",
22
+ "./Content": "./exports/Content.tsx",
23
+ "./DialogsProvider": "./exports/DialogsProvider.tsx",
24
+ "./alert": "./exports/_alert.tsx",
25
+ "./confirm": "./exports/confirm.tsx",
26
+ "./prompt": "./exports/prompt.tsx",
27
+ "./Div": "./exports/Div.tsx",
28
+ "./Divider": "./exports/Divider.tsx",
29
+ "./DragDropProvider": "./exports/DragDropProvider.tsx",
30
+ "./Draggable": "./exports/Draggable.tsx",
31
+ "./Droppable": "./exports/Droppable.tsx",
32
+ "./DrawerSidebar": "./exports/DrawerSidebar.tsx",
33
+ "./FlatList": "./exports/FlatList.tsx",
34
+ "./wrapInput": "./exports/wrapInput.tsx",
35
+ "./guessInput": "./exports/guessInput.tsx",
36
+ "./Form": "./exports/Form.tsx",
37
+ "./useFormProps": "./exports/useFormProps.tsx",
38
+ "./Input": "./exports/Input.tsx",
39
+ "./ArrayInput": "./exports/ArrayInput.tsx",
40
+ "./Checkbox": "./exports/Checkbox.tsx",
41
+ "./ColorPicker": "./exports/ColorPicker.tsx",
42
+ "./DateTimePicker": "./exports/DateTimePicker.tsx",
43
+ "./MultiSelect": "./exports/MultiSelect.tsx",
44
+ "./Multiselect": "./exports/_DEPRECATED_Multiselect.tsx",
45
+ "./NumberInput": "./exports/NumberInput.tsx",
46
+ "./ObjectInput": "./exports/ObjectInput.tsx",
47
+ "./PasswordInput": "./exports/PasswordInput.tsx",
48
+ "./Radio": "./exports/Radio.tsx",
49
+ "./RangeInput": "./exports/RangeInput.tsx",
50
+ "./Rank": "./exports/Rank.tsx",
51
+ "./Select": "./exports/Select.tsx",
52
+ "./TextInput": "./exports/TextInput.tsx",
53
+ "./FileInput": "./exports/FileInput.tsx",
54
+ "./deleteFile": "./exports/deleteFile.tsx",
55
+ "./uploadFile": "./exports/uploadFile.tsx",
56
+ "./Icon": "./exports/Icon.tsx",
57
+ "./Item": "./exports/Item.tsx",
58
+ "./Layout": "./exports/Layout.tsx",
59
+ "./Link": "./exports/Link.tsx",
60
+ "./Loader": "./exports/Loader.tsx",
61
+ "./Menu": "./exports/Menu.tsx",
62
+ "./Modal": "./exports/Modal.tsx",
63
+ "./Pagination": "./exports/Pagination.tsx",
64
+ "./AbstractPopover": "./exports/AbstractPopover.tsx",
65
+ "./Drawer": "./exports/Drawer.tsx",
66
+ "./Popover": "./exports/Popover.tsx",
67
+ "./Dropdown": "./exports/Dropdown.tsx",
68
+ "./Portal": "./exports/Portal.tsx",
69
+ "./Progress": "./exports/Progress.tsx",
70
+ "./Rating": "./exports/Rating.tsx",
71
+ "./Row": "./exports/_DEPRECATED_Row.tsx",
72
+ "./ScrollView": "./exports/ScrollView.tsx",
73
+ "./Sidebar": "./exports/Sidebar.tsx",
74
+ "./SmartSidebar": "./exports/SmartSidebar.tsx",
75
+ "./Table": "./exports/Table.tsx",
76
+ "./Tbody": "./exports/Tbody.tsx",
77
+ "./Td": "./exports/Td.tsx",
78
+ "./Th": "./exports/Th.tsx",
79
+ "./Thead": "./exports/Thead.tsx",
80
+ "./Tr": "./exports/Tr.tsx",
81
+ "./Tabs": "./exports/Tabs.tsx",
82
+ "./Tag": "./exports/Tag.tsx",
83
+ "./ToastProvider": "./exports/ToastProvider.tsx",
84
+ "./Toast": "./exports/Toast.tsx",
85
+ "./toast": "./exports/_toast.tsx",
86
+ "./Tooltip": "./exports/_DEPRECATED_Tooltip.tsx",
87
+ "./Span": "./exports/Span.tsx",
88
+ "./H1": "./exports/_DEPRECATED_H1.tsx",
89
+ "./H2": "./exports/_DEPRECATED_H2.tsx",
90
+ "./H3": "./exports/_DEPRECATED_H3.tsx",
91
+ "./H4": "./exports/_DEPRECATED_H4.tsx",
92
+ "./H5": "./exports/_DEPRECATED_H5.tsx",
93
+ "./H6": "./exports/_DEPRECATED_H6.tsx",
94
+ "./User": "./exports/User.tsx",
95
+ "./CssVariables": "./exports/CssVariables.tsx",
96
+ "./palette": "./exports/palette.tsx",
97
+ "./generateColors": "./exports/generateColors.tsx",
98
+ "./getCssVariable": "./exports/getCssVariable.tsx",
99
+ "./Palette": "./exports/Palette.tsx",
100
+ "./Colors": "./exports/Colors.tsx",
101
+ "./themed": "./exports/themed.tsx",
102
+ "./ThemeProvider": "./exports/ThemeProvider.tsx",
103
+ "./ThemeContext": "./exports/ThemeContext.tsx",
104
+ "./useMedia": "./exports/useMedia.tsx",
105
+ "./useColors": "./exports/useColors.tsx",
106
+ "./useFormFields": "./exports/useFormFields.tsx",
107
+ "./useFormFields$": "./exports/useFormFields$.tsx",
108
+ "./useValidate": "./exports/useValidate.tsx",
109
+ "./UiProvider": "./exports/UiProvider.tsx"
110
+ },
111
+ "dependencies": {
112
+ "@startupjs-ui/abstract-popover": "^0.1.3",
113
+ "@startupjs-ui/alert": "^0.1.3",
114
+ "@startupjs-ui/array-input": "^0.1.3",
115
+ "@startupjs-ui/auto-suggest": "^0.1.3",
116
+ "@startupjs-ui/avatar": "^0.1.3",
117
+ "@startupjs-ui/badge": "^0.1.3",
118
+ "@startupjs-ui/br": "^0.1.3",
119
+ "@startupjs-ui/breadcrumbs": "^0.1.3",
120
+ "@startupjs-ui/button": "^0.1.3",
121
+ "@startupjs-ui/card": "^0.1.3",
122
+ "@startupjs-ui/carousel": "^0.1.3",
123
+ "@startupjs-ui/checkbox": "^0.1.3",
124
+ "@startupjs-ui/collapse": "^0.1.3",
125
+ "@startupjs-ui/color-picker": "^0.1.3",
126
+ "@startupjs-ui/content": "^0.1.3",
127
+ "@startupjs-ui/core": "^0.1.3",
128
+ "@startupjs-ui/date-time-picker": "^0.1.3",
129
+ "@startupjs-ui/dialogs": "^0.1.3",
130
+ "@startupjs-ui/div": "^0.1.3",
131
+ "@startupjs-ui/divider": "^0.1.3",
132
+ "@startupjs-ui/draggable": "^0.1.3",
133
+ "@startupjs-ui/drawer": "^0.1.3",
134
+ "@startupjs-ui/drawer-sidebar": "^0.1.3",
135
+ "@startupjs-ui/dropdown": "^0.1.3",
136
+ "@startupjs-ui/file-input": "^0.1.3",
137
+ "@startupjs-ui/flat-list": "^0.1.3",
138
+ "@startupjs-ui/form": "^0.1.3",
139
+ "@startupjs-ui/icon": "^0.1.3",
140
+ "@startupjs-ui/input": "^0.1.3",
141
+ "@startupjs-ui/item": "^0.1.3",
142
+ "@startupjs-ui/layout": "^0.1.3",
143
+ "@startupjs-ui/link": "^0.1.3",
144
+ "@startupjs-ui/loader": "^0.1.3",
145
+ "@startupjs-ui/menu": "^0.1.3",
146
+ "@startupjs-ui/modal": "^0.1.3",
147
+ "@startupjs-ui/multi-select": "^0.1.3",
148
+ "@startupjs-ui/number-input": "^0.1.3",
149
+ "@startupjs-ui/object-input": "^0.1.3",
150
+ "@startupjs-ui/pagination": "^0.1.3",
151
+ "@startupjs-ui/password-input": "^0.1.3",
152
+ "@startupjs-ui/popover": "^0.1.3",
153
+ "@startupjs-ui/portal": "^0.1.3",
154
+ "@startupjs-ui/progress": "^0.1.3",
155
+ "@startupjs-ui/radio": "^0.1.3",
156
+ "@startupjs-ui/range-input": "^0.1.3",
157
+ "@startupjs-ui/rank": "^0.1.3",
158
+ "@startupjs-ui/rating": "^0.1.3",
159
+ "@startupjs-ui/scroll-view": "^0.1.3",
160
+ "@startupjs-ui/select": "^0.1.3",
161
+ "@startupjs-ui/sidebar": "^0.1.3",
162
+ "@startupjs-ui/smart-sidebar": "^0.1.3",
163
+ "@startupjs-ui/span": "^0.1.3",
164
+ "@startupjs-ui/table": "^0.1.3",
165
+ "@startupjs-ui/tabs": "^0.1.3",
166
+ "@startupjs-ui/tag": "^0.1.3",
167
+ "@startupjs-ui/text-input": "^0.1.3",
168
+ "@startupjs-ui/toast": "^0.1.3",
169
+ "@startupjs-ui/user": "^0.1.3"
170
+ },
171
+ "peerDependencies": {
172
+ "react": "*",
173
+ "react-native": "*",
174
+ "startupjs": "*"
175
+ },
9
176
  "license": "MIT",
10
- "gitHead": "da5f3c2a20f6d976d8c48f679a1242ca98217f00"
177
+ "gitHead": "fd964ebc3892d3dd0a6c85438c0af619cc50c3f0"
11
178
  }
package/plugin.js ADDED
@@ -0,0 +1,44 @@
1
+ import { createElement as el } from 'react'
2
+ import { createPlugin, ROOT_MODULE as MODULE } from 'startupjs/registry'
3
+ import { setCustomInputs } from '@startupjs-ui/input/globalCustomInputs'
4
+ import { setCustomIcons } from '@startupjs-ui/icon/globalCustomIcons'
5
+ import UiProvider from './UiProvider'
6
+
7
+ let hasCustomElementsInitialized = false
8
+
9
+ export default createPlugin({
10
+ name: 'ui',
11
+ enabled: true,
12
+ order: 'system ui',
13
+ client: (props) => ({
14
+ renderRoot ({ children }) {
15
+ if (!hasCustomElementsInitialized) {
16
+ hasCustomElementsInitialized = true
17
+ const mergePlugins = (hookName, errorMessage, setFunction) => {
18
+ const data = MODULE.hook(hookName)
19
+ .reduce((allItems, pluginItems = {}) => {
20
+ for (const item in pluginItems) {
21
+ if (allItems[item]) {
22
+ console.warn(errorMessage(item))
23
+ }
24
+ }
25
+ return { ...allItems, ...pluginItems }
26
+ }, {})
27
+ setFunction(data)
28
+ }
29
+ mergePlugins('customIcons', ERRORS.iconAlreadyDefined, setCustomIcons)
30
+ mergePlugins('customInputs', ERRORS.inputAlreadyDefined, setCustomInputs)
31
+ }
32
+ return el(UiProvider, props, children)
33
+ }
34
+ })
35
+ })
36
+
37
+ const ERRORS = {
38
+ inputAlreadyDefined: input => `
39
+ Custom input type "${input}" is already defined by another plugin. It will be overridden!
40
+ `,
41
+ iconAlreadyDefined: icon => `
42
+ Custom icons "${icon}" is already defined by another plugin. It will be overridden!
43
+ `
44
+ }
package/CHANGELOG.md DELETED
@@ -1,9 +0,0 @@
1
- # v0.1.1 (Sun Nov 16 2025)
2
-
3
- #### ⚠️ Pushed to `master`
4
-
5
- - initial ([@cray0000](https://github.com/cray0000))
6
-
7
- #### Authors: 1
8
-
9
- - Pavel Zhukov ([@cray0000](https://github.com/cray0000))