@tangle-network/sandbox-ui 0.20.3 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,96 @@
1
+ import '@tangle-network/ui/sdk-hooks';
2
+ import { SessionMessage, SessionPart } from '@tangle-network/ui/types';
3
+
4
+ /** Minimal session info returned by the listing API. */
5
+ interface SessionInfo {
6
+ id: string;
7
+ title: string;
8
+ parentID?: string;
9
+ }
10
+ interface UseSessionStreamOptions {
11
+ /** Base URL of the session proxy (e.g. "http://localhost:9100"). */
12
+ apiUrl: string;
13
+ /** Bearer token for authentication. */
14
+ token: string | null;
15
+ /** Session ID to stream events for. */
16
+ sessionId: string;
17
+ /** Only connect when true. Defaults to true. */
18
+ enabled?: boolean;
19
+ }
20
+ /**
21
+ * Per-message overrides forwarded to the sidecar's send-message endpoint.
22
+ * Every field is optional — omitted fields fall back to the session's
23
+ * backend configuration. Matches `SendMessageRequestSchema` on the sidecar.
24
+ */
25
+ interface SendMessageOptions {
26
+ /** Backend agent identifier override (e.g. a named opencode agent). */
27
+ agent?: string;
28
+ /** Per-turn model override; session backend supplies apiKey/baseUrl. */
29
+ model?: {
30
+ providerID: string;
31
+ modelID: string;
32
+ };
33
+ /** Per-turn system prompt override. */
34
+ system?: string;
35
+ /** Thinking-effort hint; the sidecar maps it to a thinking-token budget. */
36
+ reasoningEffort?: 'low' | 'medium' | 'high';
37
+ }
38
+ interface UseSessionStreamResult {
39
+ /** All messages in the session (fetched + streaming). */
40
+ messages: SessionMessage[];
41
+ /** Part map: messageId → SessionPart[]. */
42
+ partMap: Record<string, SessionPart[]>;
43
+ /** Whether the agent is currently streaming a response. */
44
+ isStreaming: boolean;
45
+ /** Send a text message to the agent, with optional per-turn overrides. */
46
+ send: (text: string, options?: SendMessageOptions) => Promise<void>;
47
+ /** Abort the current agent execution. */
48
+ abort: () => Promise<void>;
49
+ /** Refetch full message history from the API. */
50
+ refetch: () => Promise<void>;
51
+ /** Connection or stream error, if any. */
52
+ error: string | null;
53
+ /** Whether the SSE connection is active. */
54
+ connected: boolean;
55
+ }
56
+ /**
57
+ * Streams chat messages from a sidecar session gateway via SSE.
58
+ *
59
+ * Fetches existing message history on mount, then subscribes to SSE for
60
+ * real-time updates. Maps the sidecar's message format to agent-ui's
61
+ * SessionMessage + partMap format.
62
+ */
63
+ declare function useSessionStream({ apiUrl, token, sessionId, enabled, }: UseSessionStreamOptions): UseSessionStreamResult;
64
+
65
+ interface UseSidecarAuthOptions {
66
+ /** Scoping key for token storage (e.g. botId, sandboxId). */
67
+ resourceId: string;
68
+ /** Base URL of the sidecar or operator API. */
69
+ apiUrl: string;
70
+ /**
71
+ * Sign a plaintext message and return the hex signature.
72
+ * Consuming apps wire this to their wallet library (e.g. wagmi's signMessageAsync).
73
+ */
74
+ signMessage: (message: string) => Promise<string>;
75
+ }
76
+ interface SidecarAuth {
77
+ token: string | null;
78
+ isAuthenticated: boolean;
79
+ isAuthenticating: boolean;
80
+ authenticate: () => Promise<string | null>;
81
+ clearCachedToken: () => void;
82
+ error: string | null;
83
+ }
84
+ /**
85
+ * Generic sidecar PASETO challenge/response auth.
86
+ *
87
+ * Flow:
88
+ * 1. POST /api/auth/challenge → { nonce, message, expires_at }
89
+ * 2. signMessage(message) → signature (provided by consuming app)
90
+ * 3. POST /api/auth/session → { token, address, expires_at }
91
+ *
92
+ * Tokens are cached in localStorage and auto-refreshed 5 minutes before expiry.
93
+ */
94
+ declare function useSidecarAuth({ resourceId, apiUrl, signMessage }: UseSidecarAuthOptions): SidecarAuth;
95
+
96
+ export { type SessionInfo as S, type UseSessionStreamOptions as U, type SidecarAuth as a, type UseSessionStreamResult as b, type UseSidecarAuthOptions as c, useSidecarAuth as d, type SendMessageOptions as e, useSessionStream as u };
@@ -1,78 +1,3 @@
1
1
  export { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, ConnectionState, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, TaskStreamEvent, TerminalStreamEvent, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, useAutoScroll, useDropdownMenu, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useToolCallStream } from '@tangle-network/ui/sdk-hooks';
2
- import { SessionMessage, SessionPart } from '@tangle-network/ui/types';
3
-
4
- /** Minimal session info returned by the listing API. */
5
- interface SessionInfo {
6
- id: string;
7
- title: string;
8
- parentID?: string;
9
- }
10
- interface UseSessionStreamOptions {
11
- /** Base URL of the session proxy (e.g. "http://localhost:9100"). */
12
- apiUrl: string;
13
- /** Bearer token for authentication. */
14
- token: string | null;
15
- /** Session ID to stream events for. */
16
- sessionId: string;
17
- /** Only connect when true. Defaults to true. */
18
- enabled?: boolean;
19
- }
20
- interface UseSessionStreamResult {
21
- /** All messages in the session (fetched + streaming). */
22
- messages: SessionMessage[];
23
- /** Part map: messageId → SessionPart[]. */
24
- partMap: Record<string, SessionPart[]>;
25
- /** Whether the agent is currently streaming a response. */
26
- isStreaming: boolean;
27
- /** Send a text message to the agent. */
28
- send: (text: string) => Promise<void>;
29
- /** Abort the current agent execution. */
30
- abort: () => Promise<void>;
31
- /** Refetch full message history from the API. */
32
- refetch: () => Promise<void>;
33
- /** Connection or stream error, if any. */
34
- error: string | null;
35
- /** Whether the SSE connection is active. */
36
- connected: boolean;
37
- }
38
- /**
39
- * Streams chat messages from a sidecar session gateway via SSE.
40
- *
41
- * Fetches existing message history on mount, then subscribes to SSE for
42
- * real-time updates. Maps the sidecar's message format to agent-ui's
43
- * SessionMessage + partMap format.
44
- */
45
- declare function useSessionStream({ apiUrl, token, sessionId, enabled, }: UseSessionStreamOptions): UseSessionStreamResult;
46
-
47
- interface UseSidecarAuthOptions {
48
- /** Scoping key for token storage (e.g. botId, sandboxId). */
49
- resourceId: string;
50
- /** Base URL of the sidecar or operator API. */
51
- apiUrl: string;
52
- /**
53
- * Sign a plaintext message and return the hex signature.
54
- * Consuming apps wire this to their wallet library (e.g. wagmi's signMessageAsync).
55
- */
56
- signMessage: (message: string) => Promise<string>;
57
- }
58
- interface SidecarAuth {
59
- token: string | null;
60
- isAuthenticated: boolean;
61
- isAuthenticating: boolean;
62
- authenticate: () => Promise<string | null>;
63
- clearCachedToken: () => void;
64
- error: string | null;
65
- }
66
- /**
67
- * Generic sidecar PASETO challenge/response auth.
68
- *
69
- * Flow:
70
- * 1. POST /api/auth/challenge → { nonce, message, expires_at }
71
- * 2. signMessage(message) → signature (provided by consuming app)
72
- * 3. POST /api/auth/session → { token, address, expires_at }
73
- *
74
- * Tokens are cached in localStorage and auto-refreshed 5 minutes before expiry.
75
- */
76
- declare function useSidecarAuth({ resourceId, apiUrl, signMessage }: UseSidecarAuthOptions): SidecarAuth;
77
-
78
- export { type SessionInfo, type SidecarAuth, type UseSessionStreamOptions, type UseSessionStreamResult, type UseSidecarAuthOptions, useSessionStream, useSidecarAuth };
2
+ export { S as SessionInfo, a as SidecarAuth, U as UseSessionStreamOptions, b as UseSessionStreamResult, c as UseSidecarAuthOptions, u as useSessionStream, d as useSidecarAuth } from './sdk-hooks-jUbIngSV.js';
3
+ import '@tangle-network/ui/types';
package/dist/sdk-hooks.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useSessionStream,
3
3
  useSidecarAuth
4
- } from "./chunk-CMY7W45U.js";
4
+ } from "./chunk-MEDE37J5.js";
5
5
 
6
6
  // src/sdk-hooks.ts
7
7
  import {
package/dist/styles.css CHANGED
@@ -30,7 +30,6 @@
30
30
  --color-violet-300: oklch(81.1% 0.111 293.571);
31
31
  --color-violet-400: oklch(70.2% 0.183 293.541);
32
32
  --color-violet-500: oklch(60.6% 0.25 292.717);
33
- --color-gray-300: oklch(87.2% 0.01 258.338);
34
33
  --color-gray-900: oklch(21% 0.034 264.665);
35
34
  --color-zinc-400: oklch(70.5% 0.015 286.067);
36
35
  --color-neutral-400: oklch(70.8% 0 0);
@@ -70,7 +69,6 @@
70
69
  --font-weight-semibold: 600;
71
70
  --font-weight-bold: 700;
72
71
  --font-weight-extrabold: 800;
73
- --font-weight-black: 900;
74
72
  --tracking-tighter: -0.05em;
75
73
  --tracking-tight: -0.025em;
76
74
  --tracking-normal: 0em;
@@ -523,6 +521,9 @@
523
521
  .mb-2 {
524
522
  margin-bottom: calc(var(--spacing) * 2);
525
523
  }
524
+ .mb-2\.5 {
525
+ margin-bottom: calc(var(--spacing) * 2.5);
526
+ }
526
527
  .mb-3 {
527
528
  margin-bottom: calc(var(--spacing) * 3);
528
529
  }
@@ -550,6 +551,9 @@
550
551
  .ml-1 {
551
552
  margin-left: calc(var(--spacing) * 1);
552
553
  }
554
+ .ml-1\.5 {
555
+ margin-left: calc(var(--spacing) * 1.5);
556
+ }
553
557
  .ml-2 {
554
558
  margin-left: calc(var(--spacing) * 2);
555
559
  }
@@ -605,9 +609,6 @@
605
609
  width: calc(var(--spacing) * 6);
606
610
  height: calc(var(--spacing) * 6);
607
611
  }
608
- .h-0\.5 {
609
- height: calc(var(--spacing) * 0.5);
610
- }
611
612
  .h-1 {
612
613
  height: calc(var(--spacing) * 1);
613
614
  }
@@ -668,9 +669,6 @@
668
669
  .h-28 {
669
670
  height: calc(var(--spacing) * 28);
670
671
  }
671
- .h-32 {
672
- height: calc(var(--spacing) * 32);
673
- }
674
672
  .h-48 {
675
673
  height: calc(var(--spacing) * 48);
676
674
  }
@@ -1489,12 +1487,6 @@
1489
1487
  .rounded-\[2px\] {
1490
1488
  border-radius: 2px;
1491
1489
  }
1492
- .rounded-\[14px\] {
1493
- border-radius: 14px;
1494
- }
1495
- .rounded-\[16px\] {
1496
- border-radius: 16px;
1497
- }
1498
1490
  .rounded-\[18px\] {
1499
1491
  border-radius: 18px;
1500
1492
  }
@@ -2056,10 +2048,6 @@
2056
2048
  background-color: color-mix(in oklab, var(--color-yellow-600) 20%, transparent);
2057
2049
  }
2058
2050
  }
2059
- .bg-gradient-to-br {
2060
- --tw-gradient-position: to bottom right in oklab;
2061
- background-image: linear-gradient(var(--tw-gradient-stops));
2062
- }
2063
2051
  .bg-gradient-to-l {
2064
2052
  --tw-gradient-position: to left in oklab;
2065
2053
  background-image: linear-gradient(var(--tw-gradient-stops));
@@ -2111,6 +2099,9 @@
2111
2099
  .p-3 {
2112
2100
  padding: calc(var(--spacing) * 3);
2113
2101
  }
2102
+ .p-3\.5 {
2103
+ padding: calc(var(--spacing) * 3.5);
2104
+ }
2114
2105
  .p-4 {
2115
2106
  padding: calc(var(--spacing) * 4);
2116
2107
  }
@@ -2300,9 +2291,6 @@
2300
2291
  .pb-1 {
2301
2292
  padding-bottom: calc(var(--spacing) * 1);
2302
2293
  }
2303
- .pb-1\.5 {
2304
- padding-bottom: calc(var(--spacing) * 1.5);
2305
- }
2306
2294
  .pb-2 {
2307
2295
  padding-bottom: calc(var(--spacing) * 2);
2308
2296
  }
@@ -2471,10 +2459,6 @@
2471
2459
  --tw-font-weight: var(--font-sans);
2472
2460
  font-weight: var(--font-sans);
2473
2461
  }
2474
- .font-black {
2475
- --tw-font-weight: var(--font-weight-black);
2476
- font-weight: var(--font-weight-black);
2477
- }
2478
2462
  .font-bold {
2479
2463
  --tw-font-weight: var(--font-weight-bold);
2480
2464
  font-weight: var(--font-weight-bold);
@@ -2758,9 +2742,6 @@
2758
2742
  .underline {
2759
2743
  text-decoration-line: underline;
2760
2744
  }
2761
- .underline-offset-2 {
2762
- text-underline-offset: 2px;
2763
- }
2764
2745
  .underline-offset-4 {
2765
2746
  text-underline-offset: 4px;
2766
2747
  }
@@ -2799,10 +2780,6 @@
2799
2780
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2800
2781
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2801
2782
  }
2802
- .shadow-2xl {
2803
- --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
2804
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2805
- }
2806
2783
  .shadow-\[0_1px_2px_rgba\(15\,23\,42\,0\.04\)\] {
2807
2784
  --tw-shadow: 0 1px 2px var(--tw-shadow-color, rgba(15,23,42,0.04));
2808
2785
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2843,18 +2820,10 @@
2843
2820
  --tw-shadow: var(--shadow-glow);
2844
2821
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2845
2822
  }
2846
- .shadow-inner {
2847
- --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
2848
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2849
- }
2850
2823
  .shadow-lg {
2851
2824
  --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2852
2825
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2853
2826
  }
2854
- .shadow-md {
2855
- --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2856
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2857
- }
2858
2827
  .shadow-none {
2859
2828
  --tw-shadow: 0 0 #0000;
2860
2829
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2890,10 +2859,6 @@
2890
2859
  .ring-\[var\(--bg-root\)\] {
2891
2860
  --tw-ring-color: var(--bg-root);
2892
2861
  }
2893
- .ring-offset-2 {
2894
- --tw-ring-offset-width: 2px;
2895
- --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2896
- }
2897
2862
  .outline {
2898
2863
  outline-style: var(--tw-outline-style);
2899
2864
  outline-width: 1px;
@@ -3042,12 +3007,6 @@
3042
3007
  }
3043
3008
  }
3044
3009
  }
3045
- .peer-focus\:outline-none {
3046
- &:is(:where(.peer):focus ~ *) {
3047
- --tw-outline-style: none;
3048
- outline-style: none;
3049
- }
3050
- }
3051
3010
  .peer-disabled\:cursor-not-allowed {
3052
3011
  &:is(:where(.peer):disabled ~ *) {
3053
3012
  cursor: not-allowed;
@@ -3099,12 +3058,6 @@
3099
3058
  top: calc(var(--spacing) * 0);
3100
3059
  }
3101
3060
  }
3102
- .after\:top-\[2px\] {
3103
- &::after {
3104
- content: var(--tw-content);
3105
- top: 2px;
3106
- }
3107
- }
3108
3061
  .after\:right-0 {
3109
3062
  &::after {
3110
3063
  content: var(--tw-content);
@@ -3117,86 +3070,12 @@
3117
3070
  left: calc(var(--spacing) * 0);
3118
3071
  }
3119
3072
  }
3120
- .after\:left-\[2px\] {
3121
- &::after {
3122
- content: var(--tw-content);
3123
- left: 2px;
3124
- }
3125
- }
3126
- .after\:h-5 {
3127
- &::after {
3128
- content: var(--tw-content);
3129
- height: calc(var(--spacing) * 5);
3130
- }
3131
- }
3132
3073
  .after\:h-\[2px\] {
3133
3074
  &::after {
3134
3075
  content: var(--tw-content);
3135
3076
  height: 2px;
3136
3077
  }
3137
3078
  }
3138
- .after\:w-5 {
3139
- &::after {
3140
- content: var(--tw-content);
3141
- width: calc(var(--spacing) * 5);
3142
- }
3143
- }
3144
- .after\:rounded-full {
3145
- &::after {
3146
- content: var(--tw-content);
3147
- border-radius: calc(infinity * 1px);
3148
- }
3149
- }
3150
- .after\:border {
3151
- &::after {
3152
- content: var(--tw-content);
3153
- border-style: var(--tw-border-style);
3154
- border-width: 1px;
3155
- }
3156
- }
3157
- .after\:border-gray-300 {
3158
- &::after {
3159
- content: var(--tw-content);
3160
- border-color: var(--color-gray-300);
3161
- }
3162
- }
3163
- .after\:bg-white {
3164
- &::after {
3165
- content: var(--tw-content);
3166
- background-color: var(--color-white);
3167
- }
3168
- }
3169
- .after\:transition-all {
3170
- &::after {
3171
- content: var(--tw-content);
3172
- transition-property: all;
3173
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3174
- transition-duration: var(--tw-duration, var(--default-transition-duration));
3175
- }
3176
- }
3177
- .after\:content-\[\'\'\] {
3178
- &::after {
3179
- --tw-content: '';
3180
- content: var(--tw-content);
3181
- }
3182
- }
3183
- .peer-checked\:after\:translate-x-full {
3184
- &:is(:where(.peer):checked ~ *) {
3185
- &::after {
3186
- content: var(--tw-content);
3187
- --tw-translate-x: 100%;
3188
- translate: var(--tw-translate-x) var(--tw-translate-y);
3189
- }
3190
- }
3191
- }
3192
- .peer-checked\:after\:border-white {
3193
- &:is(:where(.peer):checked ~ *) {
3194
- &::after {
3195
- content: var(--tw-content);
3196
- border-color: var(--color-white);
3197
- }
3198
- }
3199
- }
3200
3079
  .last\:border-0 {
3201
3080
  &:last-child {
3202
3081
  border-style: var(--tw-border-style);
@@ -3266,16 +3145,6 @@
3266
3145
  }
3267
3146
  }
3268
3147
  }
3269
- .hover\:border-red-500\/30 {
3270
- &:hover {
3271
- @media (hover: hover) {
3272
- border-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 30%, transparent);
3273
- @supports (color: color-mix(in lab, red, red)) {
3274
- border-color: color-mix(in oklab, var(--color-red-500) 30%, transparent);
3275
- }
3276
- }
3277
- }
3278
- }
3279
3148
  .hover\:bg-\[var\(--accent-surface-soft\)\] {
3280
3149
  &:hover {
3281
3150
  @media (hover: hover) {
@@ -3365,16 +3234,6 @@
3365
3234
  }
3366
3235
  }
3367
3236
  }
3368
- .hover\:bg-red-500\/10 {
3369
- &:hover {
3370
- @media (hover: hover) {
3371
- background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 10%, transparent);
3372
- @supports (color: color-mix(in lab, red, red)) {
3373
- background-color: color-mix(in oklab, var(--color-red-500) 10%, transparent);
3374
- }
3375
- }
3376
- }
3377
- }
3378
3237
  .hover\:bg-red-600\/30 {
3379
3238
  &:hover {
3380
3239
  @media (hover: hover) {
@@ -3452,22 +3311,6 @@
3452
3311
  }
3453
3312
  }
3454
3313
  }
3455
- .hover\:shadow-sm {
3456
- &:hover {
3457
- @media (hover: hover) {
3458
- --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
3459
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3460
- }
3461
- }
3462
- }
3463
- .hover\:brightness-95 {
3464
- &:hover {
3465
- @media (hover: hover) {
3466
- --tw-brightness: brightness(95%);
3467
- filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
3468
- }
3469
- }
3470
- }
3471
3314
  .hover\:brightness-110 {
3472
3315
  &:hover {
3473
3316
  @media (hover: hover) {
@@ -3503,11 +3346,6 @@
3503
3346
  color: var(--color-red-400);
3504
3347
  }
3505
3348
  }
3506
- .focus\:underline {
3507
- &:focus {
3508
- text-decoration-line: underline;
3509
- }
3510
- }
3511
3349
  .focus\:ring-0 {
3512
3350
  &:focus {
3513
3351
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
@@ -3632,6 +3470,11 @@
3632
3470
  scale: 0.98;
3633
3471
  }
3634
3472
  }
3473
+ .active\:scale-\[0\.99\] {
3474
+ &:active {
3475
+ scale: 0.99;
3476
+ }
3477
+ }
3635
3478
  .active\:bg-\[var\(--border-accent\)\] {
3636
3479
  &:active {
3637
3480
  background-color: var(--border-accent);
@@ -3657,6 +3500,11 @@
3657
3500
  opacity: 50%;
3658
3501
  }
3659
3502
  }
3503
+ .disabled\:opacity-60 {
3504
+ &:disabled {
3505
+ opacity: 60%;
3506
+ }
3507
+ }
3660
3508
  .data-\[disabled\]\:pointer-events-none {
3661
3509
  &[data-disabled] {
3662
3510
  pointer-events: none;
@@ -3729,14 +3577,9 @@
3729
3577
  translate: var(--tw-translate-x) var(--tw-translate-y);
3730
3578
  }
3731
3579
  }
3732
- .sm\:mx-4 {
3580
+ .sm\:mx-3 {
3733
3581
  @media (width >= 40rem) {
3734
- margin-inline: calc(var(--spacing) * 4);
3735
- }
3736
- }
3737
- .sm\:ml-3 {
3738
- @media (width >= 40rem) {
3739
- margin-left: calc(var(--spacing) * 3);
3582
+ margin-inline: calc(var(--spacing) * 3);
3740
3583
  }
3741
3584
  }
3742
3585
  .sm\:inline {
@@ -3983,9 +3826,9 @@
3983
3826
  border-width: 0px;
3984
3827
  }
3985
3828
  }
3986
- .\[\&\:\:-moz-range-track\]\:h-2 {
3829
+ .\[\&\:\:-moz-range-track\]\:h-1\.5 {
3987
3830
  &::-moz-range-track {
3988
- height: calc(var(--spacing) * 2);
3831
+ height: calc(var(--spacing) * 1.5);
3989
3832
  }
3990
3833
  }
3991
3834
  .\[\&\:\:-moz-range-track\]\:rounded-full {
@@ -3993,9 +3836,9 @@
3993
3836
  border-radius: calc(infinity * 1px);
3994
3837
  }
3995
3838
  }
3996
- .\[\&\:\:-webkit-slider-runnable-track\]\:h-2 {
3839
+ .\[\&\:\:-webkit-slider-runnable-track\]\:h-1\.5 {
3997
3840
  &::-webkit-slider-runnable-track {
3998
- height: calc(var(--spacing) * 2);
3841
+ height: calc(var(--spacing) * 1.5);
3999
3842
  }
4000
3843
  }
4001
3844
  .\[\&\:\:-webkit-slider-runnable-track\]\:rounded-full {
@@ -4003,19 +3846,19 @@
4003
3846
  border-radius: calc(infinity * 1px);
4004
3847
  }
4005
3848
  }
4006
- .\[\&\:\:-webkit-slider-thumb\]\:-mt-\[6px\] {
3849
+ .\[\&\:\:-webkit-slider-thumb\]\:-mt-\[5px\] {
4007
3850
  &::-webkit-slider-thumb {
4008
- margin-top: calc(6px * -1);
3851
+ margin-top: calc(5px * -1);
4009
3852
  }
4010
3853
  }
4011
- .\[\&\:\:-webkit-slider-thumb\]\:h-5 {
3854
+ .\[\&\:\:-webkit-slider-thumb\]\:h-4 {
4012
3855
  &::-webkit-slider-thumb {
4013
- height: calc(var(--spacing) * 5);
3856
+ height: calc(var(--spacing) * 4);
4014
3857
  }
4015
3858
  }
4016
- .\[\&\:\:-webkit-slider-thumb\]\:w-5 {
3859
+ .\[\&\:\:-webkit-slider-thumb\]\:w-4 {
4017
3860
  &::-webkit-slider-thumb {
4018
- width: calc(var(--spacing) * 5);
3861
+ width: calc(var(--spacing) * 4);
4019
3862
  }
4020
3863
  }
4021
3864
  .\[\&\:\:-webkit-slider-thumb\]\:appearance-none {
@@ -4034,31 +3877,12 @@
4034
3877
  border-width: 2px;
4035
3878
  }
4036
3879
  }
4037
- .\[\&\:\:-webkit-slider-thumb\]\:shadow-md {
3880
+ .\[\&\:\:-webkit-slider-thumb\]\:shadow-sm {
4038
3881
  &::-webkit-slider-thumb {
4039
- --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
3882
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
4040
3883
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4041
3884
  }
4042
3885
  }
4043
- .\[\&\:\:-webkit-slider-thumb\]\:transition-transform {
4044
- &::-webkit-slider-thumb {
4045
- transition-property: transform, translate, scale, rotate;
4046
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
4047
- transition-duration: var(--tw-duration, var(--default-transition-duration));
4048
- }
4049
- }
4050
- .\[\&\:\:-webkit-slider-thumb\]\:hover\:scale-110 {
4051
- &::-webkit-slider-thumb {
4052
- &:hover {
4053
- @media (hover: hover) {
4054
- --tw-scale-x: 110%;
4055
- --tw-scale-y: 110%;
4056
- --tw-scale-z: 110%;
4057
- scale: var(--tw-scale-x) var(--tw-scale-y);
4058
- }
4059
- }
4060
- }
4061
- }
4062
3886
  .\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0 {
4063
3887
  &:has([role=checkbox]) {
4064
3888
  padding-right: calc(var(--spacing) * 0);