Skip to content
This repository was archived by the owner on May 11, 2026. It is now read-only.

Commit 9be9d86

Browse files
authored
Merge branch 'main' into jean/disabled-tabs-example
2 parents 9446b6e + d614567 commit 9be9d86

16 files changed

Lines changed: 183 additions & 70 deletions

File tree

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
# See https://fly.io/docs/app-guides/continuous-deployment-with-github-actions/
22

3-
name: Fly Deploy
3+
name: Deploy
44
on:
5-
push:
6-
branches:
7-
- main
5+
workflow_dispatch:
6+
87
jobs:
98
deploy:
109
name: Deploy app

.github/workflows/main.yml

Lines changed: 45 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,42 @@ on:
1111
branches: "main"
1212
jobs:
1313
test:
14-
timeout-minutes: 15
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout code
18+
uses: actions/checkout@v4
19+
20+
- name: Set up Ruby
21+
uses: ruby/setup-ruby@v1
22+
with:
23+
bundler-cache: true
24+
25+
- name: Install pnpm
26+
uses: pnpm/action-setup@v4
27+
with:
28+
run_install: false
29+
30+
- name: Setup Node
31+
uses: actions/setup-node@v4
32+
with:
33+
node-version-file: ".node-version"
34+
cache: 'pnpm'
35+
36+
- name: Install dependencies
37+
run: pnpm install
38+
39+
- name: Lint code for consistent style
40+
run: bundle exec standardrb
41+
42+
- name: Run tests
43+
run: |
44+
bin/rails test:prepare
45+
bin/rails db:test:prepare
46+
bin/rails test
47+
48+
docker-build:
49+
if: github.ref == 'refs/heads/main'
1550
runs-on: ubuntu-latest
1651
permissions:
1752
contents: read
@@ -34,36 +69,17 @@ jobs:
3469
imageName: ghcr.io/ruby-ui/web-devcontainer
3570
cacheFrom: ghcr.io/ruby-ui/web-devcontainer
3671
push: always
37-
runCmd: |
38-
bundle exec standardrb
39-
bin/rails test:prepare
40-
bin/rails db:test:prepare
41-
bin/rails test
72+
4273

43-
heroku-deploy:
44-
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/PhlexUI-web' }}
45-
needs: [test]
74+
next-deploy:
75+
if: github.ref == 'refs/heads/main'
76+
needs: [test, docker-build]
4677
runs-on: ubuntu-latest
4778

4879
steps:
49-
- uses: actions/checkout@v4
50-
- name: Deploy to Heroku
51-
uses: akhileshns/heroku-deploy@v3.14.15
80+
- name: Checkout code
81+
uses: actions/checkout@v4
5282
with:
53-
branch: PhlexUI-web
54-
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
55-
heroku_app_name: "phlex-ui-web"
56-
heroku_email: "seth@statecert.com"
57-
58-
fly-deploy:
59-
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
60-
needs: [test]
61-
name: Deploy app
62-
runs-on: ubuntu-latest
63-
concurrency: deploy-group
64-
steps:
65-
- uses: actions/checkout@v4
66-
- uses: superfly/flyctl-actions/setup-flyctl@master
67-
- run: flyctl deploy --remote-only
68-
env:
69-
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
83+
fetch-depth: 0
84+
- name: Deploy to Heroku Prod
85+
run: git push https://heroku:${{ secrets.HEROKU_RUBYUI_API_KEY }}@git.heroku.com/rubyui-next.git HEAD:main

app/components/ruby_ui/combobox/combobox_checkbox.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def default_attrs
1313
class: [
1414
"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background accent-primary",
1515
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
16-
"disabled:cursor-not-allowed disabled:opacity-50"
16+
"disabled:cursor-not-allowed disabled:opacity-50",
17+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
1718
],
1819
data: {
1920
ruby_ui__combobox_target: "input",

app/components/ruby_ui/combobox/combobox_radio.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ def view_template
1010

1111
def default_attrs
1212
{
13-
class: "aspect-square h-4 w-4 rounded-full border border-primary accent-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
13+
class: [
14+
"aspect-square h-4 w-4 rounded-full border border-primary accent-primary text-primary shadow",
15+
"focus:outline-none",
16+
"focus-visible:ring-1 focus-visible:ring-ring",
17+
"disabled:cursor-not-allowed disabled:opacity-50",
18+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
19+
],
1420
data: {
1521
ruby_ui__combobox_target: "input",
1622
ruby_ui__form_field_target: "input",

app/components/ruby_ui/combobox/combobox_search_input.rb

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,22 @@ def view_template
1919
def default_attrs
2020
{
2121
type: "search",
22-
class: "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none border-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
2322
role: "searchbox",
23+
autocorrect: "off",
24+
autocomplete: "off",
25+
spellcheck: "false",
2426
placeholder: @placeholder,
27+
class: [
28+
"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none border-none",
29+
"focus:ring-0",
30+
"placeholder:text-muted-foreground",
31+
"disabled:cursor-not-allowed disabled:opacity-50",
32+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
33+
],
2534
data: {
2635
ruby_ui__combobox_target: "searchInput",
2736
action: "keyup->ruby-ui--combobox#filterItems search->ruby-ui--combobox#filterItems"
28-
},
29-
autocomplete: "off",
30-
autocorrect: "off",
31-
spellcheck: "false"
37+
}
3238
}
3339
end
3440

app/components/ruby_ui/combobox/combobox_toggle_all_checkbox.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def default_attrs
1313
class: [
1414
"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background accent-primary",
1515
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
16-
"disabled:cursor-not-allowed disabled:opacity-50"
16+
"disabled:cursor-not-allowed disabled:opacity-50",
17+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
1718
],
1819
data: {
1920
ruby_ui__combobox_target: "toggleAll",

app/components/ruby_ui/combobox/combobox_trigger.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ def view_template
2121
def default_attrs
2222
{
2323
type: "button",
24-
class: "flex h-full w-full items-center whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 justify-between",
24+
class: [
25+
"flex h-full w-full items-center whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors border border-input bg-background h-10 px-4 py-2 justify-between",
26+
"hover:bg-accent hover:text-accent-foreground",
27+
"disabled:pointer-events-none disabled:opacity-50",
28+
"aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:cursor-not-allowed",
29+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
30+
],
2531
data: {
2632
placeholder: @placeholder,
2733
ruby_ui__combobox_target: "trigger",

app/components/ruby_ui/form/form_field_label.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@ def view_template(&)
99
private
1010

1111
def default_attrs
12-
{class: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"}
12+
{
13+
class: [
14+
"text-sm font-medium leading-none",
15+
"peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
16+
"peer-aria-disabled:cursor-not-allowed peer-aria-disabled:opacity-70 peer-aria-disabled:pointer-events-none"
17+
]
18+
}
1319
end
1420
end
1521
end

app/components/ruby_ui/input/input.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,14 @@ def default_attrs
1919
ruby_ui__form_field_target: "input",
2020
action: "input->ruby-ui--form-field#onInput invalid->ruby-ui--form-field#onInvalid"
2121
},
22-
class: "flex h-9 w-full rounded-md border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 border-border focus-visible:ring-ring placeholder:text-muted-foreground"
22+
class: [
23+
"flex h-9 w-full rounded-md border bg-background px-3 py-1 text-sm shadow-sm transition-colors border-border",
24+
"placeholder:text-muted-foreground",
25+
"disabled:cursor-not-allowed disabled:opacity-50",
26+
"file:border-0 file:bg-transparent file:text-sm file:font-medium",
27+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
28+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
29+
]
2330
}
2431
end
2532
end

app/components/ruby_ui/link/link.rb

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
module RubyUI
44
class Link < Base
5+
BASE_CLASSES = [
6+
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors",
7+
"disabled:pointer-events-none disabled:opacity-50",
8+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
9+
"aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:cursor-not-allowed"
10+
].freeze
11+
512
def initialize(href: "#", variant: :link, size: :md, icon: false, **attrs)
613
@href = href
714
@variant = variant.to_sym
@@ -36,43 +43,54 @@ def size_classes
3643

3744
def primary_classes
3845
[
39-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground shadow hover:bg-primary/90",
40-
size_classes
46+
BASE_CLASSES,
47+
size_classes,
48+
"bg-primary text-primary-foreground shadow",
49+
"hover:bg-primary/90"
4150
]
4251
end
4352

4453
def link_classes
4554
[
46-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary underline-offset-4 hover:underline",
47-
size_classes
55+
BASE_CLASSES,
56+
size_classes,
57+
"text-primary underline-offset-4",
58+
"hover:underline"
4859
]
4960
end
5061

5162
def secondary_classes
5263
[
53-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground hover:bg-opacity-80",
54-
size_classes
64+
BASE_CLASSES,
65+
size_classes,
66+
"bg-secondary text-secondary-foreground",
67+
"hover:bg-opacity-80"
5568
]
5669
end
5770

5871
def destructive_classes
5972
[
60-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
61-
size_classes
73+
BASE_CLASSES,
74+
size_classes,
75+
"bg-destructive text-destructive-foreground shadow-sm",
76+
"hover:bg-destructive/90"
6277
]
6378
end
6479

6580
def outline_classes
6681
[
67-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
68-
size_classes
82+
BASE_CLASSES,
83+
size_classes,
84+
"border border-input bg-background shadow-sm",
85+
"hover:bg-accent hover:text-accent-foreground"
6986
]
7087
end
7188

7289
def ghost_classes
7390
[
74-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground",
75-
size_classes
91+
BASE_CLASSES,
92+
size_classes,
93+
"hover:bg-accent hover:text-accent-foreground"
7694
]
7795
end
7896

@@ -88,10 +106,7 @@ def default_classes
88106
end
89107

90108
def default_attrs
91-
{
92-
type: "button",
93-
class: default_classes
94-
}
109+
{type: "button", class: default_classes}
95110
end
96111
end
97112
end

0 commit comments

Comments
 (0)