{"id":"biggaboy212/cascade","name":"cascade","scope":"biggaboy212","platform":"roblox","description":"An open-source LuaU UI library based on macOS","version":"1.0.0-beta.2","latest":"1.0.0-beta.2","versions":["1.0.0-beta.2"],"license":"MIT","licenseRating":"safe","licenseCaveats":["License identified from the packaged LICENSE file; the manifest declared none."],"licenseVerified":true,"dependencies":{},"integrity":"985d03a475dcbd24152577b7196c608eac3ec814149f052f36c3672d769362b3","likes":0,"downloads":0,"install":"forest install biggaboy212/cascade","url":"https://forest.dev/p/roblox/biggaboy212/cascade","files":"https://api.forest.dev/ai/package/roblox/biggaboy212/cascade/files","readme":"# ![Cascade span dark](assets/cascade_span_dark.png#gh-dark-mode-only) ![Cascade span light](assets/cascade_span_light.png#gh-light-mode-only)\r\n\r\n[stars]: https://github.com/biggaboy212/Cascade/stargazers\r\n[lastrel]: https://github.com/biggaboy212/Cascade/releases/latest\r\n[lastcom]: https://github.com/biggaboy212/Cascade/commits\r\n[disc]: https://discord.gg/2cB4vBAEWk\r\n\r\n[badges/stars]: https://img.shields.io/github/stars/biggaboy212/Cascade?label=Stars&logo=GitHub\r\n[badges/lastrel]: https://img.shields.io/github/version/release/biggaboy212/Cascade?label=Latest%20Release\r\n[badges/lastcom]: https://img.shields.io/github/last-commit/biggaboy212/Cascade?label=Last%20Modifed\r\n[badges/disc]: https://img.shields.io/discord/1384338360012898406?&label=Discord\r\n\r\n[![Discord][badges/disc]][disc]\r\n[![Stars][badges/stars]][stars]\r\n[![Latest Release][badges/lastrel]][lastrel]\r\n[![Last Modified][badges/lastcom]][lastcom]\r\n\r\nCascade is a LuaU UI library based on macOS Sequoia.\r\n\r\n![Cascade](assets/cascade_show.png)\r\n\r\n## The Pitch\r\n\r\nCascade is a retained-mode, user-centric UI library designed to be both easy for developers and beautiful for users. Its API is fully typed, so once you learn one component, you can use 99% of the rest without needing to reference the documentation.\r\n\r\nCascade was designed from the ground up as a superior design paradigm. It combines simplicity and customizability into a high level bloat-free API, enabling developers to build polished software-grade UIs in minutes.\r\n\r\n## Usage\r\n\r\n### Importing the library\r\n\r\n#### From source\r\n\r\nTo use cascade from source, simply clone the repository into your packages folder and you can reference `src/init.luau` from there.\r\n\r\n#### From release\r\n\r\nYou can download a valid release from our github releases page, or in single-file systems, you can load it dynamically in-game:\r\n\r\n```lua\r\nlocal function import(owner, release, version, file)\r\n    local tag = (version == \"latest\" and \"latest\" or \"download/\"..version)\r\n    return loadstring(game:HttpGet((\"https://github.com/%s/%s/releases/%s/%s\"):format(owner, release, tag, file)), file)()\r\nend\r\n\r\nlocal cascade = import(\"biggaboy212\", \"Cascade\", \"v1.0.0-beta.1\", \"pre.luau\")\r\n```\r\n\r\n### Adding components\r\n\r\nYou can choose how complex to make your app, we dont bombard you with useless bloat that makes the library a borderline instance creator.\r\n\r\n```lua\r\n-- Create our main application.\r\nlocal app = cascade.New({ Theme = cascade.Themes.Light })\r\n\r\ndo -- Make the main window\r\n    local window = app:Window({\r\n        Title = \"My Window\",\r\n        Subtitle = \"My window\",\r\n    })\r\n\r\n    do -- Make a static tab section\r\n        local section = window:Section({ Title = \"Section title\" })\r\n\r\n        do -- Make our main tab\r\n            local tab = section:Tab({\r\n                Selected = true,\r\n                Title = \"Main\",\r\n                Icon = cascade.Symbols.squareStack3dUp,\r\n            })\r\n\r\n            do\r\n                local form = tab:Form()\r\n            \r\n                do -- Make the toggle\r\n                    local row = form:Row()\r\n\r\n                    -- You can of course add a wrapper to simplify creating page components if you only want a title stack and a component to go along.\r\n                    row:Left():TitleStack({\r\n                        Title = \"Toggle\",\r\n                        Subtitle = \"My toggle\",\r\n                    })\r\n\r\n                    row:Right():Toggle()\r\n                end\r\n\r\n                do -- Make the button\r\n                    local row = form:Row()\r\n\r\n                    row:Left():TitleStack({\r\n                        Title = \"Button\",\r\n                        Subtitle = \"My button\",\r\n                    })\r\n\r\n                    row:Right():Button({ Label = \"Click me\" })\r\n                end\r\n            end\r\n        end\r\n    end\r\nend\r\n```\r\n\r\n![Showcase application](assets/demoapp.png)\r\n\r\n### Getting started\r\n\r\nReference the Cascade documentation for more. (In development.)\r\n","readmeTruncated":false}