├── .github ├── FUNDING.yml └── workflows │ └── release.yml ├── .gitignore ├── LICENSE ├── README.md ├── assets └── diagram-alert.svg ├── birdie_snapshots ├── tween_in_back.accepted ├── tween_in_bounce.accepted ├── tween_in_circ.accepted ├── tween_in_cubic.accepted ├── tween_in_elastic.accepted ├── tween_in_expo.accepted ├── tween_in_out_back.accepted ├── tween_in_out_bounce.accepted ├── tween_in_out_circ.accepted ├── tween_in_out_cubic.accepted ├── tween_in_out_elastic.accepted ├── tween_in_out_expo.accepted ├── tween_in_out_quadratic.accepted ├── tween_in_out_quartic.accepted ├── tween_in_out_quint.accepted ├── tween_in_out_sine.accepted ├── tween_in_quadratic.accepted ├── tween_in_quartic.accepted ├── tween_in_quint.accepted ├── tween_in_sine.accepted ├── tween_linear.accepted ├── tween_out_back.accepted ├── tween_out_bounce.accepted ├── tween_out_circ.accepted ├── tween_out_cubic.accepted ├── tween_out_elastic.accepted ├── tween_out_expo.accepted ├── tween_out_quadratic.accepted ├── tween_out_quartic.accepted ├── tween_out_quint.accepted └── tween_out_sine.accepted ├── gleam.toml ├── manifest.toml ├── pages └── components.md ├── priv └── static │ └── lustre_ui.css ├── src ├── dom.ffi.mjs ├── lustre │ └── ui │ │ ├── accordion.css │ │ ├── accordion.gleam │ │ ├── alert.css │ │ ├── alert.gleam │ │ ├── badge.css │ │ ├── badge.gleam │ │ ├── breadcrumb.css │ │ ├── breadcrumb.gleam │ │ ├── button.css │ │ ├── button.gleam │ │ ├── card.css │ │ ├── card.gleam │ │ ├── checkbox.css │ │ ├── checkbox.gleam │ │ ├── colour.gleam │ │ ├── combobox.css │ │ ├── combobox.gleam │ │ ├── data │ │ └── bidict.gleam │ │ ├── divider.css │ │ ├── divider.gleam │ │ ├── input.css │ │ ├── input.gleam │ │ ├── primitives │ │ ├── collapse.css │ │ ├── collapse.gleam │ │ ├── icon.css │ │ ├── icon.gleam │ │ ├── popover.css │ │ ├── popover.gleam │ │ └── reset.css │ │ ├── reveal.gleam │ │ ├── theme.gleam │ │ ├── ticker.gleam │ │ └── tween.gleam └── scheduler.ffi.mjs └── test ├── build.gleam ├── lustre └── ui │ └── tween_test.gleam └── lustre_ui_test.gleam /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [hayleigh-dot-dev] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: release 2 | 3 | on: 4 | push: 5 | tags: ["v*"] 6 | 7 | jobs: 8 | publish: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - uses: actions/checkout@v3.1.0 13 | - uses: erlef/setup-beam@v1.16.0 14 | with: 15 | otp-version: "27.0" 16 | rebar3-version: "3" 17 | gleam-version: "1.5.1" 18 | 19 | - run: | 20 | version="v$(cat gleam.toml | grep -m 1 "version" | sed -r "s/version *= *\"([[:digit:].]+)\"/\1/")" 21 | if [ "$version" != "${{ github.ref_name }}" ]; then 22 | echo "tag '${{ github.ref_name }}' does not match the version in gleam.toml" 23 | echo "expected a tag name 'v$version'" 24 | exit 1 25 | fi 26 | name: check version 27 | 28 | - run: gleam format --check 29 | 30 | - run: gleam test 31 | 32 | - run: gleam publish -y 33 | env: 34 | HEXPM_USER: ${{ secrets.HEX_USERNAME }} 35 | HEXPM_PASS: ${{ secrets.HEX_PASSWORD }} 36 | 37 | - uses: softprops/action-gh-release@v1 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.beam 2 | *.ez 3 | build 4 | erl_crash.dump 5 | node_modules 6 | example/index.html 7 | example/priv 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2023 Lustre Labs SRL. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in the 5 | Software without restriction, including without limitation the rights to use, 6 | copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the 7 | Software, and to permit persons to whom the Software is furnished to do so, 8 | subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |