Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
ad784f5
fix: update webhook service taxonomy and guard against undefined service
0xsemaj Mar 11, 2026
9cb1b0d
Bump yaml from 2.8.2 to 2.8.3
dependabot[bot] Mar 27, 2026
60b0de5
Merge pull request #252 from DIMO-Network/staging
0xsemaj Mar 30, 2026
9eb23cc
Merge pull request #255 from DIMO-Network/staging
0xsemaj Mar 30, 2026
69c2843
Merge pull request #256 from DIMO-Network/staging
0xsemaj Mar 30, 2026
77fa1cb
Update constants and vehicle details
0xsemaj Mar 30, 2026
2eaa2f9
Update burn
0xsemaj Mar 30, 2026
29decf9
Enable Stale vehicle removal
0xsemaj Mar 30, 2026
3ecacf4
Add debug
0xsemaj Mar 30, 2026
36292d2
Add delete check
0xsemaj Mar 30, 2026
01a059b
Fix db anomaly
0xsemaj Mar 30, 2026
ce408b0
Add SACD
0xsemaj Mar 30, 2026
3f899d4
setPermissions fix
0xsemaj Mar 30, 2026
48aa0db
powertraintype fix
0xsemaj Mar 30, 2026
0b74053
Remove powertrainType that's throwing off the mint
0xsemaj Mar 30, 2026
f029622
fix SACD and add animation
0xsemaj Mar 31, 2026
5ad9004
Show button to simulator
0xsemaj Mar 31, 2026
37f58c1
Update to paymaster
0xsemaj Mar 31, 2026
897bb60
Revert "Update to paymaster"
0xsemaj Mar 31, 2026
dfd2176
Update app creation modal
0xsemaj Mar 31, 2026
9512343
Badge for simulated vehicles
0xsemaj Mar 31, 2026
7c535ad
Remove Tesla replace with Chevy
0xsemaj Apr 1, 2026
c8d9b33
Configurator mis-disabling
0xsemaj Apr 1, 2026
3d7759c
Avoid 0x mismatch
0xsemaj Apr 1, 2026
d436b68
Explorer init
0xsemaj Apr 3, 2026
35c2741
fix 404
0xsemaj Apr 3, 2026
e6478d0
Explorer work
0xsemaj Apr 3, 2026
502730f
compile issue fix
0xsemaj Apr 3, 2026
34a5547
Type fix
0xsemaj Apr 3, 2026
86dd4a1
init query
0xsemaj Apr 3, 2026
80abdb5
token xchange
0xsemaj Apr 3, 2026
86836e0
query fix
0xsemaj Apr 3, 2026
2ce7619
vehicle pages
0xsemaj Apr 3, 2026
e8b5146
Remove double wrapping
0xsemaj Apr 3, 2026
05aacaf
debug
0xsemaj Apr 3, 2026
ab777ac
Avoid circular dep issue
0xsemaj Apr 3, 2026
d7bb26a
path fix
0xsemaj Apr 3, 2026
0339910
move sdk to serverside
0xsemaj Apr 3, 2026
80c2515
Add query
0xsemaj Apr 4, 2026
d0450fb
JSON update
0xsemaj Apr 4, 2026
c6a71ad
error handling + navbar
0xsemaj Apr 4, 2026
cebb9dc
new license card
0xsemaj Apr 4, 2026
e9e1086
fix
0xsemaj Apr 4, 2026
70dda5e
Sharing card
0xsemaj Apr 4, 2026
d98ac0e
hide right column
0xsemaj Apr 4, 2026
8a2a1a0
fix transparent icon
0xsemaj Apr 4, 2026
6a61f69
SDK update
0xsemaj Apr 4, 2026
8d6bf74
Bump lodash, @graphql-codegen/cli and @graphql-codegen/client-preset
dependabot[bot] Apr 4, 2026
c1be5f2
Merge pull request #258 from DIMO-Network/dependabot/npm_and_yarn/mul…
0xsemaj Apr 4, 2026
c60353e
Merge pull request #250 from DIMO-Network/dependabot/npm_and_yarn/yam…
0xsemaj Apr 4, 2026
f4a3e36
Improve API key gen exp
0xsemaj Apr 4, 2026
d106003
modal fix
0xsemaj Apr 6, 2026
7209d13
Perf improvements on web3 transactions
0xsemaj Apr 7, 2026
db53e0a
More exp improvements
0xsemaj Apr 7, 2026
e3b88aa
Add FleetOS tenant registration flow from API Keys section
0xsemaj Apr 10, 2026
c13180c
Regenerate GraphQL types for updated SignerFragment
0xsemaj Apr 10, 2026
8d16cd1
Fix TDZ crash: move useFragment before useState that depends on it
0xsemaj Apr 10, 2026
abc5a5a
Register FleetOS: rename, new icon, confirmation modal
0xsemaj Apr 10, 2026
2a73101
Fix FleetOS button layout, modal centering, and copy
0xsemaj Apr 10, 2026
e66fc4f
FleetOS: all-or-none rollback on failure
0xsemaj Apr 10, 2026
7afec66
RentalOS: update /tenant/register request shape with user profile data
0xsemaj Apr 10, 2026
3769921
Fix: use server action getUser instead of server-only service
0xsemaj Apr 10, 2026
efe5e1a
Allow fleets.dimo.co in CSP connect-src
0xsemaj Apr 10, 2026
f4cc807
RentalOS: wait for on-chain propagation, retry JWT + registration
0xsemaj Apr 10, 2026
556e5dc
Fix RentalOS tag not showing after wizard completes
0xsemaj Apr 10, 2026
0ea02ff
RentalOS: use Developer JWT signed by API key, not Global Account key
0xsemaj Apr 14, 2026
b9955f6
RentalOS: add console logging to diagnose 403 failures
0xsemaj Apr 14, 2026
a444c01
Fix: strip 0x prefix from private key before getDeveloperJwt
0xsemaj Apr 14, 2026
2b3fd10
Fix: strip 0x prefix from apiKey in /tenant/register body
0xsemaj Apr 14, 2026
712dbf7
Trim whitespace from business_name before /tenant/register
0xsemaj Apr 14, 2026
b048b39
docs: add multi-configuration design spec
0xsemaj Apr 14, 2026
4611663
docs: add multi-configuration implementation plan
0xsemaj Apr 15, 2026
1e7cbba
feat: rename getConfigurationsByClientId to return array, add deleteC…
0xsemaj Apr 15, 2026
0e813a8
refactor: consolidate [id] configurator form components to shared loc…
0xsemaj Apr 15, 2026
3526547
feat: add ConfigurationList component with edit/delete per row
0xsemaj Apr 15, 2026
ad6b65c
feat: add /configurator list page and /configurator/new create route
0xsemaj Apr 15, 2026
c4304e2
feat: add /configurator list page and /configurator/new create route
0xsemaj Apr 15, 2026
9a05799
feat: simplify Vehicles entry point — always route to configurator list
0xsemaj Apr 15, 2026
9028910
fix: update stale import path after [id] types consolidation
0xsemaj Apr 15, 2026
95e80de
fix: update LicenseCard to use renamed getConfigurationsByClientId
0xsemaj Apr 15, 2026
2d14c06
fix: normalize getConfigurationsByClientId response to always return …
0xsemaj Apr 15, 2026
db2e74f
feat: show configurator link with count when multiple configurations …
0xsemaj Apr 15, 2026
6d86eed
feat: add Copy Link action to configurator list
0xsemaj Apr 15, 2026
1c0b432
feat: auto-open Register RentalOS modal via ?focus=rentals_os_signup
JamesReate Apr 29, 2026
b8aba58
fix: wrap home pages in Suspense for useSearchParams CSR bailout
JamesReate Apr 29, 2026
caaf639
Merge pull request #265 from DIMO-Network/feat/rentals-os-focus-deeplink
0xsemaj Apr 29, 2026
d042f42
fix: import focus constants from server-safe module in middleware
JamesReate Apr 29, 2026
7684642
link updates
0xsemaj May 13, 2026
baa7028
Add Japan
0xsemaj May 15, 2026
ee15d46
Connection License Msg update
0xsemaj May 19, 2026
9dcbff9
feat(brand): Brand panel on license details (uploads + name) (#274)
zer0stars May 20, 2026
e039d0a
fix(brand): surface workspace-load failures instead of silent no-op (…
zer0stars May 21, 2026
22a8639
fix(brand): stop toast loop on workspace-load failure (#276)
zer0stars May 21, 2026
cef342c
fix(brand): resolve workspace by license tokenId (#277)
zer0stars May 21, 2026
5c74457
content type fix
0xsemaj May 22, 2026
d7e1508
NextJs config
0xsemaj May 22, 2026
52a5e5c
docs: add multi-brand per developer license design spec
0xsemaj May 23, 2026
0ee1260
feat(brand): extend service + action layers for multi-brand collection
0xsemaj May 23, 2026
ca50028
feat(brand): add BrandRow component with default badge and owner-gate…
0xsemaj May 23, 2026
45e54df
feat(brand): add BrandForm component for create/edit with rename warn…
0xsemaj May 23, 2026
d84e2b6
feat(brand): refactor Brand panel into multi-brand list manager with …
0xsemaj May 24, 2026
10d3726
chore: update InputMaybe type to include undefined
0xsemaj May 24, 2026
3ba1ac7
fix(brand): disable delete button when only one brand or brand is def…
0xsemaj May 24, 2026
2d52a23
feat(configurator): add brandName selector to Login with DIMO config
0xsemaj May 24, 2026
da1df4f
feat(configurator): add brandName selector to Share Vehicles with DIM…
0xsemaj May 24, 2026
a1d0056
feat(connections): grant SACD permissions to generated connection key…
elffjs May 26, 2026
699d3e1
Correct more connection mint prices 100 to 1
elffjs May 26, 2026
5100ddf
docs: add design spec for renounce vehicle permissions feature
0xsemaj May 20, 2026
bd329d0
feat(vehicles): add renounce vehicle access action
0xsemaj May 27, 2026
11b9d02
fix(vehicles): restore exact gql query string for TypedDocumentNode i…
0xsemaj May 27, 2026
f74be5a
fix(vehicles): use renouncePermissions instead of setPermissions
0xsemaj May 27, 2026
83499cc
fix(vehicles): throw on success:false receipt from processTransactions
0xsemaj May 27, 2026
06559a2
debug(vehicles): log clientId vs smartContractAddress in renounce
0xsemaj May 27, 2026
880a00d
fix(test): pass clientId arg to renounce calls
0xsemaj May 27, 2026
f0dcb09
docs: add frontend redesign design spec
0xsemaj May 28, 2026
db3349c
docs: add frontend redesign implementation plan
0xsemaj May 28, 2026
d7249a1
feat: add DIMO Teal token layer and shadcn/ui foundation
0xsemaj May 28, 2026
e0c010b
feat: add dark/light mode toggle via next-themes
0xsemaj May 28, 2026
96501bf
fix: make ThemeToggle keyboard accessible, fix hydration fallback size
0xsemaj May 28, 2026
b03af36
feat: add sidebar collapse state to LayoutContext
0xsemaj May 28, 2026
b9d8fef
feat: redesign sidebar with grouped sections and collapse toggle
0xsemaj May 28, 2026
9256a33
fix: remove Wrapper-in-render, add type=button, stable keys, type bot…
0xsemaj May 28, 2026
0e36689
feat: redesign header credits as teal pill, show balance in USD
0xsemaj May 28, 2026
fb7fdf1
feat: migrate Button to shadcn/ui foundation
0xsemaj May 28, 2026
df6f04d
feat: migrate form primitives to shadcn/ui (Input, Textarea, Switch, …
0xsemaj May 28, 2026
23fa078
fix: import ChangeEvent type directly in CheckboxField
0xsemaj May 28, 2026
59c41a5
feat: migrate Modal to shadcn Dialog
0xsemaj May 28, 2026
a65ac9f
wip: frontend-redesign paused at 8/10 tasks
0xsemaj May 28, 2026
24c2f7c
feat: replace withNotifications HOC and Toast with Sonner
0xsemaj May 28, 2026
365d4e5
feat: AppCard simplification + LicenseCard token cleanup (Task 10)
0xsemaj May 28, 2026
8b3c81b
fix: migrate useErrorHandler to sonner, clean up VehicleSimulator tes…
0xsemaj May 28, 2026
0821263
chore: remove dead notification infrastructure (Toast, NotificationPa…
0xsemaj May 28, 2026
4061bf7
chore: replace remaining bg-surface-* and hardcoded text-white with s…
0xsemaj May 29, 2026
929c968
fix: replace invalid text-text-primary token, clean up remaining text…
0xsemaj May 29, 2026
e33f879
fix: replace inert bg-surface-overlay with bg-accent token
0xsemaj May 29, 2026
b33ec7b
fix: add sr-only DialogTitle to Modal, remove stale handoff files
0xsemaj May 29, 2026
62cdb18
chore: remove .superpowers from tracking, add to .gitignore
0xsemaj May 29, 2026
fda84ff
tailwind update
0xsemaj May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,4 @@ next-env.d.ts

certificates

.superpowers/
2 changes: 0 additions & 2 deletions __tests__/unit/components/AppCardComponent.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@ describe('AppCard', () => {
const { container } = render(<AppCard {...app} />);

const appNameElm = screen.getByText('Test App');
const environmentElm = screen.getByText('sandbox');

expect(appNameElm).toBeInTheDocument();
expect(environmentElm).toBeInTheDocument();
expect(container).toMatchSnapshot();
});
});
4 changes: 2 additions & 2 deletions __tests__/unit/components/CheckboxField.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import { CheckboxField } from '@/components/CheckboxField';

describe('CheckboxField', () => {
it('renders an input field', () => {
render(<CheckboxField name="terms" role="terms" />);
render(<CheckboxField name="terms" />);

const field = screen.getByRole('terms');
const field = screen.getByRole('checkbox');

expect(field).toBeInTheDocument();
});
Expand Down
10 changes: 5 additions & 5 deletions __tests__/unit/components/Menu.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ describe('MenuItem component', () => {
expect(linkElement).toHaveAttribute('target', '_self');
expect(linkElement).toHaveTextContent('Test Label');
expect(screen.getByText('Icon')).toHaveClass('test-icon-class');
expect(screen.getByRole('listitem')).toHaveClass('!text-grey-200/50');
expect(screen.getByRole('listitem')).toHaveClass('opacity-40');
});

it('calls the provided function when clicked', () => {
Expand All @@ -78,8 +78,8 @@ describe('MenuItem component', () => {
/>,
);

const linkElement = screen.getByRole('link');
fireEvent.click(linkElement);
const buttonElement = screen.getByRole('button', { name: 'Test Label' });
fireEvent.click(buttonElement);
expect(handleClick).toHaveBeenCalledTimes(1);
});

Expand All @@ -97,8 +97,8 @@ describe('MenuItem component', () => {
/>,
);

const linkElement = screen.getByRole('link');
fireEvent.click(linkElement);
const listItem = screen.getByRole('listitem');
expect(listItem).toHaveClass('opacity-40');
expect(handleClick).not.toHaveBeenCalled();
});
});
4 changes: 2 additions & 2 deletions __tests__/unit/components/MenuItem.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ describe('MenuItem Component', () => {
/>,
);

fireEvent.click(screen.getByRole('link'));
fireEvent.click(screen.getByRole('button', { name: 'Clickable Menu Item' }));
expect(handleClick).toHaveBeenCalled();
});

Expand All @@ -90,7 +90,7 @@ describe('MenuItem Component', () => {
/>,
);

fireEvent.click(screen.getByRole('link'));
expect(screen.getByRole('listitem')).toHaveClass('opacity-40');
expect(handleClick).not.toHaveBeenCalled();
});
});
33 changes: 0 additions & 33 deletions __tests__/unit/components/Toast.test.tsx

This file was deleted.

104 changes: 59 additions & 45 deletions __tests__/unit/components/__snapshots__/AppCardComponent.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,59 +3,73 @@
exports[`AppCard renders an app card 1`] = `
<div>
<div
class="card app-card card-border"
class="app-card"
>
<div
class="content"
>
<p
class="title"
<div
class="flex w-full flex-row justify-between items-center"
>
Test App
</p>
<p
class="description"
>
sandbox
</p>
</div>
<svg
class="w-5 h-5"
fill="none"
role="beach-access-icon"
viewBox="0 0 18 18"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M10.3403 11.7689L11.7703 10.3389L17.5003 16.0689C17.8903 16.4589 17.8903 17.0989 17.5003 17.4989C17.1103 17.8889 16.4703 17.8889 16.0703 17.4989L10.3403 11.7689ZM14.6303 6.03886L15.9003 4.76886C16.7903 3.87886 16.6703 2.33886 15.5903 1.68886C11.7003 -0.691138 6.56026 -0.201138 3.19026 3.15886C7.12026 1.85886 11.5003 2.90886 14.6303 6.03886ZM3.16026 3.18886C-0.199739 6.55886 -0.689739 11.6989 1.68026 15.5889C2.34026 16.6689 3.87026 16.7989 4.76026 15.8989L6.03026 14.6289C2.91026 11.4989 1.86026 7.11886 3.16026 3.18886ZM3.18026 3.16886L3.17026 3.17886C2.79026 6.18886 4.34026 10.0589 7.47026 13.1989L13.2003 7.46886C10.0703 4.33886 6.19026 2.78886 3.18026 3.16886Z"
fill="white"
/>
<path
d="M10.3403 11.7689L11.7703 10.3389L17.5003 16.0689C17.8903 16.4589 17.8903 17.0989 17.5003 17.4989C17.1103 17.8889 16.4703 17.8889 16.0703 17.4989L10.3403 11.7689ZM14.6303 6.03886L15.9003 4.76886C16.7903 3.87886 16.6703 2.33886 15.5903 1.68886C11.7003 -0.691138 6.56026 -0.201138 3.19026 3.15886C7.12026 1.85886 11.5003 2.90886 14.6303 6.03886ZM3.16026 3.18886C-0.199739 6.55886 -0.689739 11.6989 1.68026 15.5889C2.34026 16.6689 3.87026 16.7989 4.76026 15.8989L6.03026 14.6289C2.91026 11.4989 1.86026 7.11886 3.16026 3.18886ZM3.18026 3.16886L3.17026 3.17886C2.79026 6.18886 4.34026 10.0589 7.47026 13.1989L13.2003 7.46886C10.0703 4.33886 6.19026 2.78886 3.18026 3.16886Z"
fill="url(#paint0_radial_1956_55)"
fill-opacity="0.6"
/>
<defs>
<radialgradient
cx="0"
cy="0"
gradientTransform="translate(12.4341 7.79946) rotate(174.392) scale(12.2849 56.7031)"
gradientUnits="userSpaceOnUse"
id="paint0_radial_1956_749"
r="1"
<p
class="title"
>
Test App
</p>
<svg
class="w-4 h-4 text-muted-foreground"
fill="none"
role="developer-board-icon"
viewBox="0 0 20 18"
xmlns="http://www.w3.org/2000/svg"
>
<stop
offset="0.260417"
stop-color="#6EE4DA"
stop-opacity="0.8"
<path
d="M20 6V4H18V2C18 0.9 17.1 0 16 0H2C0.9 0 0 0.9 0 2V16C0 17.1 0.9 18 2 18H16C17.1 18 18 17.1 18 16V14H20V12H18V10H20V8H18V6H20ZM16 16H2V2H16V16ZM4 10H9V14H4V10ZM10 4H14V7H10V4ZM4 4H9V9H4V4ZM10 8H14V14H10V8Z"
fill="white"
/>
<stop
offset="1"
stop-color="#B1E3FF"
<path
d="M20 6V4H18V2C18 0.9 17.1 0 16 0H2C0.9 0 0 0.9 0 2V16C0 17.1 0.9 18 2 18H16C17.1 18 18 17.1 18 16V14H20V12H18V10H20V8H18V6H20ZM16 16H2V2H16V16ZM4 10H9V14H4V10ZM10 4H14V7H10V4ZM4 4H9V9H4V4ZM10 8H14V14H10V8Z"
fill="url(#paint0_radial_1956_55)"
fill-opacity="0.6"
/>
</radialgradient>
</defs>
</svg>
<defs>
<radialgradient
cx="0"
cy="0"
gradientTransform="translate(13.9053 7.77098) rotate(174.949) scale(13.9595 58.1014)"
gradientUnits="userSpaceOnUse"
id="paint0_radial_1956_55"
r="1"
>
<stop
offset="0.260417"
stop-color="#6EE4DA"
stop-opacity="0.8"
/>
<stop
offset="1"
stop-color="#B1E3FF"
/>
</radialgradient>
</defs>
</svg>
</div>
<a
class="anchor"
href="/app/details/undefined"
target="_self"
>
<button
class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2 button dark w-full !h-9"
>
<span
class="content"
>
App Details
</span>
</button>
</a>
</div>
</div>
</div>
`;
5 changes: 3 additions & 2 deletions __tests__/unit/components/__snapshots__/Table.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
exports[`Table renders a table with actions 1`] = `
<div>
<div
class="min-w-full bg-surface-default rounded-xl p-4"
class="min-w-full bg-card rounded-xl p-4"
>
<table
class="table"
Expand Down Expand Up @@ -43,6 +43,7 @@ exports[`Table renders a table with actions 1`] = `
>
<path
d="M13.7497 0.833374H3.74967C2.83301 0.833374 2.08301 1.58337 2.08301 2.50004V14.1667H3.74967V2.50004H13.7497V0.833374ZM16.2497 4.16671H7.08301C6.16634 4.16671 5.41634 4.91671 5.41634 5.83337V17.5C5.41634 18.4167 6.16634 19.1667 7.08301 19.1667H16.2497C17.1663 19.1667 17.9163 18.4167 17.9163 17.5V5.83337C17.9163 4.91671 17.1663 4.16671 16.2497 4.16671ZM16.2497 17.5H7.08301V5.83337H16.2497V17.5Z"
fill="currentColor"
/>
</svg>
</td>
Expand All @@ -56,7 +57,7 @@ exports[`Table renders a table with actions 1`] = `
exports[`Table renders a table with custom render 1`] = `
<div>
<div
class="min-w-full bg-surface-default rounded-xl p-4"
class="min-w-full bg-card rounded-xl p-4"
>
<table
class="table"
Expand Down
99 changes: 0 additions & 99 deletions __tests__/unit/components/__snapshots__/Toast.test.tsx.snap

This file was deleted.

24 changes: 5 additions & 19 deletions __tests__/unit/components/__snapshots__/Toggle.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,15 @@ exports[`Toggle renders a toggle component 1`] = `
<button
aria-checked="false"
aria-label="toggle"
class="custom-toggle group"
data-headlessui-state=""
id="headlessui-switch-:r0:"
class="peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input"
data-state="unchecked"
role="switch"
tabindex="0"
type="button"
value="on"
>
<span
class="sr-only"
>
Use setting
</span>
<span
aria-hidden="true"
class="base"
/>
<span
aria-hidden="true"
class="inactive bar"
/>
<span
aria-hidden="true"
class="inactive dot"
class="pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
data-state="unchecked"
/>
</button>
</div>
Expand Down
Loading