@rbxts/uiblox 0.2.0-alpha.1 → 0.2.0-alpha.10
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.
- package/README.md +11 -8
- package/out/theme/constants/NumberConstants.d.ts +3 -1
- package/out/theme/constants/NumberConstants.luau +3 -0
- package/out/theme/context/ThemeProvider.d.ts +1 -1
- package/out/theme/hooks/useTheme.d.ts +1 -1
- package/out/theme/interfaces/palette/colorTokens/ColorTokens.d.ts +1 -1
- package/out/theme/interfaces/spacing/Shape.d.ts +3 -0
- package/out/theme/interfaces/typography/FontSizes.d.ts +1 -1
- package/out/theme/interfaces/typography/FontSizes.luau +15 -8
- package/out/theme/interfaces/typography/ThemeTypography.d.ts +3 -0
- package/out/theme/interfaces/typography/Variants.d.ts +14 -15
- package/out/theme/interfaces/typography/Variants.luau +68 -18
- package/out/theme/themes/DarkTheme.luau +4 -0
- package/out/theme/themes/LightTheme.luau +4 -0
- package/out/theme/types/types.d.ts +1 -1
- package/out/ui/packages/accordion/components/Accordion.d.ts +1 -0
- package/out/ui/packages/accordion/components/Accordion.luau +5 -0
- package/out/ui/packages/accordion/components/Accordion.styles.d.ts +1 -0
- package/out/ui/packages/accordion/components/Accordion.styles.luau +4 -2
- package/out/ui/packages/alert/components/Alert.d.ts +10 -0
- package/out/ui/packages/alert/components/Alert.luau +98 -0
- package/out/ui/packages/alert/components/Alert.styles.d.ts +6 -0
- package/out/ui/packages/alert/components/Alert.styles.luau +93 -0
- package/out/ui/packages/alert/components/alertTone.d.ts +2 -0
- package/out/ui/packages/alert/components/alertTone.luau +7 -0
- package/out/ui/packages/alert/index.d.ts +3 -0
- package/out/ui/packages/alert/init.luau +6 -0
- package/out/ui/packages/autocomplete/components/Autocomplete.luau +8 -0
- package/out/ui/packages/backdrop/components/Backdrop.d.ts +10 -0
- package/out/ui/packages/backdrop/components/Backdrop.luau +58 -0
- package/out/ui/packages/backdrop/components/Backdrop.styles.d.ts +4 -0
- package/out/ui/packages/backdrop/components/Backdrop.styles.luau +24 -0
- package/out/ui/packages/backdrop/index.d.ts +2 -0
- package/out/ui/packages/backdrop/init.luau +5 -0
- package/out/ui/packages/badge/components/Badge.styles.luau +6 -3
- package/out/ui/packages/breadcrumbs/components/Breadcrumbs.d.ts +1 -0
- package/out/ui/packages/breadcrumbs/components/Breadcrumbs.luau +58 -24
- package/out/ui/packages/breadcrumbs/components/breadcrumbItems.d.ts +9 -0
- package/out/ui/packages/breadcrumbs/components/breadcrumbItems.luau +68 -0
- package/out/ui/packages/breadcrumbs/index.d.ts +1 -0
- package/out/ui/packages/breadcrumbs/init.luau +3 -0
- package/out/ui/packages/brickColorPicker/components/brickColorCatalog.luau +1 -1
- package/out/ui/packages/button/components/Button.luau +9 -5
- package/out/ui/packages/checkbox/components/checkboxLook.d.ts +1 -1
- package/out/ui/packages/chip/components/Chip.d.ts +3 -1
- package/out/ui/packages/chip/components/Chip.luau +39 -2
- package/out/ui/packages/chip/components/Chip.styles.d.ts +3 -0
- package/out/ui/packages/chip/components/Chip.styles.luau +40 -6
- package/out/ui/packages/circularProgress/components/CircularProgress.luau +13 -2
- package/out/ui/packages/dialog/components/Dialog.d.ts +1 -1
- package/out/ui/packages/dialog/components/Dialog.luau +27 -18
- package/out/ui/packages/fab/components/Fab.d.ts +1 -0
- package/out/ui/packages/fab/components/Fab.luau +57 -25
- package/out/ui/packages/fab/components/Fab.styles.d.ts +1 -0
- package/out/ui/packages/fab/components/Fab.styles.luau +26 -1
- package/out/ui/packages/fab/components/fabSize.d.ts +1 -0
- package/out/ui/packages/fab/components/fabSize.luau +4 -0
- package/out/ui/packages/fab/index.d.ts +1 -1
- package/out/ui/packages/fab/init.luau +1 -0
- package/out/ui/packages/formText/components/FormHelperText.d.ts +8 -0
- package/out/ui/packages/formText/components/FormHelperText.luau +44 -0
- package/out/ui/packages/formText/components/FormLabel.d.ts +9 -0
- package/out/ui/packages/formText/components/FormLabel.luau +46 -0
- package/out/ui/packages/formText/components/FormText.styles.d.ts +5 -0
- package/out/ui/packages/formText/components/FormText.styles.luau +33 -0
- package/out/ui/packages/formText/index.d.ts +4 -0
- package/out/ui/packages/formText/init.luau +6 -0
- package/out/ui/packages/iconButton/components/IconButton.luau +7 -2
- package/out/ui/packages/iconButton/components/IconButton.styles.luau +3 -0
- package/out/ui/packages/imageList/components/ImageList.d.ts +14 -0
- package/out/ui/packages/imageList/components/ImageList.luau +84 -0
- package/out/ui/packages/imageList/components/ImageList.styles.d.ts +6 -0
- package/out/ui/packages/imageList/components/ImageList.styles.luau +54 -0
- package/out/ui/packages/imageList/components/imageListLayout.d.ts +3 -0
- package/out/ui/packages/imageList/components/imageListLayout.luau +24 -0
- package/out/ui/packages/imageList/index.d.ts +2 -0
- package/out/ui/packages/imageList/init.luau +5 -0
- package/out/ui/packages/index.d.ts +8 -0
- package/out/ui/packages/init.luau +24 -0
- package/out/ui/packages/input/components/Input.luau +1 -1
- package/out/ui/packages/layout/components/Box.d.ts +11 -0
- package/out/ui/packages/layout/components/Box.luau +49 -0
- package/out/ui/packages/layout/components/Box.styles.d.ts +7 -0
- package/out/ui/packages/layout/components/Box.styles.luau +34 -0
- package/out/ui/packages/layout/components/Container.d.ts +10 -0
- package/out/ui/packages/layout/components/Container.luau +54 -0
- package/out/ui/packages/layout/components/Container.styles.d.ts +6 -0
- package/out/ui/packages/layout/components/Container.styles.luau +41 -0
- package/out/ui/packages/layout/components/Grid.d.ts +1 -1
- package/out/ui/packages/layout/components/Stack.d.ts +12 -0
- package/out/ui/packages/layout/components/Stack.luau +49 -0
- package/out/ui/packages/layout/components/Stack.styles.d.ts +8 -0
- package/out/ui/packages/layout/components/Stack.styles.luau +72 -0
- package/out/ui/packages/layout/components/boxPad.d.ts +14 -0
- package/out/ui/packages/layout/components/boxPad.luau +59 -0
- package/out/ui/packages/layout/components/containerWidth.d.ts +2 -0
- package/out/ui/packages/layout/components/containerWidth.luau +17 -0
- package/out/ui/packages/layout/components/stackAlign.d.ts +8 -0
- package/out/ui/packages/layout/components/stackAlign.luau +29 -0
- package/out/ui/packages/layout/index.d.ts +10 -0
- package/out/ui/packages/layout/init.luau +4 -0
- package/out/ui/packages/link/components/Link.d.ts +11 -0
- package/out/ui/packages/link/components/Link.luau +83 -0
- package/out/ui/packages/link/components/Link.styles.d.ts +8 -0
- package/out/ui/packages/link/components/Link.styles.luau +59 -0
- package/out/ui/packages/link/index.d.ts +3 -0
- package/out/ui/packages/link/init.luau +5 -0
- package/out/ui/packages/listItem/components/ListItem.d.ts +1 -0
- package/out/ui/packages/listItem/components/ListItem.luau +5 -0
- package/out/ui/packages/listItem/components/ListItem.styles.d.ts +1 -0
- package/out/ui/packages/listItem/components/ListItem.styles.luau +10 -5
- package/out/ui/packages/loadingStroke/components/LoadingStroke.d.ts +2 -0
- package/out/ui/packages/loadingStroke/components/LoadingStroke.luau +23 -19
- package/out/ui/packages/menu/components/Menu.d.ts +3 -0
- package/out/ui/packages/menu/components/Menu.luau +48 -23
- package/out/ui/packages/menu/components/Menu.styles.luau +5 -1
- package/out/ui/packages/modal/components/Modal.d.ts +1 -1
- package/out/ui/packages/modal/components/Modal.luau +55 -37
- package/out/ui/packages/motion/index.d.ts +1 -1
- package/out/ui/packages/motion/init.luau +1 -0
- package/out/ui/packages/motion/unit.d.ts +5 -0
- package/out/ui/packages/motion/unit.luau +23 -0
- package/out/ui/packages/pagination/components/Pagination.d.ts +2 -0
- package/out/ui/packages/pagination/components/Pagination.luau +37 -21
- package/out/ui/packages/pagination/components/Pagination.styles.luau +9 -0
- package/out/ui/packages/pagination/components/pageRange.d.ts +2 -1
- package/out/ui/packages/pagination/components/pageRange.luau +91 -8
- package/out/ui/packages/pagination/index.d.ts +1 -0
- package/out/ui/packages/pagination/init.luau +1 -0
- package/out/ui/packages/paper/components/Paper.d.ts +1 -0
- package/out/ui/packages/paper/components/Paper.luau +8 -3
- package/out/ui/packages/popup/index.d.ts +1 -0
- package/out/ui/packages/popup/init.luau +1 -0
- package/out/ui/packages/radioGroup/components/RadioGroup.d.ts +1 -0
- package/out/ui/packages/radioGroup/components/RadioGroup.luau +4 -2
- package/out/ui/packages/radioGroup/components/RadioGroup.styles.d.ts +1 -0
- package/out/ui/packages/radioGroup/components/RadioGroup.styles.luau +4 -1
- package/out/ui/packages/rating/components/Rating.d.ts +9 -0
- package/out/ui/packages/rating/components/Rating.luau +95 -0
- package/out/ui/packages/rating/components/Rating.styles.d.ts +4 -0
- package/out/ui/packages/rating/components/Rating.styles.luau +39 -0
- package/out/ui/packages/rating/index.d.ts +2 -0
- package/out/ui/packages/rating/init.luau +5 -0
- package/out/ui/packages/select/components/Select.d.ts +5 -0
- package/out/ui/packages/select/components/Select.luau +48 -24
- package/out/ui/packages/select/components/Select.styles.luau +1 -1
- package/out/ui/packages/skeleton/components/Skeleton.luau +3 -2
- package/out/ui/packages/skeleton/components/Skeleton.styles.luau +7 -2
- package/out/ui/packages/skeleton/components/skeletonMotion.luau +1 -1
- package/out/ui/packages/skeleton/components/skeletonTone.d.ts +20 -0
- package/out/ui/packages/skeleton/components/skeletonTone.luau +14 -0
- package/out/ui/packages/slider/components/Slider.d.ts +1 -0
- package/out/ui/packages/slider/components/Slider.luau +24 -1
- package/out/ui/packages/slider/components/Slider.styles.luau +8 -0
- package/out/ui/packages/slider/components/sliderMarks.d.ts +1 -0
- package/out/ui/packages/slider/components/sliderMarks.luau +37 -0
- package/out/ui/packages/speedDial/components/SpeedDial.d.ts +17 -0
- package/out/ui/packages/speedDial/components/SpeedDial.luau +92 -0
- package/out/ui/packages/speedDial/components/SpeedDial.styles.d.ts +2 -0
- package/out/ui/packages/speedDial/components/SpeedDial.styles.luau +26 -0
- package/out/ui/packages/speedDial/index.d.ts +2 -0
- package/out/ui/packages/speedDial/init.luau +5 -0
- package/out/ui/packages/splitPane/components/splitLook.d.ts +1 -1
- package/out/ui/packages/stateMatrix.d.ts +2 -0
- package/out/ui/packages/stateMatrix.luau +1843 -1437
- package/out/ui/packages/switch/components/Switch.styles.luau +1 -1
- package/out/ui/packages/switch/components/switchLook.d.ts +3 -3
- package/out/ui/packages/tabs/components/Tabs.d.ts +2 -0
- package/out/ui/packages/tabs/components/Tabs.luau +10 -3
- package/out/ui/packages/tabs/components/Tabs.styles.d.ts +4 -1
- package/out/ui/packages/tabs/components/Tabs.styles.luau +24 -10
- package/out/ui/packages/tabs/components/tabsOrientation.d.ts +2 -0
- package/out/ui/packages/tabs/components/tabsOrientation.luau +7 -0
- package/out/ui/packages/tabs/index.d.ts +1 -0
- package/out/ui/packages/tabs/init.luau +1 -0
- package/out/ui/packages/toast/components/Toast.styles.luau +1 -1
- package/out/ui/packages/toggleButton/components/ToggleButton.d.ts +17 -0
- package/out/ui/packages/toggleButton/components/ToggleButton.luau +126 -0
- package/out/ui/packages/toggleButton/components/ToggleButton.styles.d.ts +5 -0
- package/out/ui/packages/toggleButton/components/ToggleButton.styles.luau +58 -0
- package/out/ui/packages/toggleButton/index.d.ts +2 -0
- package/out/ui/packages/toggleButton/init.luau +7 -0
- package/out/ui/packages/typography/components/Typography.styles.luau +4 -5
- package/out/ui/packages/virtualList/components/EmptyListHint.d.ts +6 -0
- package/out/ui/packages/virtualList/components/EmptyListHint.luau +32 -0
- package/out/ui/packages/virtualList/components/EmptyListHint.styles.d.ts +5 -0
- package/out/ui/packages/virtualList/components/EmptyListHint.styles.luau +26 -0
- package/out/ui/packages/virtualList/index.d.ts +2 -0
- package/out/ui/packages/virtualList/init.luau +1 -0
- package/package.json +2 -2
|
@@ -9,4 +9,8 @@ exports.List = TS.import(script, script, "components", "List").default
|
|
|
9
9
|
for _k, _v in TS.import(script, script, "components", "List") or {} do
|
|
10
10
|
exports[_k] = _v
|
|
11
11
|
end
|
|
12
|
+
exports.Stack = TS.import(script, script, "components", "Stack").default
|
|
13
|
+
exports.Box = TS.import(script, script, "components", "Box").default
|
|
14
|
+
exports.Container = TS.import(script, script, "components", "Container").default
|
|
15
|
+
exports.containerMaxPx = TS.import(script, script, "components", "containerWidth").containerMaxPx
|
|
12
16
|
return exports
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CustomizedProps } from "../../../../theme/index";
|
|
2
|
+
import { LinkColor, LinkUnderline } from "./Link.styles";
|
|
3
|
+
export interface LinkProps {
|
|
4
|
+
text: string;
|
|
5
|
+
color?: LinkColor;
|
|
6
|
+
underline?: LinkUnderline;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
onActivated?: () => void;
|
|
9
|
+
}
|
|
10
|
+
declare function Link(props: CustomizedProps<TextButton, LinkProps>): JSX.Element;
|
|
11
|
+
export default Link;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
-- Compiled with roblox-ts v3.0.0
|
|
2
|
+
local TS = _G[script]
|
|
3
|
+
local _react = TS.import(script, TS.getModule(script, "@rbxts", "react"))
|
|
4
|
+
local React = _react
|
|
5
|
+
local useState = _react.useState
|
|
6
|
+
local canActivate = TS.import(script, script.Parent.Parent.Parent, "button", "components", "activation").canActivate
|
|
7
|
+
local useLinkStyles = TS.import(script, script.Parent, "Link.styles").default
|
|
8
|
+
local function Link(props)
|
|
9
|
+
local _binding = props
|
|
10
|
+
local text = _binding.text
|
|
11
|
+
local color = _binding.color
|
|
12
|
+
if color == nil then
|
|
13
|
+
color = "primary"
|
|
14
|
+
end
|
|
15
|
+
local underline = _binding.underline
|
|
16
|
+
if underline == nil then
|
|
17
|
+
underline = "always"
|
|
18
|
+
end
|
|
19
|
+
local disabled = _binding.disabled
|
|
20
|
+
local onActivated = _binding.onActivated
|
|
21
|
+
local className = _binding.className
|
|
22
|
+
local sx = _binding.sx
|
|
23
|
+
local id = _binding.id
|
|
24
|
+
local ref = _binding.ref
|
|
25
|
+
local hover, setHover = useState(false)
|
|
26
|
+
local showUnderline = underline == "always" or (underline == "hover" and hover)
|
|
27
|
+
local styles = useLinkStyles({
|
|
28
|
+
color = color,
|
|
29
|
+
disabled = disabled,
|
|
30
|
+
showUnderline = showUnderline,
|
|
31
|
+
})
|
|
32
|
+
local active = canActivate(disabled)
|
|
33
|
+
local _attributes = {}
|
|
34
|
+
local _condition = id
|
|
35
|
+
if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
|
|
36
|
+
_condition = "Link"
|
|
37
|
+
end
|
|
38
|
+
_attributes.key = _condition
|
|
39
|
+
_attributes.ref = ref
|
|
40
|
+
for _k, _v in styles.root do
|
|
41
|
+
_attributes[_k] = _v
|
|
42
|
+
end
|
|
43
|
+
if className then
|
|
44
|
+
for _k, _v in className do
|
|
45
|
+
_attributes[_k] = _v
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
if sx then
|
|
49
|
+
for _k, _v in sx do
|
|
50
|
+
_attributes[_k] = _v
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
_attributes.Text = text
|
|
54
|
+
_attributes.Active = active
|
|
55
|
+
_attributes.Selectable = active
|
|
56
|
+
_attributes.Event = {
|
|
57
|
+
Activated = function()
|
|
58
|
+
if active then
|
|
59
|
+
local _result = onActivated
|
|
60
|
+
if _result ~= nil then
|
|
61
|
+
_result()
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end,
|
|
65
|
+
MouseEnter = function()
|
|
66
|
+
return setHover(true)
|
|
67
|
+
end,
|
|
68
|
+
MouseLeave = function()
|
|
69
|
+
return setHover(false)
|
|
70
|
+
end,
|
|
71
|
+
}
|
|
72
|
+
local _attributes_1 = {
|
|
73
|
+
key = "Underline",
|
|
74
|
+
}
|
|
75
|
+
for _k, _v in styles.underline do
|
|
76
|
+
_attributes_1[_k] = _v
|
|
77
|
+
end
|
|
78
|
+
return React.createElement("textbutton", _attributes, React.createElement("frame", _attributes_1))
|
|
79
|
+
end
|
|
80
|
+
local default = Link
|
|
81
|
+
return {
|
|
82
|
+
default = default,
|
|
83
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type LinkColor = "primary" | "inherit" | "error";
|
|
2
|
+
export type LinkUnderline = "always" | "hover" | "none";
|
|
3
|
+
declare const useLinkStyles: (props: {
|
|
4
|
+
color?: LinkColor;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
showUnderline?: boolean;
|
|
7
|
+
}) => import("../../../../theme/index").ClassNameMap<string>;
|
|
8
|
+
export default useLinkStyles;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
-- Compiled with roblox-ts v3.0.0
|
|
2
|
+
local TS = _G[script]
|
|
3
|
+
local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme")
|
|
4
|
+
local componentStyles = _theme.componentStyles
|
|
5
|
+
local createStyles = _theme.createStyles
|
|
6
|
+
local function linkColor(theme, color, disabled)
|
|
7
|
+
if disabled then
|
|
8
|
+
return theme.palette.text.disabled
|
|
9
|
+
end
|
|
10
|
+
if color == "error" then
|
|
11
|
+
return theme.palette.status.error.main
|
|
12
|
+
end
|
|
13
|
+
if color == "inherit" then
|
|
14
|
+
return theme.palette.text.primary
|
|
15
|
+
end
|
|
16
|
+
return theme.palette.primary.main
|
|
17
|
+
end
|
|
18
|
+
local useLinkStyles = componentStyles("Link", function(theme, _param)
|
|
19
|
+
local color = _param.color
|
|
20
|
+
if color == nil then
|
|
21
|
+
color = "primary"
|
|
22
|
+
end
|
|
23
|
+
local disabled = _param.disabled
|
|
24
|
+
if disabled == nil then
|
|
25
|
+
disabled = false
|
|
26
|
+
end
|
|
27
|
+
local showUnderline = _param.showUnderline
|
|
28
|
+
if showUnderline == nil then
|
|
29
|
+
showUnderline = true
|
|
30
|
+
end
|
|
31
|
+
local ink = linkColor(theme, color, disabled)
|
|
32
|
+
return createStyles({
|
|
33
|
+
root = {
|
|
34
|
+
AutomaticSize = Enum.AutomaticSize.XY,
|
|
35
|
+
Size = UDim2.fromScale(0, 0),
|
|
36
|
+
BackgroundTransparency = 1,
|
|
37
|
+
BorderSizePixel = 0,
|
|
38
|
+
AutoButtonColor = false,
|
|
39
|
+
Active = not disabled,
|
|
40
|
+
Selectable = not disabled,
|
|
41
|
+
TextColor3 = ink,
|
|
42
|
+
Font = theme.typography.fontFamilies.default,
|
|
43
|
+
TextSize = theme.typography.fontSizes.body,
|
|
44
|
+
TextXAlignment = Enum.TextXAlignment.Left,
|
|
45
|
+
},
|
|
46
|
+
underline = {
|
|
47
|
+
Size = UDim2.new(1, 0, 0, 1),
|
|
48
|
+
Position = UDim2.new(0, 0, 1, 0),
|
|
49
|
+
AnchorPoint = Vector2.new(0, 1),
|
|
50
|
+
BackgroundColor3 = ink,
|
|
51
|
+
BackgroundTransparency = if showUnderline then 0 else 1,
|
|
52
|
+
BorderSizePixel = 0,
|
|
53
|
+
},
|
|
54
|
+
})
|
|
55
|
+
end)
|
|
56
|
+
local default = useLinkStyles
|
|
57
|
+
return {
|
|
58
|
+
default = default,
|
|
59
|
+
}
|
|
@@ -14,10 +14,15 @@ local function ListItem(props)
|
|
|
14
14
|
if disabled == nil then
|
|
15
15
|
disabled = false
|
|
16
16
|
end
|
|
17
|
+
local dense = _binding.dense
|
|
18
|
+
if dense == nil then
|
|
19
|
+
dense = false
|
|
20
|
+
end
|
|
17
21
|
local onActivated = _binding.onActivated
|
|
18
22
|
local styles = useListItemStyles({
|
|
19
23
|
selected = selected,
|
|
20
24
|
disabled = disabled,
|
|
25
|
+
dense = dense,
|
|
21
26
|
})
|
|
22
27
|
local _attributes = {
|
|
23
28
|
key = "ListItem",
|
|
@@ -12,6 +12,11 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
|
|
|
12
12
|
if disabled == nil then
|
|
13
13
|
disabled = false
|
|
14
14
|
end
|
|
15
|
+
local dense = _param.dense
|
|
16
|
+
if dense == nil then
|
|
17
|
+
dense = false
|
|
18
|
+
end
|
|
19
|
+
local pad = theme.padding.calc(if dense == true then 0.5 else 1)
|
|
15
20
|
return createStyles({
|
|
16
21
|
root = {
|
|
17
22
|
Size = UDim2.new(1, 0, 0, 0),
|
|
@@ -25,10 +30,10 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
|
|
|
25
30
|
Selectable = not disabled,
|
|
26
31
|
},
|
|
27
32
|
padding = {
|
|
28
|
-
PaddingTop = UDim.new(0,
|
|
29
|
-
PaddingBottom = UDim.new(0,
|
|
30
|
-
PaddingLeft = UDim.new(0,
|
|
31
|
-
PaddingRight = UDim.new(0,
|
|
33
|
+
PaddingTop = UDim.new(0, pad),
|
|
34
|
+
PaddingBottom = UDim.new(0, pad),
|
|
35
|
+
PaddingLeft = UDim.new(0, pad),
|
|
36
|
+
PaddingRight = UDim.new(0, pad),
|
|
32
37
|
},
|
|
33
38
|
list = {
|
|
34
39
|
FillDirection = Enum.FillDirection.Vertical,
|
|
@@ -41,7 +46,7 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
|
|
|
41
46
|
BackgroundTransparency = 1,
|
|
42
47
|
BorderSizePixel = 0,
|
|
43
48
|
Font = theme.typography.fontFamilies.default,
|
|
44
|
-
TextSize = theme.typography.fontSizes.body,
|
|
49
|
+
TextSize = if dense == true then theme.typography.fontSizes.caption else theme.typography.fontSizes.body,
|
|
45
50
|
TextColor3 = if disabled then theme.palette.text.disabled else theme.palette.text.primary,
|
|
46
51
|
TextXAlignment = Enum.TextXAlignment.Left,
|
|
47
52
|
},
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { CustomizedProps } from "../../../../theme/index";
|
|
2
2
|
export interface LoadingStrokeProps {
|
|
3
3
|
animating?: boolean;
|
|
4
|
+
color?: Color3;
|
|
5
|
+
thickness?: number;
|
|
4
6
|
}
|
|
5
7
|
declare function LoadingStroke(props: CustomizedProps<UIStroke, LoadingStrokeProps>): JSX.Element;
|
|
6
8
|
export default LoadingStroke;
|
|
@@ -4,37 +4,41 @@ local _react = TS.import(script, TS.getModule(script, "@rbxts", "react"))
|
|
|
4
4
|
local React = _react
|
|
5
5
|
local useEffect = _react.useEffect
|
|
6
6
|
local useRef = _react.useRef
|
|
7
|
-
local
|
|
7
|
+
local useTheme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme").useTheme
|
|
8
|
+
local loopProperty = TS.import(script, script.Parent.Parent.Parent, "motion").loopProperty
|
|
8
9
|
local function LoadingStroke(props)
|
|
9
10
|
local _binding = props
|
|
10
11
|
local animating = _binding.animating
|
|
11
12
|
if animating == nil then
|
|
12
13
|
animating = false
|
|
13
14
|
end
|
|
15
|
+
local color = _binding.color
|
|
16
|
+
local thickness = _binding.thickness
|
|
17
|
+
if thickness == nil then
|
|
18
|
+
thickness = 2
|
|
19
|
+
end
|
|
14
20
|
local className = _binding.className
|
|
15
21
|
local sx = _binding.sx
|
|
16
22
|
local children = _binding.children
|
|
17
23
|
local id = _binding.id
|
|
18
24
|
local ref = _binding.ref
|
|
25
|
+
local _binding_1 = useTheme()
|
|
26
|
+
local theme = _binding_1.theme
|
|
19
27
|
local gradientRef = useRef()
|
|
28
|
+
local stroke = color or theme.palette.primary.on
|
|
20
29
|
useEffect(function()
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
else
|
|
31
|
-
gradientRef.current.Rotation = 0
|
|
32
|
-
end
|
|
30
|
+
local gradient = gradientRef.current
|
|
31
|
+
if not gradient then
|
|
32
|
+
return nil
|
|
33
|
+
end
|
|
34
|
+
if animating then
|
|
35
|
+
gradient.Rotation = 0
|
|
36
|
+
return loopProperty(gradient, {
|
|
37
|
+
Rotation = 360,
|
|
38
|
+
}, 1.2)
|
|
33
39
|
end
|
|
40
|
+
gradient.Rotation = 0
|
|
34
41
|
end, { animating })
|
|
35
|
-
-- Decorative shimmer; not a semantic text/surface token.
|
|
36
|
-
local stroke = Color3.fromRGB(255, 255, 255)
|
|
37
|
-
local mid = Color3.fromRGB(235, 235, 235)
|
|
38
42
|
local _attributes = {}
|
|
39
43
|
local _condition = id
|
|
40
44
|
if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
|
|
@@ -43,7 +47,7 @@ local function LoadingStroke(props)
|
|
|
43
47
|
_attributes.key = _condition
|
|
44
48
|
_attributes.ref = ref
|
|
45
49
|
_attributes.Color = stroke
|
|
46
|
-
_attributes.Thickness =
|
|
50
|
+
_attributes.Thickness = thickness
|
|
47
51
|
_attributes.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
|
|
48
52
|
if className then
|
|
49
53
|
for _k, _v in className do
|
|
@@ -57,9 +61,9 @@ local function LoadingStroke(props)
|
|
|
57
61
|
end
|
|
58
62
|
return React.createElement("uistroke", _attributes, React.createElement("uigradient", {
|
|
59
63
|
ref = gradientRef,
|
|
60
|
-
Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.
|
|
64
|
+
Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.45, 0), NumberSequenceKeypoint.new(0.55, 0), NumberSequenceKeypoint.new(1, 1) }),
|
|
61
65
|
Rotation = 0,
|
|
62
|
-
Color = ColorSequence.new(
|
|
66
|
+
Color = ColorSequence.new(stroke),
|
|
63
67
|
}), children)
|
|
64
68
|
end
|
|
65
69
|
local default = LoadingStroke
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "@rbxts/react";
|
|
1
2
|
export interface MenuItem {
|
|
2
3
|
id: string;
|
|
3
4
|
text: string;
|
|
@@ -9,6 +10,8 @@ export interface MenuProps {
|
|
|
9
10
|
items: MenuItem[];
|
|
10
11
|
onSelect: (id: string) => void;
|
|
11
12
|
onClose: () => void;
|
|
13
|
+
emptyText?: string;
|
|
14
|
+
empty?: React.Element;
|
|
12
15
|
}
|
|
13
16
|
declare function Menu(props: MenuProps): JSX.Element | undefined;
|
|
14
17
|
export default Menu;
|
|
@@ -3,6 +3,7 @@ local TS = _G[script]
|
|
|
3
3
|
local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
|
|
4
4
|
local ListItem = TS.import(script, script.Parent.Parent.Parent, "listItem").ListItem
|
|
5
5
|
local Popup = TS.import(script, script.Parent.Parent.Parent, "popup").Popup
|
|
6
|
+
local EmptyListHint = TS.import(script, script.Parent.Parent.Parent, "virtualList").EmptyListHint
|
|
6
7
|
local useMenuStyles = TS.import(script, script.Parent, "Menu.styles").default
|
|
7
8
|
local ROW = 28
|
|
8
9
|
local function Menu(props)
|
|
@@ -12,10 +13,14 @@ local function Menu(props)
|
|
|
12
13
|
local items = _binding.items
|
|
13
14
|
local onSelect = _binding.onSelect
|
|
14
15
|
local onClose = _binding.onClose
|
|
16
|
+
local emptyText = _binding.emptyText
|
|
17
|
+
local empty = _binding.empty
|
|
15
18
|
local styles = useMenuStyles()
|
|
16
19
|
if not open then
|
|
17
20
|
return nil
|
|
18
21
|
end
|
|
22
|
+
local vacant = #items == 0
|
|
23
|
+
local height = if vacant then ROW else #items * ROW
|
|
19
24
|
local _attributes = {
|
|
20
25
|
key = "Surface",
|
|
21
26
|
}
|
|
@@ -25,34 +30,54 @@ local function Menu(props)
|
|
|
25
30
|
local _attributes_1 = table.clone(styles.corner)
|
|
26
31
|
setmetatable(_attributes_1, nil)
|
|
27
32
|
local _exp = React.createElement("uicorner", _attributes_1)
|
|
28
|
-
local _attributes_2 = table.clone(styles.
|
|
33
|
+
local _attributes_2 = table.clone(styles.stroke)
|
|
29
34
|
setmetatable(_attributes_2, nil)
|
|
30
|
-
local _exp_1 = React.createElement("
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
local
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
local _exp_1 = React.createElement("uistroke", _attributes_2)
|
|
36
|
+
local _attributes_3 = table.clone(styles.list)
|
|
37
|
+
setmetatable(_attributes_3, nil)
|
|
38
|
+
local _exp_2 = React.createElement("uilistlayout", _attributes_3)
|
|
39
|
+
local _result
|
|
40
|
+
if vacant then
|
|
41
|
+
local _condition = empty
|
|
42
|
+
if _condition == nil then
|
|
43
|
+
local _attributes_4 = {}
|
|
44
|
+
local _condition_1 = emptyText
|
|
45
|
+
if _condition_1 == nil then
|
|
46
|
+
_condition_1 = "No options"
|
|
47
|
+
end
|
|
48
|
+
_attributes_4.text = _condition_1
|
|
49
|
+
_attributes_4.height = ROW
|
|
50
|
+
_condition = React.createElement(EmptyListHint, _attributes_4)
|
|
51
|
+
end
|
|
52
|
+
_result = _condition
|
|
53
|
+
else
|
|
54
|
+
-- ▼ ReadonlyArray.map ▼
|
|
55
|
+
local _newValue = table.create(#items)
|
|
56
|
+
local _callback = function(item)
|
|
57
|
+
return React.createElement(ListItem, {
|
|
58
|
+
key = item.id,
|
|
59
|
+
text = item.text,
|
|
60
|
+
disabled = item.disabled,
|
|
61
|
+
onActivated = function()
|
|
62
|
+
if item.disabled == true then
|
|
63
|
+
return nil
|
|
64
|
+
end
|
|
65
|
+
onSelect(item.id)
|
|
66
|
+
onClose()
|
|
67
|
+
end,
|
|
68
|
+
})
|
|
69
|
+
end
|
|
70
|
+
for _k, _v in items do
|
|
71
|
+
_newValue[_k] = _callback(_v, _k - 1, items)
|
|
72
|
+
end
|
|
73
|
+
-- ▲ ReadonlyArray.map ▲
|
|
74
|
+
_result = _newValue
|
|
46
75
|
end
|
|
47
|
-
for _k, _v in items do
|
|
48
|
-
_newValue[_k] = _callback(_v, _k - 1, items)
|
|
49
|
-
end
|
|
50
|
-
-- ▲ ReadonlyArray.map ▲
|
|
51
76
|
return React.createElement(Popup, {
|
|
52
77
|
anchor = anchor,
|
|
53
|
-
preferredHeight =
|
|
78
|
+
preferredHeight = height,
|
|
54
79
|
onDismiss = onClose,
|
|
55
|
-
}, React.createElement("frame", _attributes, _exp, _exp_1,
|
|
80
|
+
}, React.createElement("frame", _attributes, _exp, _exp_1, _exp_2, _result))
|
|
56
81
|
end
|
|
57
82
|
local default = Menu
|
|
58
83
|
return {
|
|
@@ -8,12 +8,16 @@ local useMenuStyles = componentStyles("Menu", function(theme)
|
|
|
8
8
|
surface = {
|
|
9
9
|
Size = UDim2.new(1, 0, 0, 0),
|
|
10
10
|
AutomaticSize = Enum.AutomaticSize.Y,
|
|
11
|
-
BackgroundColor3 = theme.palette.surface.
|
|
11
|
+
BackgroundColor3 = theme.palette.surface.elevated,
|
|
12
12
|
BorderSizePixel = 0,
|
|
13
13
|
},
|
|
14
14
|
corner = {
|
|
15
15
|
CornerRadius = UDim.new(0, theme.shape.borderRadius),
|
|
16
16
|
},
|
|
17
|
+
stroke = {
|
|
18
|
+
Color = theme.palette.border,
|
|
19
|
+
ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
|
|
20
|
+
},
|
|
17
21
|
list = {
|
|
18
22
|
FillDirection = Enum.FillDirection.Vertical,
|
|
19
23
|
SortOrder = Enum.SortOrder.LayoutOrder,
|
|
@@ -4,10 +4,13 @@ local _react = TS.import(script, TS.getModule(script, "@rbxts", "react"))
|
|
|
4
4
|
local React = _react
|
|
5
5
|
local useEffect = _react.useEffect
|
|
6
6
|
local useRef = _react.useRef
|
|
7
|
+
local useState = _react.useState
|
|
7
8
|
local _services = TS.import(script, TS.getModule(script, "@rbxts", "services"))
|
|
8
9
|
local GuiService = _services.GuiService
|
|
9
10
|
local UserInputService = _services.UserInputService
|
|
10
|
-
local
|
|
11
|
+
local _popup = TS.import(script, script.Parent.Parent.Parent, "popup")
|
|
12
|
+
local Portal = _popup.Portal
|
|
13
|
+
local portalTarget = _popup.portalTarget
|
|
11
14
|
local isDismissInput = TS.import(script, script.Parent, "dismissInput").isDismissInput
|
|
12
15
|
local _focusTrap = TS.import(script, script.Parent, "focusTrap")
|
|
13
16
|
local isFocusable = _focusTrap.isFocusable
|
|
@@ -22,7 +25,14 @@ local function Modal(props)
|
|
|
22
25
|
local styles = useModalStyles()
|
|
23
26
|
local close = useRef(onClose)
|
|
24
27
|
local surface = useRef()
|
|
28
|
+
local anchor = useRef()
|
|
29
|
+
local layer, setLayer = useState(function()
|
|
30
|
+
return portalTarget(host)
|
|
31
|
+
end)
|
|
25
32
|
close.current = onClose
|
|
33
|
+
useEffect(function()
|
|
34
|
+
setLayer(portalTarget(host or anchor.current))
|
|
35
|
+
end, { host, open })
|
|
26
36
|
useEffect(function()
|
|
27
37
|
if not open then
|
|
28
38
|
return nil
|
|
@@ -53,43 +63,51 @@ local function Modal(props)
|
|
|
53
63
|
GuiService.SelectedObject = previous
|
|
54
64
|
end
|
|
55
65
|
end
|
|
56
|
-
end, { open })
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
66
|
+
end, { open, layer })
|
|
67
|
+
local _exp = React.createElement("frame", {
|
|
68
|
+
key = "ModalAnchor",
|
|
69
|
+
ref = anchor,
|
|
70
|
+
Size = UDim2.fromOffset(0, 0),
|
|
71
|
+
BackgroundTransparency = 1,
|
|
72
|
+
BorderSizePixel = 0,
|
|
73
|
+
})
|
|
74
|
+
local _condition = open and layer ~= nil
|
|
75
|
+
if _condition then
|
|
76
|
+
local _attributes = {
|
|
77
|
+
key = "Modal",
|
|
78
|
+
}
|
|
79
|
+
for _k, _v in styles.root do
|
|
80
|
+
_attributes[_k] = _v
|
|
81
|
+
end
|
|
82
|
+
local _attributes_1 = {
|
|
83
|
+
key = "Backdrop",
|
|
84
|
+
}
|
|
85
|
+
for _k, _v in styles.backdrop do
|
|
86
|
+
_attributes_1[_k] = _v
|
|
87
|
+
end
|
|
88
|
+
_attributes_1.Event = {
|
|
89
|
+
Activated = function()
|
|
90
|
+
return close.current()
|
|
91
|
+
end,
|
|
92
|
+
}
|
|
93
|
+
local _exp_1 = React.createElement("textbutton", _attributes_1)
|
|
94
|
+
local _attributes_2 = {
|
|
95
|
+
key = "Surface",
|
|
96
|
+
ref = surface,
|
|
97
|
+
}
|
|
98
|
+
for _k, _v in styles.surface do
|
|
99
|
+
_attributes_2[_k] = _v
|
|
100
|
+
end
|
|
101
|
+
local _attributes_3 = table.clone(styles.padding)
|
|
102
|
+
setmetatable(_attributes_3, nil)
|
|
103
|
+
local _exp_2 = React.createElement("uipadding", _attributes_3)
|
|
104
|
+
local _attributes_4 = table.clone(styles.corner)
|
|
105
|
+
setmetatable(_attributes_4, nil)
|
|
106
|
+
_condition = (React.createElement(Portal, {
|
|
107
|
+
host = layer,
|
|
108
|
+
}, React.createElement("frame", _attributes, _exp_1, React.createElement("frame", _attributes_2, _exp_2, React.createElement("uicorner", _attributes_4), children))))
|
|
84
109
|
end
|
|
85
|
-
|
|
86
|
-
setmetatable(_attributes_3, nil)
|
|
87
|
-
local _exp_1 = React.createElement("uipadding", _attributes_3)
|
|
88
|
-
local _attributes_4 = table.clone(styles.corner)
|
|
89
|
-
setmetatable(_attributes_4, nil)
|
|
90
|
-
return React.createElement(Portal, {
|
|
91
|
-
host = host,
|
|
92
|
-
}, React.createElement("frame", _attributes, _exp, React.createElement("frame", _attributes_2, _exp_1, React.createElement("uicorner", _attributes_4), children)))
|
|
110
|
+
return React.createElement(React.Fragment, nil, _exp, _condition)
|
|
93
111
|
end
|
|
94
112
|
local default = Modal
|
|
95
113
|
return {
|
|
@@ -2,4 +2,4 @@ export { loopProperty } from "./loop";
|
|
|
2
2
|
export { motionDuration, assignGoal } from "./duration";
|
|
3
3
|
export { playProperty } from "./play";
|
|
4
4
|
export { resolveReduced } from "./resolveReduced";
|
|
5
|
-
export { clampUnit, stopOnce, progressUnit, progressSpin, arcKeys } from "./unit";
|
|
5
|
+
export { clampUnit, stopOnce, progressUnit, progressSpin, arcKeys, spinArcKeys } from "./unit";
|
|
@@ -6,3 +6,8 @@ export declare function arcKeys(value: number): {
|
|
|
6
6
|
time: number;
|
|
7
7
|
transparency: number;
|
|
8
8
|
}[];
|
|
9
|
+
/** Indeterminate ring: long clear trail, bright head — reads as a sweep. */
|
|
10
|
+
export declare function spinArcKeys(): {
|
|
11
|
+
time: number;
|
|
12
|
+
transparency: number;
|
|
13
|
+
}[];
|
|
@@ -71,10 +71,33 @@ local function arcKeys(value)
|
|
|
71
71
|
transparency = 1,
|
|
72
72
|
} }
|
|
73
73
|
end
|
|
74
|
+
--* Indeterminate ring: long clear trail, bright head — reads as a sweep.
|
|
75
|
+
local function spinArcKeys()
|
|
76
|
+
return { {
|
|
77
|
+
time = 0,
|
|
78
|
+
transparency = 1,
|
|
79
|
+
}, {
|
|
80
|
+
time = 0.45,
|
|
81
|
+
transparency = 1,
|
|
82
|
+
}, {
|
|
83
|
+
time = 0.7,
|
|
84
|
+
transparency = 0.55,
|
|
85
|
+
}, {
|
|
86
|
+
time = 0.88,
|
|
87
|
+
transparency = 0,
|
|
88
|
+
}, {
|
|
89
|
+
time = 0.96,
|
|
90
|
+
transparency = 0.35,
|
|
91
|
+
}, {
|
|
92
|
+
time = 1,
|
|
93
|
+
transparency = 1,
|
|
94
|
+
} }
|
|
95
|
+
end
|
|
74
96
|
return {
|
|
75
97
|
clampUnit = clampUnit,
|
|
76
98
|
stopOnce = stopOnce,
|
|
77
99
|
progressUnit = progressUnit,
|
|
78
100
|
progressSpin = progressSpin,
|
|
79
101
|
arcKeys = arcKeys,
|
|
102
|
+
spinArcKeys = spinArcKeys,
|
|
80
103
|
}
|