From 93b046f86f8c50847e6e9e6574db474fdfcdaa58 Mon Sep 17 00:00:00 2001 From: iSophes Date: Thu, 20 Mar 2025 21:49:49 +0000 Subject: [PATCH 1/2] feat: icon customise in button, version bump, change to rokit, styling changes --- README.md | 4 +- aftman.toml | 8 - ignite-test.rbxl | Bin 0 -> 116539 bytes rokit.toml | 8 + sourcemap.json | 2 +- src/Components/Button.luau | 296 +++++++++++++++++++++++------------- src/Modules/TableUtils.luau | 26 ++-- src/init.luau | 89 +++++------ test.project.json | 18 ++- test/Main.server.luau | 84 +++++----- test_datamodel.project.json | 5 +- wally.lock | 4 +- wally.toml | 2 +- 13 files changed, 325 insertions(+), 221 deletions(-) delete mode 100644 aftman.toml create mode 100644 ignite-test.rbxl create mode 100644 rokit.toml diff --git a/README.md b/README.md index 4c4e76e..953d95c 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ Ignite is a UI library for developing Roblox plugins. It includes 10+ goregeous ## Getting Started -1. Install Ignite via [Wally](https://wally.run/package/cameronpcampbell/ignite?version=1.0.0) or via [github releases](https://github.com/cameronpcampbell/Ignite/releases). +1. Install Ignite via [Wally](https://wally.run/package/cameronpcampbell/ignite?version=1.2.2) or via [github releases](https://github.com/cameronpcampbell/Ignite/releases). ``` -ignite = "mightypart/ignite@1.0.0" +ignite = "mightypart/ignite@1.2.2" ``` 2. Setup your `default.project.json` (if using rojo). diff --git a/aftman.toml b/aftman.toml deleted file mode 100644 index b6a4a63..0000000 --- a/aftman.toml +++ /dev/null @@ -1,8 +0,0 @@ -# This file lists tools managed by Aftman, a cross-platform toolchain manager. -# For more information, see https://github.com/LPGhatguy/aftman - -# To add a new tool, add an entry to this table. -[tools] -rojo = "rojo-rbx/rojo@7.4.3" -wally = "UpliftGames/wally@0.3.2" -# rojo = "rojo-rbx/rojo@6.2.0" \ No newline at end of file diff --git a/ignite-test.rbxl b/ignite-test.rbxl new file mode 100644 index 0000000000000000000000000000000000000000..ce48ee73d7f42941aa253c3716f7024fd24d32d4 GIT binary patch literal 116539 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 z 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 literal 0 HcmV?d00001 diff --git a/rokit.toml b/rokit.toml new file mode 100644 index 0000000..6c948b7 --- /dev/null +++ b/rokit.toml @@ -0,0 +1,8 @@ +# This file lists tools managed by Rokit, a toolchain manager for Roblox projects. +# For more information, see https://github.com/rojo-rbx/rokit + +# New tools can be added by running `rokit add ` in a terminal. + +[tools] +rojo = "rojo-rbx/rojo@7.4.3" +wally = "UpliftGames/wally@0.3.2" diff --git a/sourcemap.json b/sourcemap.json index 15d243a..ce44fc0 100644 --- a/sourcemap.json +++ b/sourcemap.json @@ -1 +1 @@ -{"name":"Ignite","className":"DataModel","filePaths":["test_datamodel.project.json"],"children":[{"name":"ServerStorage","className":"ServerStorage","children":[{"name":"Plugin","className":"Folder","children":[{"name":"Main","className":"Script","filePaths":["test/Main.server.luau"]},{"name":"Packages","className":"Folder","children":[{"name":"Fusion","className":"ModuleScript","filePaths":["Packages/Fusion.lua"]},{"name":"Highlighter","className":"ModuleScript","filePaths":["Packages/Highlighter.lua"]},{"name":"_Index","className":"Folder","children":[{"name":"boatbomber_highlighter@0.8.3","className":"Folder","children":[{"name":"highlighter","className":"ModuleScript","filePaths":["Packages/_Index/boatbomber_highlighter@0.8.3/highlighter/src/init.lua","Packages/_Index/boatbomber_highlighter@0.8.3/highlighter/default.project.json"],"children":[{"name":"lexer","className":"ModuleScript","filePaths":["Packages/_Index/boatbomber_highlighter@0.8.3/highlighter/src/lexer/init.lua"],"children":[{"name":"language","className":"ModuleScript","filePaths":["Packages/_Index/boatbomber_highlighter@0.8.3/highlighter/src/lexer/language.lua"]}]},{"name":"theme","className":"ModuleScript","filePaths":["Packages/_Index/boatbomber_highlighter@0.8.3/highlighter/src/theme.lua"]},{"name":"types","className":"ModuleScript","filePaths":["Packages/_Index/boatbomber_highlighter@0.8.3/highlighter/src/types.lua"]},{"name":"utility","className":"ModuleScript","filePaths":["Packages/_Index/boatbomber_highlighter@0.8.3/highlighter/src/utility.lua"]}]}]},{"name":"elttob_fusion@0.3.0","className":"Folder","children":[{"name":"fusion","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/init.luau","Packages/_Index/elttob_fusion@0.3.0/fusion/default.project.json"],"children":[{"name":"Animation","className":"Folder","children":[{"name":"ExternalTime","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/ExternalTime.luau"]},{"name":"Spring","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/Spring.luau"]},{"name":"Stopwatch","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/Stopwatch.luau"]},{"name":"Tween","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/Tween.luau"]},{"name":"getTweenDuration","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/getTweenDuration.luau"]},{"name":"getTweenRatio","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/getTweenRatio.luau"]},{"name":"lerpType","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/lerpType.luau"]},{"name":"packType","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/packType.luau"]},{"name":"springCoefficients","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/springCoefficients.luau"]},{"name":"unpackType","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Animation/unpackType.luau"]}]},{"name":"Colour","className":"Folder","children":[{"name":"Oklab","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Colour/Oklab.luau"]},{"name":"sRGB","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Colour/sRGB.luau"]}]},{"name":"External","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/External.luau"]},{"name":"ExternalDebug","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/ExternalDebug.luau"]},{"name":"Graph","className":"Folder","children":[{"name":"Observer","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Graph/Observer.luau"]},{"name":"castToGraph","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Graph/castToGraph.luau"]},{"name":"change","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Graph/change.luau"]},{"name":"depend","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Graph/depend.luau"]},{"name":"evaluate","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Graph/evaluate.luau"]}]},{"name":"Instances","className":"Folder","children":[{"name":"Attribute","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/Attribute.luau"]},{"name":"AttributeChange","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/AttributeChange.luau"]},{"name":"AttributeOut","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/AttributeOut.luau"]},{"name":"Child","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/Child.luau"]},{"name":"Children","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/Children.luau"]},{"name":"Hydrate","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/Hydrate.luau"]},{"name":"New","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/New.luau"]},{"name":"OnChange","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/OnChange.luau"]},{"name":"OnEvent","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/OnEvent.luau"]},{"name":"Out","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/Out.luau"]},{"name":"applyInstanceProps","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/applyInstanceProps.luau"]},{"name":"defaultProps","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Instances/defaultProps.luau"]}]},{"name":"Logging","className":"Folder","children":[{"name":"formatError","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Logging/formatError.luau"]},{"name":"messages","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Logging/messages.luau"]},{"name":"parseError","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Logging/parseError.luau"]}]},{"name":"Memory","className":"Folder","children":[{"name":"checkLifetime","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/checkLifetime.luau"]},{"name":"deriveScope","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/deriveScope.luau"]},{"name":"deriveScopeImpl","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/deriveScopeImpl.luau"]},{"name":"doCleanup","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/doCleanup.luau"]},{"name":"innerScope","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/innerScope.luau"]},{"name":"legacyCleanup","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/legacyCleanup.luau"]},{"name":"needsDestruction","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/needsDestruction.luau"]},{"name":"poisonScope","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/poisonScope.luau"]},{"name":"scopePool","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/scopePool.luau"]},{"name":"scoped","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/scoped.luau"]},{"name":"whichLivesLonger","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Memory/whichLivesLonger.luau"]}]},{"name":"RobloxExternal","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/RobloxExternal.luau"]},{"name":"State","className":"Folder","children":[{"name":"Computed","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/Computed.luau"]},{"name":"For","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/For/init.luau"],"children":[{"name":"Disassembly","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/For/Disassembly.luau"]},{"name":"ForTypes","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/For/ForTypes.luau"]}]},{"name":"ForKeys","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/ForKeys.luau"]},{"name":"ForPairs","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/ForPairs.luau"]},{"name":"ForValues","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/ForValues.luau"]},{"name":"Value","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/Value.luau"]},{"name":"castToState","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/castToState.luau"]},{"name":"peek","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/peek.luau"]},{"name":"updateAll","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/State/updateAll.luau"]}]},{"name":"Types","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Types.luau"]},{"name":"Utility","className":"Folder","children":[{"name":"Contextual","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Utility/Contextual.luau"]},{"name":"Safe","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Utility/Safe.luau"]},{"name":"isSimilar","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Utility/isSimilar.luau"]},{"name":"merge","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Utility/merge.luau"]},{"name":"nameOf","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Utility/nameOf.luau"]},{"name":"never","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Utility/never.luau"]},{"name":"nicknames","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Utility/nicknames.luau"]},{"name":"xtypeof","className":"ModuleScript","filePaths":["Packages/_Index/elttob_fusion@0.3.0/fusion/src/Utility/xtypeof.luau"]}]}]}]}]},{"name":"Ignite","className":"ModuleScript","filePaths":["src/init.luau"],"children":[{"name":"Components","className":"Folder","children":[{"name":"Accordion","className":"ModuleScript","filePaths":["src/Components/Accordion.luau"]},{"name":"Background","className":"ModuleScript","filePaths":["src/Components/Background.luau"]},{"name":"Button","className":"ModuleScript","filePaths":["src/Components/Button.luau"]},{"name":"Checkbox","className":"ModuleScript","filePaths":["src/Components/Checkbox.luau"]},{"name":"Container","className":"ModuleScript","filePaths":["src/Components/Container.luau"]},{"name":"Core","className":"Folder","children":[{"name":"Arrow","className":"ModuleScript","filePaths":["src/Components/Core/Arrow.luau"]},{"name":"CodeLabel","className":"ModuleScript","filePaths":["src/Components/Core/CodeLabel.luau"]},{"name":"FocusVisual","className":"ModuleScript","filePaths":["src/Components/Core/FocusVisual.luau"]},{"name":"Squircle","className":"ModuleScript","filePaths":["src/Components/Core/Squircle.luau"]},{"name":"TextLabel","className":"ModuleScript","filePaths":["src/Components/Core/TextLabel.luau"]}]},{"name":"EmbeddedContainer","className":"ModuleScript","filePaths":["src/Components/EmbeddedContainer.luau"]},{"name":"ImageBackground","className":"ModuleScript","filePaths":["src/Components/ImageBackground.luau"]},{"name":"Map","className":"ModuleScript","filePaths":["src/Components/Map.luau"]},{"name":"Navigation","className":"ModuleScript","filePaths":["src/Components/Navigation.luau"]},{"name":"Padding","className":"Folder","children":[{"name":"PaddingLarge","className":"ModuleScript","filePaths":["src/Components/Padding/PaddingLarge.luau"]},{"name":"PaddingSmall","className":"ModuleScript","filePaths":["src/Components/Padding/PaddingSmall.luau"]}]},{"name":"Progress","className":"ModuleScript","filePaths":["src/Components/Progress.luau"]},{"name":"Scrollable","className":"ModuleScript","filePaths":["src/Components/Scrollable.luau"]},{"name":"Slider","className":"ModuleScript","filePaths":["src/Components/Slider.luau"]},{"name":"Switch","className":"ModuleScript","filePaths":["src/Components/Switch.luau"]},{"name":"Tabs","className":"ModuleScript","filePaths":["src/Components/Tabs.luau"]},{"name":"TextInput","className":"ModuleScript","filePaths":["src/Components/TextInput.luau"]},{"name":"Widget","className":"ModuleScript","filePaths":["src/Components/Widget.luau"]}]},{"name":"LICENSE","className":"ModuleScript","filePaths":["src/LICENSE.luau"]},{"name":"Modules","className":"Folder","children":[{"name":"CachelessOnEvent","className":"ModuleScript","filePaths":["src/Modules/CachelessOnEvent.luau"]},{"name":"CombineProps","className":"ModuleScript","filePaths":["src/Modules/CombineProps.luau"]},{"name":"Component","className":"ModuleScript","filePaths":["src/Modules/Component/init.luau"],"children":[{"name":"Component.Types","className":"ModuleScript","filePaths":["src/Modules/Component/Component.Types.luau"]}]},{"name":"ComputeMath","className":"ModuleScript","filePaths":["src/Modules/ComputeMath.luau"]},{"name":"ComputeTransforms","className":"ModuleScript","filePaths":["src/Modules/ComputeTransforms.luau"]},{"name":"ForceToState","className":"ModuleScript","filePaths":["src/Modules/ForceToState.luau"]},{"name":"RootEventHandlersUtils","className":"ModuleScript","filePaths":["src/Modules/RootEventHandlersUtils.luau"]},{"name":"TableUtils","className":"ModuleScript","filePaths":["src/Modules/TableUtils.luau"]},{"name":"ThemeHandler","className":"ModuleScript","filePaths":["src/Modules/ThemeHandler/init.luau"],"children":[{"name":"DefaultThemes","className":"ModuleScript","filePaths":["src/Modules/ThemeHandler/DefaultThemes.luau"]},{"name":"ThemeHandler.Types","className":"ModuleScript","filePaths":["src/Modules/ThemeHandler/ThemeHandler.Types.luau"]}]},{"name":"ThemeHandlerOld","className":"ModuleScript","filePaths":["src/Modules/ThemeHandlerOld.luau"]},{"name":"TrackProperty","className":"ModuleScript","filePaths":["src/Modules/TrackProperty.luau"]}]},{"name":"Packages","className":"Folder","children":[{"name":"Fusion","className":"ModuleScript","filePaths":["PackageLinks/test/Fusion.luau"]},{"name":"Highlighter","className":"ModuleScript","filePaths":["PackageLinks/test/Highlighter.luau"]}]}]}]}]}]}]} \ No newline at end of file +{"name":"ignite","className":"ModuleScript","filePaths":["src\\init.luau","default.project.json"],"children":[{"name":"Components","className":"Folder","children":[{"name":"Accordion","className":"ModuleScript","filePaths":["src\\Components\\Accordion.luau"]},{"name":"Background","className":"ModuleScript","filePaths":["src\\Components\\Background.luau"]},{"name":"Button","className":"ModuleScript","filePaths":["src\\Components\\Button.luau"]},{"name":"Checkbox","className":"ModuleScript","filePaths":["src\\Components\\Checkbox.luau"]},{"name":"Container","className":"ModuleScript","filePaths":["src\\Components\\Container.luau"]},{"name":"Core","className":"Folder","children":[{"name":"Arrow","className":"ModuleScript","filePaths":["src\\Components\\Core\\Arrow.luau"]},{"name":"CodeLabel","className":"ModuleScript","filePaths":["src\\Components\\Core\\CodeLabel.luau"]},{"name":"FocusVisual","className":"ModuleScript","filePaths":["src\\Components\\Core\\FocusVisual.luau"]},{"name":"Squircle","className":"ModuleScript","filePaths":["src\\Components\\Core\\Squircle.luau"]},{"name":"TextLabel","className":"ModuleScript","filePaths":["src\\Components\\Core\\TextLabel.luau"]}]},{"name":"EmbeddedContainer","className":"ModuleScript","filePaths":["src\\Components\\EmbeddedContainer.luau"]},{"name":"ImageBackground","className":"ModuleScript","filePaths":["src\\Components\\ImageBackground.luau"]},{"name":"Map","className":"ModuleScript","filePaths":["src\\Components\\Map.luau"]},{"name":"Navigation","className":"ModuleScript","filePaths":["src\\Components\\Navigation.luau"]},{"name":"Padding","className":"Folder","children":[{"name":"PaddingLarge","className":"ModuleScript","filePaths":["src\\Components\\Padding\\PaddingLarge.luau"]},{"name":"PaddingSmall","className":"ModuleScript","filePaths":["src\\Components\\Padding\\PaddingSmall.luau"]}]},{"name":"Progress","className":"ModuleScript","filePaths":["src\\Components\\Progress.luau"]},{"name":"Scrollable","className":"ModuleScript","filePaths":["src\\Components\\Scrollable.luau"]},{"name":"Slider","className":"ModuleScript","filePaths":["src\\Components\\Slider.luau"]},{"name":"Switch","className":"ModuleScript","filePaths":["src\\Components\\Switch.luau"]},{"name":"Tabs","className":"ModuleScript","filePaths":["src\\Components\\Tabs.luau"]},{"name":"TextInput","className":"ModuleScript","filePaths":["src\\Components\\TextInput.luau"]},{"name":"Widget","className":"ModuleScript","filePaths":["src\\Components\\Widget.luau"]}]},{"name":"LICENSE","className":"ModuleScript","filePaths":["src\\LICENSE.luau"]},{"name":"Modules","className":"Folder","children":[{"name":"CachelessOnEvent","className":"ModuleScript","filePaths":["src\\Modules\\CachelessOnEvent.luau"]},{"name":"CombineProps","className":"ModuleScript","filePaths":["src\\Modules\\CombineProps.luau"]},{"name":"Component","className":"ModuleScript","filePaths":["src\\Modules\\Component\\init.luau"],"children":[{"name":"Component.Types","className":"ModuleScript","filePaths":["src\\Modules\\Component\\Component.Types.luau"]}]},{"name":"ComputeMath","className":"ModuleScript","filePaths":["src\\Modules\\ComputeMath.luau"]},{"name":"ComputeTransforms","className":"ModuleScript","filePaths":["src\\Modules\\ComputeTransforms.luau"]},{"name":"ForceToState","className":"ModuleScript","filePaths":["src\\Modules\\ForceToState.luau"]},{"name":"RootEventHandlersUtils","className":"ModuleScript","filePaths":["src\\Modules\\RootEventHandlersUtils.luau"]},{"name":"TableUtils","className":"ModuleScript","filePaths":["src\\Modules\\TableUtils.luau"]},{"name":"ThemeHandler","className":"ModuleScript","filePaths":["src\\Modules\\ThemeHandler\\init.luau"],"children":[{"name":"DefaultThemes","className":"ModuleScript","filePaths":["src\\Modules\\ThemeHandler\\DefaultThemes.luau"]},{"name":"ThemeHandler.Types","className":"ModuleScript","filePaths":["src\\Modules\\ThemeHandler\\ThemeHandler.Types.luau"]}]},{"name":"ThemeHandlerOld","className":"ModuleScript","filePaths":["src\\Modules\\ThemeHandlerOld.luau"]},{"name":"TrackProperty","className":"ModuleScript","filePaths":["src\\Modules\\TrackProperty.luau"]}]},{"name":"Packages","className":"Folder","children":[{"name":"Fusion","className":"ModuleScript","filePaths":["PackageLinks/default\\Fusion.luau"]},{"name":"Highlighter","className":"ModuleScript","filePaths":["PackageLinks/default\\Highlighter.luau"]}]}]} \ No newline at end of file diff --git a/src/Components/Button.luau b/src/Components/Button.luau index 5c39471..4d634d5 100644 --- a/src/Components/Button.luau +++ b/src/Components/Button.luau @@ -1,10 +1,8 @@ --!strict - --> Services ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------- - --> Modules ------------------------------------------------------------------------------------------- local Modules = script.Parent.Parent.Modules local Component = require(Modules.Component) @@ -13,6 +11,7 @@ local TableUtils = require(Modules.TableUtils) local Packages = script.Parent.Parent.Packages local Fusion = require(Packages.Fusion) +local Peek = Fusion.peek local Components = Modules.Parent.Components local CoreComponents = Components.Core @@ -20,16 +19,29 @@ local Squircle = require(CoreComponents.Squircle) local TextLabel = require(CoreComponents.TextLabel) ------------------------------------------------------------------------------------------------------- - --> Types --------------------------------------------------------------------------------------------- + +type IconProperties = Fusion.UsedAs<{ + AnchorPoint: Vector2?, + Image: string?, + Size: UDim2?, + Position: UDim2?, + ImageColor3: Color3?, + ImageTransparency: number?, + ImageRectOffset: Vector2?, + ImageRectSize: Vector2?, + ScaleType: Enum.ScaleType?, + ResampleMode: Enum.ResamplerMode?, +}>? + type ButtonProps = { - Width: Fusion.UsedAs?, - Content: Fusion.UsedAs<{ string } | string>?, - Variant: ("Primary" | "Secondary" | "Destructive")? + Width: Fusion.UsedAs?, + Content: Fusion.UsedAs<{ string } | string>?, + Variant: ("Primary" | "Secondary" | "Destructive")?, + IconProperties: IconProperties, } ------------------------------------------------------------------------------------------------------- - --> Variables ----------------------------------------------------------------------------------------- local ComputeUDim2 = ComputeTransforms.UDim2 @@ -38,104 +50,182 @@ local TableTake = TableUtils.Take local Children, OnEvent = Fusion.Children, Fusion.OnEvent ------------------------------------------------------------------------------------------------------- - --> Private Functions --------------------------------------------------------------------------------- -local function ParseContentItem(scope: Component.Scope, item: string) - local imageId = string.match(item, "rbxassetid://%d+") - - if imageId then - return scope:New "ImageLabel" { - Size = UDim2.fromOffset(9, 9), - BackgroundTransparency = 1, - ImageColor3 = scope:GetThemeItem("Text/Title"), - Image = imageId - } - end - - return TextLabel (scope, { - Text = item, - Focus = "Title" :: "Title", - Weight = Enum.FontWeight.SemiBold, - Size = UDim2.fromScale(0, 1), - AutomaticSize = Enum.AutomaticSize.X, - TextXAlignment = Enum.TextXAlignment.Center - }) + +local function setProperty_unsafe(instance: Instance, property: string, value: unknown) + (instance :: any)[property] = value end -------------------------------------------------------------------------------------------------------- +local function ParseContentItem(scope: Component.Scope, item: string, IconProperties: IconProperties) + local imageId = string.match(item, "rbxassetid://%d+") + + local peekProperties = Peek(IconProperties) + + if not peekProperties then + peekProperties = {} :: {} + end + + local amount = 0 + + for _, value in peekProperties do + amount += 1 + end + + if amount ~= 0 or imageId then + if not peekProperties.Image and not imageId then + imageId = nil + end + + local imageLabel = scope:New("ImageLabel")({ + BackgroundTransparency = 1, + ImageColor3 = scope:GetThemeItem("Text/Title"), + Size = UDim2.fromOffset(9, 9), + Image = imageId, + }) + + if peekProperties == {} then + return imageLabel + end + + for Key, Property in peekProperties do + local success, err = pcall(function() + setProperty_unsafe(imageLabel, Key, Property) + end) + + if success then + continue + end + warn(err) + end + + return imageLabel + end + + return TextLabel(scope, { + Text = item, + Focus = "Title" :: "Title", + Weight = Enum.FontWeight.SemiBold, + Size = UDim2.fromScale(0, 1), + AutomaticSize = Enum.AutomaticSize.X, + TextXAlignment = Enum.TextXAlignment.Center, + }) :: any +end +------------------------------------------------------------------------------------------------------- return Component(function(scope, props: ButtonProps) - local width = TableTake(props, "Width", UDim.new(1,0)) :: Fusion.UsedAs - local content = TableTake(props, "Content", "Button") :: Fusion.UsedAs<{ string } | string> - local variant = TableTake(props, "Variant", "Primary") :: Fusion.UsedAs<"Primary" | "Secondary" | "Destructive"> - - local isHoverState, isFocusState = scope:Value(false), scope:Value(false) - - -- We need to ensure that `content` is an array so it can be used with `ForPairs` - local computeContentArray = scope:Computed(function(use) - local usedContent = use(content) - return if type(usedContent) == "table" then usedContent else { usedContent } - end) - - -- Width may be "Auto" therefore we need to make the width of the button `UDim.new()` when this is the case. - local computeUDimWidth = scope:Computed(function(use) - local usedWidth = use(width) - return if usedWidth == "Auto" then UDim.new() else usedWidth - end) - - local computeAutoSize = scope:Computed(function(use) - return if use(width) == "Auto" then Enum.AutomaticSize.X else Enum.AutomaticSize.None - end) - - local computeBackgroundColor = scope:GetThemeItem( - scope:Computed(function(use) return `Accent/{use(variant) or "Primary"}` :: any end), - scope:Computed(function(use) return if use(isFocusState) then "Focus" elseif use(isHoverState) then "Hover" else nil :: any end) - ) - - -- Handles the edge case of the user dragging the cursor off of the button and then releasing the mouse button. - scope:AddRootEvent("InputEnded", function() isFocusState:set(false) end) - - return Squircle (scope, { - As = "ImageButton" :: "ImageButton", - Size = ComputeUDim2(scope, computeUDimWidth, UDim.new(0, 25)), - AutomaticSize = computeAutoSize, - BackgroundColor3 = computeBackgroundColor, - ClipsDescendants = true, - Name = "Button", - - [OnEvent "MouseEnter"] = function() isHoverState:set(true) end :: any, - [OnEvent "MouseLeave"] = function() isHoverState:set(false) end :: any, - - [OnEvent "MouseButton1Down"] = function() isFocusState:set(true) end :: any, - [OnEvent "MouseButton1Up"] = function() isFocusState:set(false) end :: any, - - [Children] = { - Squircle (scope, { - Size = UDim2.fromScale(1, 1), - Image = "rbxassetid://108824901287727", - Name = "Button:Highlight" - }), - - scope:New "Frame" { - Size = UDim2.fromScale(1, 1), - BackgroundTransparency = 1, - Name = "Button:ContentWrapper", - - [Children] = { - scope:ForPairs(computeContentArray, function(use, scope, idx, item) - return idx, ParseContentItem(scope, item) - end) :: any, - - scope:New "UIListLayout" { - FillDirection = Enum.FillDirection.Horizontal, - HorizontalAlignment = Enum.HorizontalAlignment.Center, - VerticalAlignment = Enum.VerticalAlignment.Center, - Padding = UDim.new(0, 8) - }, - - scope:New "UIPadding" { PaddingLeft = UDim.new(0, 8), PaddingRight = UDim.new(0, 8) }, - } - } - } - }, props :: any) -end) \ No newline at end of file + local width = TableTake(props, "Width", UDim.new(1, 0)) :: Fusion.UsedAs + local content = TableTake(props, "Content", "Button") :: Fusion.UsedAs<{ string } | string> + local variant = TableTake(props, "Variant", "Primary") :: Fusion.UsedAs<"Primary" | "Secondary" | "Destructive"> + local iconProperties = TableTake(props, "IconProperties", {}) :: IconProperties + + local isHoverState = scope:Value(false) + local isFocusState = scope:Value(false) + + -- We need to ensure that `content` is an array so it can be used with `ForPairs` + + local computeContentArray = scope:Computed(function(use) + local usedContent = use(content) + return if type(usedContent) == "table" then usedContent else { usedContent } + end) + + -- Width may be "Auto" therefore we need to make the width of the button `UDim.new()` when this is the case. + local computeUDimWidth = scope:Computed(function(use) + local usedWidth = use(width) + return if usedWidth == "Auto" then UDim.new() else usedWidth + end) + + local computeAutoSize = scope:Computed(function(use) + return if use(width) == "Auto" then Enum.AutomaticSize.X else Enum.AutomaticSize.None + end) + + local computeProperties = scope:Computed(function(use) + return use(iconProperties) or {} + end) + + local computeBackgroundColor = scope:GetThemeItem( + scope:Computed(function(use) + return `Accent/{use(variant) or "Primary"}` :: any + end), + scope:Computed(function(use) + return if use(isFocusState) then "Focus" elseif use(isHoverState) then "Hover" else nil :: any + end) + ) + + local computeChildren = scope:Computed(function(Use) + local text = "" + local image = "" + + local children = {} + + for _, content in Use(computeContentArray) do + if not string.find(content, "rbxassetid://") then + text = content + else + image = content + end + end + + if image or computeProperties["Image"] then + table.insert(children, ParseContentItem(scope, image :: string, computeProperties)) + end + + table.insert(children, ParseContentItem(scope, text, {})) + + return children + end) + + -- Handles the edge case of the user dragging the cursor off of the button and then releasing the mouse button. + scope:AddRootEvent("InputEnded", function() + isFocusState:set(false) + end) + + return Squircle(scope, { + As = "ImageButton" :: "ImageButton", + Size = ComputeUDim2(scope, computeUDimWidth, UDim.new(0, 25)), + AutomaticSize = computeAutoSize, + BackgroundColor3 = computeBackgroundColor, + ClipsDescendants = true, + Name = "Button", + + [OnEvent("MouseEnter")] = function() + isHoverState:set(true) + end :: any, + [OnEvent("MouseLeave")] = function() + isHoverState:set(false) + end :: any, + + [OnEvent("MouseButton1Down")] = function() + isFocusState:set(true) + end :: any, + [OnEvent("MouseButton1Up")] = function() + isFocusState:set(false) + end :: any, + + [Children] = { + Squircle(scope, { + Size = UDim2.fromScale(1, 1), + Image = "rbxassetid://108824901287727", + Name = "Button:Highlight", + }), + + scope:New("Frame")({ + Size = UDim2.fromScale(1, 1), + BackgroundTransparency = 1, + Name = "Button:ContentWrapper", + + [Children] = { + computeChildren, + + scope:New("UIListLayout")({ + FillDirection = Enum.FillDirection.Horizontal, + HorizontalAlignment = Enum.HorizontalAlignment.Center, + VerticalAlignment = Enum.VerticalAlignment.Center, + Padding = UDim.new(0, 8), + }), + + scope:New("UIPadding")({ PaddingLeft = UDim.new(0, 8), PaddingRight = UDim.new(0, 8) }), + }, + }), + }, + }, props :: any) +end) diff --git a/src/Modules/TableUtils.luau b/src/Modules/TableUtils.luau index fe541c7..a8832c2 100644 --- a/src/Modules/TableUtils.luau +++ b/src/Modules/TableUtils.luau @@ -1,12 +1,16 @@ return { CountKeys = function(tble: { [any]: any }): number local length = 0 - for _ in tble do length += 1 end + for _ in tble do + length += 1 + end return length end, HasItems = function(tble: { [any]: any }): boolean - for _ in tble do return true end + for _ in tble do + return true + end return false end, @@ -14,13 +18,17 @@ return { local value = tble[keyOrIndex] tble[keyOrIndex] = nil - if value == nil then return default end + if value == nil then + return default + end return value end, ContainsInst = function(tble: { [any]: any }, className: string) - for _,value in tble do - if not (typeof(value) == "Instance" and value.ClassName == className) then continue end + for _, value in tble do + if not (typeof(value) == "Instance" and value.ClassName == className) then + continue + end return true end @@ -28,8 +36,8 @@ return { end, InsertMany = function(tble: { [any]: any }, ...: any) - for i = 1, select("#", ...) do table.insert(tble, select(i, ...)) end - end + for i = 1, select("#", ...) do + table.insert(tble, select(i, ...)) + end + end, } - - diff --git a/src/init.luau b/src/init.luau index 73a26ea..d53b0ca 100644 --- a/src/init.luau +++ b/src/init.luau @@ -1,10 +1,8 @@ --!strict - --> Services ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------- - --> Modules ------------------------------------------------------------------------------------------- local Modules = script.Modules local RootEventHandlersUtils = require(Modules.RootEventHandlersUtils) @@ -14,57 +12,52 @@ local Components = script.Components local CoreComponents = Components.Core local PaddingComponents = Components.Padding -local Packages = script.Packages -local Fusion = require(Packages.Fusion) ------------------------------------------------------------------------------------------------------- - --> Variables ----------------------------------------------------------------------------------------- local AddRootEvent = RootEventHandlersUtils.AddRootEvent -local innerScope = Fusion.innerScope ------------------------------------------------------------------------------------------------------- - return { - SetTheme = ThemeHandler.SetThemeForScope, - GetThemeItem = ThemeHandler.GetThemeItemForScope, - - AddRootEvent = AddRootEvent, - - -- Plugins. - Widget = require(Components.Widget), - - -- Wrappers. - Accordion = require(Components.Accordion), - Background = require(Components.Background), - Container = require(Components.Container), - EmbeddedContainer = require(Components.EmbeddedContainer), - ImageBackground = require(Components.ImageBackground), - Map = require(Components.Map), - - -- ...ables - Scrollable = require(Components.Scrollable), - - -- Labels. - TextLabel = require(CoreComponents.TextLabel), - CodeLabel = require(CoreComponents.CodeLabel), - - -- Inputs. - TextInput = require(Components.TextInput), - - -- Buttons. - Button = require(Components.Button), - Checkbox = require(Components.Checkbox), - Slider = require(Components.Slider), - Switch = require(Components.Switch), - Navigation = require(Components.Navigation), - Tabs = require(Components.Tabs), - - -- Other - Progress = require(Components.Progress), - - -- Padding. - PaddingSmall = require(PaddingComponents.PaddingSmall), - PaddingLarge = require(PaddingComponents.PaddingLarge), -} \ No newline at end of file + SetTheme = ThemeHandler.SetThemeForScope, + GetThemeItem = ThemeHandler.GetThemeItemForScope, + + AddRootEvent = AddRootEvent, + + -- Plugins. + Widget = require(Components.Widget), + + -- Wrappers. + Accordion = require(Components.Accordion), + Background = require(Components.Background), + Container = require(Components.Container), + EmbeddedContainer = require(Components.EmbeddedContainer), + ImageBackground = require(Components.ImageBackground), + Map = require(Components.Map), + + -- ...ables + Scrollable = require(Components.Scrollable), + + -- Labels. + TextLabel = require(CoreComponents.TextLabel), + CodeLabel = require(CoreComponents.CodeLabel), + + -- Inputs. + TextInput = require(Components.TextInput), + + -- Buttons. + Button = require(Components.Button), + Checkbox = require(Components.Checkbox), + Slider = require(Components.Slider), + Switch = require(Components.Switch), + Navigation = require(Components.Navigation), + Tabs = require(Components.Tabs), + + -- Other + Progress = require(Components.Progress), + + -- Padding. + PaddingSmall = require(PaddingComponents.PaddingSmall), + PaddingLarge = require(PaddingComponents.PaddingLarge), +} diff --git a/test.project.json b/test.project.json index 3708d67..6ce0f11 100644 --- a/test.project.json +++ b/test.project.json @@ -1,8 +1,18 @@ { - "name": "ignite", + "name": "Ignite", "tree": { - "$path": "src", + "$path": "test", - "Packages": { "$path": "PackageLinks/test" } + "Packages": { + "$path": "Packages", + + "Ignite": { + "$path": "src", + "Packages": { "$path": "PackageLinks/test" } + } + } } -} \ No newline at end of file +} + + + diff --git a/test/Main.server.luau b/test/Main.server.luau index c4c8993..af016ea 100644 --- a/test/Main.server.luau +++ b/test/Main.server.luau @@ -1,55 +1,61 @@ --!strict - --> Modules ------------------------------------------------------------------------------------------- local Packages = script.Parent.Packages -local Fusion = require(Packages.Fusion) -local Ignite = require(Packages.Ignite) +local Fusion = require(Packages.Fusion) :: any +local Ignite = require(Packages.Ignite) :: any ------------------------------------------------------------------------------------------------------- - --> Variables ----------------------------------------------------------------------------------------- local Scope = Fusion.scoped(Fusion, Ignite) -local Children, OnEvent, peek = Fusion.Children, Fusion.OnEvent, Fusion.peek -------------------------------------------------------------------------------------------------------- - - +local Children = Fusion.Children +------------------------------------------------------------------------------------------------------- local MyTable = {} MyTable.__index = MyTable -function MyTable:FooBar() return true end - -table.insert(MyTable, function() return true end) - - - -local CounterState = Scope:Value(0) -local ComputeLabelText = Scope:Computed(function(use) return `Counter is: {use(CounterState)}` end) - -Scope:Widget { - Id = "IgnitePlugin", - Title = "My First Ignite Plugin 🚀", - InitDockState = Enum.InitialDockState.Left, - FloatXSize = 300, FloatYSize = 800, - - [Children] = { - Scope:Tabs { - Sections = { - { Text = "Hello" }, - { Text = "World" } - } - }, - - Scope:New "UIListLayout" { - SortOrder = Enum.SortOrder.LayoutOrder, - Padding = UDim.new(0, 8) - }, - - --[[Scope:New "UIPadding" { +function MyTable:FooBar() + return true +end + +table.insert(MyTable, function() + return true +end) + +Scope:Widget({ + Id = "IgnitePlugin", + Title = "My First Ignite Plugin 🚀", + InitDockState = Enum.InitialDockState.Left, + FloatXSize = 300, + FloatYSize = 800, + + [Children] = { + Scope:Tabs({ + Sections = { + { Text = "Hello" }, + { Text = "World" }, + }, + }), + + Scope:New("UIListLayout")({ + SortOrder = Enum.SortOrder.LayoutOrder, + Padding = UDim.new(0, 8), + }), + + Scope:Button({ + + Content = { "Test Button!" }, + + IconProperties = { + BackgroundTransparency = 0, + Size = UDim2.fromOffset(4, 4), + }, + }), + + --[[Scope:New "UIPadding" { PaddingLeft = UDim.new(0, 8), PaddingRight = UDim.new(0, 8), PaddingTop = UDim.new(0, 8), PaddingBottom = UDim.new(0, 8) }]] - } -} \ No newline at end of file + }, +}) diff --git a/test_datamodel.project.json b/test_datamodel.project.json index 828754d..d02111c 100644 --- a/test_datamodel.project.json +++ b/test_datamodel.project.json @@ -20,7 +20,4 @@ } } } -} - - - +} \ No newline at end of file diff --git a/wally.lock b/wally.lock index d6f63d6..e502069 100644 --- a/wally.lock +++ b/wally.lock @@ -8,8 +8,8 @@ version = "0.8.3" dependencies = [] [[package]] -name = "cameronpcampbell/ignite-x7dha2gai02" -version = "0.1.17" +name = "cameronpcampbell/ignite" +version = "1.2.1" dependencies = [["Fusion", "elttob/fusion@0.3.0"], ["Highlighter", "boatbomber/highlighter@0.8.3"]] [[package]] diff --git a/wally.toml b/wally.toml index f8581f8..78b1403 100644 --- a/wally.toml +++ b/wally.toml @@ -1,7 +1,7 @@ [package] name = "cameronpcampbell/ignite" description="⚡ A beautiful component system for Roblox plugin development." -version = "1.2.1" +version = "1.2.2" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" license = "MIT" From 7cc2289ef7352267c6fd73ab283c082fbac12b72 Mon Sep 17 00:00:00 2001 From: iSophes Date: Thu, 20 Mar 2025 22:17:06 +0000 Subject: [PATCH 2/2] fix: version bump --- README.md | 4 ++-- wally.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 953d95c..1f09e3f 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ Ignite is a UI library for developing Roblox plugins. It includes 10+ goregeous ## Getting Started -1. Install Ignite via [Wally](https://wally.run/package/cameronpcampbell/ignite?version=1.2.2) or via [github releases](https://github.com/cameronpcampbell/Ignite/releases). +1. Install Ignite via [Wally](https://wally.run/package/cameronpcampbell/ignite?version=1.2.6) or via [github releases](https://github.com/cameronpcampbell/Ignite/releases). ``` -ignite = "mightypart/ignite@1.2.2" +ignite = "mightypart/ignite@1.2.6" ``` 2. Setup your `default.project.json` (if using rojo). diff --git a/wally.toml b/wally.toml index 78b1403..f417172 100644 --- a/wally.toml +++ b/wally.toml @@ -1,7 +1,7 @@ [package] name = "cameronpcampbell/ignite" description="⚡ A beautiful component system for Roblox plugin development." -version = "1.2.2" +version = "1.2.6" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" license = "MIT"