diff --git a/package.json b/package.json
index 481116b6a..6340a4cc2 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"author": "Hiro Systems PBC (formerly Blockstack PBC)",
"dependencies": {
"@chakra-ui/anatomy": "2.3.4",
- "@chakra-ui/react": "3.3.1",
+ "@chakra-ui/react": "3.5.1",
"@chakra-ui/theme-tools": "2.1.2",
"@contentful/rich-text-react-renderer": "15.21.2",
"@contentful/rich-text-types": "16.5.2",
@@ -83,6 +83,7 @@
"monaco-vscode-textmate-theme-converter": "0.1.7",
"monacode": "0.3.1",
"morgan": "1.10.0",
+ "motion": "12.0.6",
"next": "14.2.13",
"next-themes": "0.4.4",
"nookies": "2.5.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4ab193904..b9825612d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -16,8 +16,8 @@ dependencies:
specifier: 2.3.4
version: 2.3.4
'@chakra-ui/react':
- specifier: 3.3.1
- version: 3.3.1(@emotion/react@11.13.3)(react-dom@18.2.0)(react@18.2.0)
+ specifier: 3.5.1
+ version: 3.5.1(@emotion/react@11.13.3)(react-dom@18.2.0)(react@18.2.0)
'@chakra-ui/theme-tools':
specifier: 2.1.2
version: 2.1.2(@chakra-ui/styled-system@2.9.2)
@@ -183,6 +183,9 @@ dependencies:
morgan:
specifier: 1.10.0
version: 1.10.0
+ motion:
+ specifier: 12.0.6
+ version: 12.0.6(react-dom@18.2.0)(react@18.2.0)
next:
specifier: 14.2.13
version: 14.2.13(@babel/core@7.25.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.40.0)(react-dom@18.2.0)(react@18.2.0)
@@ -289,7 +292,7 @@ dependencies:
devDependencies:
'@chakra-ui/cli':
specifier: 3.1.0
- version: 3.1.0(@chakra-ui/react@3.3.1)
+ version: 3.1.0(@chakra-ui/react@3.5.1)
'@chromatic-com/storybook':
specifier: 1.9.0
version: 1.9.0(react@18.2.0)
@@ -471,64 +474,64 @@ packages:
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.20
- /@ark-ui/react@4.8.0(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-42GgXBbeNzxOin1Ac/X1dP45a6SM5np3tEq8qJmDA4h82AVdPXmtZ//3GMDdLl9CXngvSlKYqsrU+/be1xj3pg==}
+ /@ark-ui/react@4.9.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-grnfoSUrGxN0VMgtf4yvpMgin2T4ERINqYm3x/XKny+q2iIO76PD7yjNP7IW+CDmNxy3QPOidcvRiCyy6x0LGA==}
peerDependencies:
react: '>=18.0.0'
react-dom: '>=18.0.0'
dependencies:
- '@internationalized/date': 3.6.0
- '@zag-js/accordion': 0.81.1
- '@zag-js/anatomy': 0.81.1
- '@zag-js/auto-resize': 0.81.1
- '@zag-js/avatar': 0.81.1
- '@zag-js/carousel': 0.81.1
- '@zag-js/checkbox': 0.81.1
- '@zag-js/clipboard': 0.81.1
- '@zag-js/collapsible': 0.81.1
- '@zag-js/collection': 0.81.1
- '@zag-js/color-picker': 0.81.1
- '@zag-js/color-utils': 0.81.1
- '@zag-js/combobox': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/date-picker': 0.81.1(@internationalized/date@3.6.0)
- '@zag-js/date-utils': 0.81.1(@internationalized/date@3.6.0)
- '@zag-js/dialog': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/editable': 0.81.1
- '@zag-js/file-upload': 0.81.1
- '@zag-js/file-utils': 0.81.1
- '@zag-js/focus-trap': 0.81.1
- '@zag-js/highlight-word': 0.81.1
- '@zag-js/hover-card': 0.81.1
- '@zag-js/i18n-utils': 0.81.1
- '@zag-js/menu': 0.81.1
- '@zag-js/number-input': 0.81.1
- '@zag-js/pagination': 0.81.1
- '@zag-js/pin-input': 0.81.1
- '@zag-js/popover': 0.81.1
- '@zag-js/presence': 0.81.1
- '@zag-js/progress': 0.81.1
- '@zag-js/qr-code': 0.81.1
- '@zag-js/radio-group': 0.81.1
- '@zag-js/rating-group': 0.81.1
- '@zag-js/react': 0.81.1(react-dom@18.2.0)(react@18.2.0)
- '@zag-js/select': 0.81.1
- '@zag-js/signature-pad': 0.81.1
- '@zag-js/slider': 0.81.1
- '@zag-js/splitter': 0.81.1
- '@zag-js/steps': 0.81.1
- '@zag-js/switch': 0.81.1
- '@zag-js/tabs': 0.81.1
- '@zag-js/tags-input': 0.81.1
- '@zag-js/time-picker': 0.81.1(@internationalized/date@3.6.0)
- '@zag-js/timer': 0.81.1
- '@zag-js/toast': 0.81.1
- '@zag-js/toggle-group': 0.81.1
- '@zag-js/tooltip': 0.81.1
- '@zag-js/tour': 0.81.1
- '@zag-js/tree-view': 0.81.1
- '@zag-js/types': 0.81.1
+ '@internationalized/date': 3.7.0
+ '@zag-js/accordion': 0.82.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/auto-resize': 0.82.1
+ '@zag-js/avatar': 0.82.1
+ '@zag-js/carousel': 0.82.1
+ '@zag-js/checkbox': 0.82.1
+ '@zag-js/clipboard': 0.82.1
+ '@zag-js/collapsible': 0.82.1
+ '@zag-js/collection': 0.82.1
+ '@zag-js/color-picker': 0.82.1
+ '@zag-js/color-utils': 0.82.1
+ '@zag-js/combobox': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/date-picker': 0.82.1(@internationalized/date@3.7.0)
+ '@zag-js/date-utils': 0.82.1(@internationalized/date@3.7.0)
+ '@zag-js/dialog': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/editable': 0.82.1
+ '@zag-js/file-upload': 0.82.1
+ '@zag-js/file-utils': 0.82.1
+ '@zag-js/focus-trap': 0.82.1
+ '@zag-js/highlight-word': 0.82.1
+ '@zag-js/hover-card': 0.82.1
+ '@zag-js/i18n-utils': 0.82.1
+ '@zag-js/menu': 0.82.1
+ '@zag-js/number-input': 0.82.1
+ '@zag-js/pagination': 0.82.1
+ '@zag-js/pin-input': 0.82.1
+ '@zag-js/popover': 0.82.1
+ '@zag-js/presence': 0.82.1
+ '@zag-js/progress': 0.82.1
+ '@zag-js/qr-code': 0.82.1
+ '@zag-js/radio-group': 0.82.1
+ '@zag-js/rating-group': 0.82.1
+ '@zag-js/react': 0.82.1(react-dom@18.2.0)(react@18.2.0)
+ '@zag-js/select': 0.82.1
+ '@zag-js/signature-pad': 0.82.1
+ '@zag-js/slider': 0.82.1
+ '@zag-js/splitter': 0.82.1
+ '@zag-js/steps': 0.82.1
+ '@zag-js/switch': 0.82.1
+ '@zag-js/tabs': 0.82.1
+ '@zag-js/tags-input': 0.82.1
+ '@zag-js/time-picker': 0.82.1(@internationalized/date@3.7.0)
+ '@zag-js/timer': 0.82.1
+ '@zag-js/toast': 0.82.1
+ '@zag-js/toggle-group': 0.82.1
+ '@zag-js/tooltip': 0.82.1
+ '@zag-js/tour': 0.82.1
+ '@zag-js/tree-view': 0.82.1
+ '@zag-js/types': 0.82.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@@ -2332,13 +2335,13 @@ packages:
resolution: {integrity: sha512-fFIYN7L276gw0Q7/ikMMlZxP7mvnjRaWJ7f3Jsf9VtDOi6eAYIBRrhQe6+SZ0PGmoOkRaBc7gSE5oeIbgFFyrw==}
dev: false
- /@chakra-ui/cli@3.1.0(@chakra-ui/react@3.3.1):
+ /@chakra-ui/cli@3.1.0(@chakra-ui/react@3.5.1):
resolution: {integrity: sha512-tbRV9yYCxDg7/8dFDPnv7W+zBdJW2mOxtJfebyCrFd8SRR4BKu72V7Qh1zXeDCVeVicMvsrqkWKemx9i76uY5Q==}
hasBin: true
peerDependencies:
'@chakra-ui/react': '>=3.0.0-next.0'
dependencies:
- '@chakra-ui/react': 3.3.1(@emotion/react@11.13.3)(react-dom@18.2.0)(react@18.2.0)
+ '@chakra-ui/react': 3.5.1(@emotion/react@11.13.3)(react-dom@18.2.0)(react@18.2.0)
'@clack/prompts': 0.7.0
'@pandacss/is-valid-prop': 0.41.0
'@types/cli-table': 0.3.4
@@ -2361,14 +2364,14 @@ packages:
- supports-color
dev: true
- /@chakra-ui/react@3.3.1(@emotion/react@11.13.3)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-npO3gwzU8Zf6EcfUSApeSGLgts12DVScyE316uXe17i0vO9xz5QladLKN+qdzA0YnSKsefZVErLAeM9FsKk/+A==}
+ /@chakra-ui/react@3.5.1(@emotion/react@11.13.3)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-RwhFNwhmlAgDOUBLqwKGvhra57Ts65hO/frcCpiLmROc4xDNGiybN7Cq90bft2PztlWBZk7ixpLkiMQsrGXlmQ==}
peerDependencies:
'@emotion/react': '>=11'
react: '>=18'
react-dom: '>=18'
dependencies:
- '@ark-ui/react': 4.8.0(react-dom@18.2.0)(react@18.2.0)
+ '@ark-ui/react': 4.9.1(react-dom@18.2.0)(react@18.2.0)
'@emotion/is-prop-valid': 1.3.1
'@emotion/react': 11.13.3(@types/react@18.2.0)(react@18.2.0)
'@emotion/serialize': 1.3.3
@@ -3556,8 +3559,8 @@ packages:
'@swc/helpers': 0.5.5
dev: false
- /@internationalized/date@3.6.0:
- resolution: {integrity: sha512-+z6ti+CcJnRlLHok/emGEsWQhe7kfSmEW+/6qCzvKY67YPh7YOBfvc7+/+NXq+zJlbArg30tYpqLjNgcAYv2YQ==}
+ /@internationalized/date@3.7.0:
+ resolution: {integrity: sha512-VJ5WS3fcVx0bejE/YHfbDKR/yawZgKqn/if+oEeLqNwBtPzVB06olkfcnojTmEMX+gTpH+FlQ69SHNitJ8/erQ==}
dependencies:
'@swc/helpers': 0.5.5
@@ -8120,550 +8123,535 @@ packages:
/@xtuc/long@4.2.2:
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
- /@zag-js/accordion@0.81.1:
- resolution: {integrity: sha512-NMSx9DNz+FigY9E+FtT/3GCjpP4H0VTbBTmqUDxw3FYKgP3txPoIQGrV4Dig4hCtCiPdmlwSZatA29HrTi8+zw==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/anatomy@0.81.1:
- resolution: {integrity: sha512-x63RqFLdqz2a7KCxvpWXMAwr9A5lWtag4dslku6IBu5IT0oMYuQJ0d+3NeY74xKwdctTmnLs/xRsyUfey5DarQ==}
-
- /@zag-js/aria-hidden@0.81.1:
- resolution: {integrity: sha512-Jsd4rmdZ73+S/PVnoCxI4BjN52okPECztPIxGvNiEOJfL+/YJWmHweprJgmHZJPt9rufZ05SvfeiKr2VXso0vg==}
+ /@zag-js/accordion@0.82.1:
+ resolution: {integrity: sha512-DWaElpm6RhntW8zVPMfd+s461FuXi6rv4pDPpXb4xCAJ0KTkBzS6PFxoBLL+11Mjv9XioaBoJatIGOCF8GAtTA==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/anatomy@0.82.1:
+ resolution: {integrity: sha512-wpgU7LyU9St3o/ft8Nkundi7MkW37vN1hYc2E7VA/R6mun0qiANsEf83ymIlAYnovLC6WUlBso9xwqejr6wRCg==}
+
+ /@zag-js/aria-hidden@0.82.1:
+ resolution: {integrity: sha512-KSz9oMY9rn1N3k3tFTKHlU66eQf8XZ/gy/ex27J0ykZoaYJplWQerSZvVakbILeh+rtpvdiTNaSgrCAwYwvAPA==}
- /@zag-js/auto-resize@0.81.1:
- resolution: {integrity: sha512-InlncZmgT+ofhrUEeQN8BOa8hUCpPNl6dwL83AxXk5J8k+SmfVr0hH6CNSeAEG9XUmepUGPzXQwYbA5t0KRtNA==}
+ /@zag-js/auto-resize@0.82.1:
+ resolution: {integrity: sha512-adOB7Y4p4i6b8GJv4V6qhlK1YRj4Ejs5I+eWFd8Rx535uQIcxEEVtpEAD5SRYg5PNk1ikaT+GCoHnTadGj6PuA==}
dependencies:
- '@zag-js/dom-query': 0.81.1
+ '@zag-js/dom-query': 0.82.1
- /@zag-js/avatar@0.81.1:
- resolution: {integrity: sha512-ooMCxBamNWYYi7ZHY+FFpGJouuHWaaO9DTYRwWXsr9pW+FYGcJcPXKKsaFGPeAldBs8dqlBmFdMOWylLySau4Q==}
+ /@zag-js/avatar@0.82.1:
+ resolution: {integrity: sha512-XjRvDRmBxwy5OtIzlQOpf7zNk4g0b/uA7qZve5Hz0R7yWOu+NFlbFv0GsvRfgyYMCT5J0xBu271EG9FJq3QKyw==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/carousel@0.81.1:
- resolution: {integrity: sha512-iQRnR5yYChFOsdAGAoH8bZei9tlSCngJJ1Bka8j+XvLHLyjOe+fqhaqwlkAFunMH1kEo1lHVbFDQ5FPGZq9PgA==}
+ /@zag-js/carousel@0.82.1:
+ resolution: {integrity: sha512-MO9+9oedxdKynxgvLLzXs+VQSOhu+GvsCLV4fBt7nMBMGIRHtRSzXHRNRkO0aqbsO/nKQ8TFH7GYzI1NqT/y4A==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/scroll-snap': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/scroll-snap': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/checkbox@0.81.1:
- resolution: {integrity: sha512-HmoRt7luHZXvNlsqQW5rrQlcFEVKthFkZPgAwUKM5xD7MaifDQUfaWMcOkYUBpJtziDufV2CcdIu9d1z4/hSMA==}
+ /@zag-js/checkbox@0.82.1:
+ resolution: {integrity: sha512-yD/h8ao/JTljEo+zthpKzTy/f9fqOlJ7Nd6psPoSKZy2MRGD0TDUbOjravb3icVgjTLCiaPVWMWdonny08Me6A==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/focus-visible': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/focus-visible': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/clipboard@0.81.1:
- resolution: {integrity: sha512-ccDxY+8CsM6XvOnfSQmQqsa99XXjjByVYD4ovylk6+jXwVhToyjOxGiQq/n8zALXHLj2hM/1WIvDwZGTPr1GfQ==}
+ /@zag-js/clipboard@0.82.1:
+ resolution: {integrity: sha512-r1r3vwozs+lyNgccR3OfmYAydP0cJbIHGsgDKGuempinqv6xIoptHOkFgWNd6Kxz/3MnxP+BMEy6fZzECXkhdQ==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/collapsible@0.81.1:
- resolution: {integrity: sha512-oPnmsVtS3/1olPY4E0IwoixK95MDjIGmfHPVmNX3lioN9hbszxBoUQtsZ0ryXNH9HXvDbnJ/KWtpMELjj2TjPA==}
+ /@zag-js/collapsible@0.82.1:
+ resolution: {integrity: sha512-TuggUoXRVBOwACksi63TsN2rOukzUpe6oVMUvp9MaQaDbg9gpw0JzLTrdAaHfE+bhgXAb3EjN6wcZjq8zBctZQ==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/collection@0.81.1:
- resolution: {integrity: sha512-cGvBWL0Z31Vt/RTyuwarkokfer2zlw92+mlX9Hed8198aWyI6bklmaZs77xO89fy8Osjjik/STB6TyItgn1jPA==}
+ /@zag-js/collection@0.82.1:
+ resolution: {integrity: sha512-uteM+xWZlWhRQe5biA5QWyva9PdzXONs+bpycUtZt8MakQgPmhW2whY9r1aW5NFVb/ScTwGAIGB3Eyc6Npz7Wg==}
dependencies:
- '@zag-js/utils': 0.81.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/color-picker@0.81.1:
- resolution: {integrity: sha512-O7AI1BK/GWlyF3pf9O/9iVk2hcBaaJdBAoNyzqrI6+dPgrjs9eXA4VYyavcHZBm3ABCzqZ7ePO9mnBi//wag8Q==}
+ /@zag-js/color-picker@0.82.1:
+ resolution: {integrity: sha512-/MShDVBFNnXResLzeyWyKApeHuB9rmUeJo3WD/Bl6rTwjmvVCKRYguIe1SQviOokMLjuAyh0YWXdKMQw0HvMqQ==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/color-utils': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/color-utils': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/color-utils@0.81.1:
- resolution: {integrity: sha512-Fq4vktoW3UmrhFMb731ldODDSQrLsSO+81eADBzbz3CgGOCOy6rYv73aIgvAgngTOp9Q98NQnTxyt1S8eEGOaw==}
+ /@zag-js/color-utils@0.82.1:
+ resolution: {integrity: sha512-BMSYcBeypGX0wCLszU2jxWBRUmd5/wPDJ59Y3Zwl9yNld0gtMnuBLSUeokMcG0UVQ/BxkyrWu3VDkKTUYKprqQ==}
dependencies:
- '@zag-js/utils': 0.81.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/combobox@0.81.1:
- resolution: {integrity: sha512-FHJPDZ/A54+ksDJ5dl/Aj49BHso7T8k7s7uSADLvEVJ3kR9qJ+zTdAXR01IQPn+rZWxNUShD76YRK2VKzVt+JQ==}
+ /@zag-js/combobox@0.82.1:
+ resolution: {integrity: sha512-Me3a0Sw4dTtmBRmbLGO/C1LJ4btZwbd5RLYnf8RPhEnqGJ5Z05i+ffWEe+SNBvpQO14njqBcF6P8VypVD/Ro1A==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/aria-hidden': 0.81.1
- '@zag-js/collection': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/core@0.81.1:
- resolution: {integrity: sha512-LJwPH5RgY0EUDDSCfpXFoXQ9+CwakiZOjo9SZdq7lk+wYmP8hCv+r2FCAPclSHljyrGqpIlHU/brkcFslkcN4Q==}
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/aria-hidden': 0.82.1
+ '@zag-js/collection': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/core@0.82.1:
+ resolution: {integrity: sha512-Ux0fkt1PumcqLwExcEozCMEfKBxtd2JlnitXo4hR3lJW5q9G52FkgWDyPSrhblyTkX+7RgxViZTMnHxaXs99jg==}
dependencies:
- '@zag-js/store': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/date-picker@0.81.1(@internationalized/date@3.6.0):
- resolution: {integrity: sha512-Mrhi+wFJ8I59wmRIMU/0tuL1D9/ycosmtifD7U63leZJZM32lk+Do7YUhP0FyZ/qBVcjCykU3rJZkHL9EBOuFw==}
+ '@zag-js/store': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/date-picker@0.82.1(@internationalized/date@3.7.0):
+ resolution: {integrity: sha512-f+4CV29+hcQ3Yw9hh0yyVRANONIUEWIrPS1fpnrrUNtIC0Y7f1Ajx+x089X9VxgQhwreK1sEwpnrL2vIqy+9+A==}
peerDependencies:
'@internationalized/date': '>=3.0.0'
dependencies:
- '@internationalized/date': 3.6.0
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/date-utils': 0.81.1(@internationalized/date@3.6.0)
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/live-region': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/date-utils@0.81.1(@internationalized/date@3.6.0):
- resolution: {integrity: sha512-NWen8ebvNkPbENaVS3qcpRjeEhcjF0uiDzBlg1cBdqu2A2EUfO1/lrjYTKpboTC2fQeVoIPdrvCkMXvywHFr8Q==}
+ '@internationalized/date': 3.7.0
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/date-utils': 0.82.1(@internationalized/date@3.7.0)
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/live-region': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/date-utils@0.82.1(@internationalized/date@3.7.0):
+ resolution: {integrity: sha512-z9sHtgV4fvtXsqLaTD4/o+D+H5wumLYhIw/Bj3yC41gR5oa4Wo9QifRT9DBfvuokmXsrnRZ8k32hUtWoYb6M/A==}
peerDependencies:
'@internationalized/date': '>=3.0.0'
dependencies:
- '@internationalized/date': 3.6.0
+ '@internationalized/date': 3.7.0
- /@zag-js/dialog@0.81.1:
- resolution: {integrity: sha512-Jt6ReyeMAveLKgerhhnpiM0ZKrHCyGmRgRtFbW7o4WSQ63UUyTPgUYIvyRJeVJjAGF6IcfvVVVVY3YthRyzf8A==}
+ /@zag-js/dialog@0.82.1:
+ resolution: {integrity: sha512-oqi+6Y/rx6ZKxg3s9r6bIuo33x+5+UDhvrlk31kE3LWgU1KJjVV0VEkFMK9B1SJTY7IizhlWMyDx+JXJ+jOy5Q==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/aria-hidden': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/focus-trap': 0.81.1
- '@zag-js/remove-scroll': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/aria-hidden': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/focus-trap': 0.82.1
+ '@zag-js/remove-scroll': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/dismissable@0.81.1:
- resolution: {integrity: sha512-PT19n3CK5XW7S3dQhFLxALsJ0JFsOdukxVNE5iLHPAKEuJeM6dnzG1pn6x3U1wrGybHZgaZkyiF4PWsvXsdaiQ==}
+ /@zag-js/dismissable@0.82.1:
+ resolution: {integrity: sha512-vs+zkORzaeNzX4Wsy4OkW1AVce7l4Tc6DHZq8gqNB5SvhK+5wEPl6EmacQRvZyoCxi2m6xpaI98UkLCmVJKU+Q==}
dependencies:
- '@zag-js/dom-query': 0.81.1
- '@zag-js/interact-outside': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/interact-outside': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/dom-query@0.81.1:
- resolution: {integrity: sha512-5CsCVT6xUIwj5hTmsSplqdZXC5HFXj/wU3p+Mp0XjM63fgJODXZh79DPjx/Vqo/YrqSQPoK5dHRhUY8fiDyoSQ==}
+ /@zag-js/dom-query@0.82.1:
+ resolution: {integrity: sha512-KFtbqDUykQur587hyrGi8LL8GfTS2mqBpIT0kL3E+S63Mq7U84i+hGf3VyNuInMB5ONpkNEk5JN4G9/HWQ6pAQ==}
dependencies:
- '@zag-js/types': 0.81.1
+ '@zag-js/types': 0.82.1
- /@zag-js/editable@0.81.1:
- resolution: {integrity: sha512-phH7pdgwn/KTnYxe7W83j764Z28fqk0rTxzAYj2Rb5ctQA8ls/UdsbBpdALEx08+rxw3pELT7wxk2Rm+n6Ljqw==}
+ /@zag-js/editable@0.82.1:
+ resolution: {integrity: sha512-V5i3kYSHFJYj8914nBf4VKKtm6m59gG482vm20As4EnLcwGFrOBbm4HXUgsKq0wYSLy/lTtvMrUT8Iqudye2gw==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/interact-outside': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/interact-outside': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/element-rect@0.81.1:
- resolution: {integrity: sha512-f11a8MqEEi8yZ4+WmoWpjDBpcWh6kZwkNYyNaVBqseWT9xGTjW3hXxz4L8G0kZaxcsMI2EEv9FNX7tB8FqJD/A==}
+ /@zag-js/element-rect@0.82.1:
+ resolution: {integrity: sha512-xXUjmeIUdxkxic5bepp6fVqN9Qs+54PXCAUl6g/DtJecQVmVooIfa3SLSULhany4aR4mlGojp5TJxvSpUBA58Q==}
- /@zag-js/element-size@0.81.1:
- resolution: {integrity: sha512-taasImQwXYDvlhQ9L0tPHjbG2Yxqk1FU7sIu5qf9ml1btUEAVah3+DTiCMKBsm+NzgyPY2bsRMqMW3I+4kvkaA==}
+ /@zag-js/element-size@0.82.1:
+ resolution: {integrity: sha512-k1rOE6NhoULI9d5pt2qVUxWCQVEf3OTPH8UDnbsdf11xn+hMCzRYd9lekUdVGrcHHGvEK+W6iAfWZnlwsJsmow==}
- /@zag-js/file-upload@0.81.1:
- resolution: {integrity: sha512-a19kPUQ+5lyZRI9qK5ANBNTPY5syKJyva4ahmUm1EtV1Wt89x8xVRc5YG8XXaKlKrZlJdDvNPh2rMhV9QviBJw==}
+ /@zag-js/file-upload@0.82.1:
+ resolution: {integrity: sha512-6cgJsy9bf2DB0v+CVq1L4g4aCePTpfWsV4C0HC+82K+OSPomiIPsQS87wo4+eAcy3z+80Qh+uglZCFAwkW8W+g==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/file-utils': 0.81.1
- '@zag-js/i18n-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/file-utils': 0.82.1
+ '@zag-js/i18n-utils': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/file-utils@0.81.1:
- resolution: {integrity: sha512-oO+7U8TjUSKxnCG9PtG+6SAgzNkf2cq+lTBjOruaRz3sbrxfNMiz2xf/fIbuhEvHryPKWo86Kd/u/kvU5/gY1A==}
+ /@zag-js/file-utils@0.82.1:
+ resolution: {integrity: sha512-/u86hMd+E5UCrrY9akDAExkO7sgPA1lXzWC9gSX4LSxHATk7Vo4o5+4LiE1MX4WZRytOhtxAycJzNDVpqzmppQ==}
dependencies:
- '@zag-js/i18n-utils': 0.81.1
+ '@zag-js/i18n-utils': 0.82.1
- /@zag-js/focus-trap@0.81.1:
- resolution: {integrity: sha512-hhW+XkuaaPyTdEBIIEjex+Sflr8sd5pCU/ISyGs4x5wHaPSfYjTUlpasC6ISZ9ADs4kKVidfDnY7u60a2WOAeA==}
+ /@zag-js/focus-trap@0.82.1:
+ resolution: {integrity: sha512-z5OzmR8O3n2043Lwhp1qcizNHXvzc/Xteb3hWmxbX9hR3k0wHJeMXMj3GTDO0FBixRt+d8iHEmt3/8CkI72mqw==}
dependencies:
- '@zag-js/dom-query': 0.81.1
+ '@zag-js/dom-query': 0.82.1
- /@zag-js/focus-visible@0.81.1:
- resolution: {integrity: sha512-sQopikZzXGNBcxfPzhsJn2/txD5KDoFIuZpN1TwZHCx6JTBtzWHCl/t9VpULeTSbERdCI9iTx5Zt4QxceuwEBA==}
+ /@zag-js/focus-visible@0.82.1:
+ resolution: {integrity: sha512-b87FqZO6e9RmTY4msEzwZ3hZ8pRuPd2vbR2b6SlXr6ohtmGKlGgBGO4kmarZN/ClE+7VOnOEqIicatRBEgX9bw==}
dependencies:
- '@zag-js/dom-query': 0.81.1
-
- /@zag-js/form-utils@0.81.1:
- resolution: {integrity: sha512-Zb7PvXZWIsudQsT+MZtG+HTsP/s1izifzj3ce4jEh4bgo3heLlwPTGkm+4mGqVAivcaPW4HmvwmLOgWoiXA/3A==}
+ '@zag-js/dom-query': 0.82.1
- /@zag-js/highlight-word@0.81.1:
- resolution: {integrity: sha512-PU4zcfVSj446CtSw+viYkFMGkCjZvrZvQxPnGENFNNUHpsnwudz1a/NJiOPxSJTLY+C0FP0vanOl9YbgEL5xGQ==}
+ /@zag-js/highlight-word@0.82.1:
+ resolution: {integrity: sha512-lS5r3V0l7Z53QyNwkxulYp5QYA9mFkU+3XsZqfM6cBjh+wmGE1xeIwknAmFtYvuYNK37AwT7pp5z0Rm1Ep6WVQ==}
- /@zag-js/hover-card@0.81.1:
- resolution: {integrity: sha512-xoAVYUf4sk70f8z1wbeITU+QiGy7jqdPgNkbT6jbklKVS/N8Y7WdWPU67ebCJWDLrUFQ2szG3nJVY/ZiACu1RA==}
+ /@zag-js/hover-card@0.82.1:
+ resolution: {integrity: sha512-fp9t/PNXODwxXR1X+VzgYeSpgoJ+M3W/qvuA2stgPI4kEinwKEssSlP2sH6gTmQVZKL8SV1jiNQinVh00NE85g==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/i18n-utils@0.81.1:
- resolution: {integrity: sha512-/7sQuPOewdf/KpQQkizQplWIS/3PH+iqexef/IV/1sS+KgmTrTz8UsVKm4Vw7FcMmFaWlAOdHqS3UgWiJ2j24w==}
+ /@zag-js/i18n-utils@0.82.1:
+ resolution: {integrity: sha512-YcTIqka6+/YoH2VRBMnv3CvTjHdUo/NG2nMenAB9Wq0MLTn+TAtcsujenz7ckJcgayVhFAchWNhwK9+/cs1dAw==}
dependencies:
- '@zag-js/dom-query': 0.81.1
+ '@zag-js/dom-query': 0.82.1
- /@zag-js/interact-outside@0.81.1:
- resolution: {integrity: sha512-jfeDlxNCYbRgKwcIdSjr0C6KChbbJSQyeYi+TDmqAQEVTiVYQo3j3NMdoV0V+IVoK+xnj4wC5DhRdEIHLzRiCA==}
+ /@zag-js/interact-outside@0.82.1:
+ resolution: {integrity: sha512-WcWJB5kM41fDM6YMGC3ZEPVn1q3Nrm+cAFkllRJrRY4+bUKXmtN8bqDaRKghP+dG5CXz66SiM6xBvDE4nqtK5Q==}
dependencies:
- '@zag-js/dom-query': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/live-region@0.81.1:
- resolution: {integrity: sha512-zyR3xbKOBQ5qftXy8TCUkj8ZAn5p2UKMgsNLYaxW2UVKMy3syMfJ57BFqg8Hvw1vZ9X9orwQG8vSb85ZBIWP9g==}
+ /@zag-js/live-region@0.82.1:
+ resolution: {integrity: sha512-BmSXc41y1uOra/UV1lt8BurWkuwne/+c371IJCK6l+MWsO0ufq1lrjfx4cyFf5yhVcPRkhv/b/0i+7RxfDSK1A==}
- /@zag-js/menu@0.81.1:
- resolution: {integrity: sha512-CUDkAvEu/Z2xpY9KJC0Y5//nJ3FWSoOB1bml5fJVfmHSzcwU5JJ2deop1JgFGrOyIK2NYWKsiLRgONpLnkuEAA==}
+ /@zag-js/menu@0.82.1:
+ resolution: {integrity: sha512-faAlQZYeWHcGH8nIxBYh7HHfVjSKsHV8yUsbhMD0XkePWM6eB+dPRd/Fc3DeT8ieM8+sUODnTHEuxar0i48v4w==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/rect-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/rect-utils': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/number-input@0.81.1:
- resolution: {integrity: sha512-NBtSgYcA8lbHC1Wn+XKXcy22qA6JBKOXxVUPuMl8RIDNPbIG5MmU1wa4XwvvvpPKdoaXvAROUiP9MgPAJgACoQ==}
+ /@zag-js/number-input@0.82.1:
+ resolution: {integrity: sha512-QIQlxlxM78+TkEhPEGlTbkBR3G2ngm5vhc3BFw4sG6ABMyre8TiIH37EqQB7EGKyAcuz6QwPk3AervHMFKe4YQ==}
dependencies:
'@internationalized/number': 3.6.0
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/pagination@0.81.1:
- resolution: {integrity: sha512-ynHXkAA/LLjRvlShr+e288sB0b1mP9s6rZItPnrbs7iSopGH5C+T6yqTuBPhSKTQRL36ixw6rjbI0TusnXhlvw==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/pin-input@0.81.1:
- resolution: {integrity: sha512-+oUdY+LISM1NLHrMax/wiuEhYjRAAGKZT8xY/6g4C464Xqahjc2GNQjpoJ2V2S7N7vn7Prw4m+6rbe4TWAr1Pw==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/popover@0.81.1:
- resolution: {integrity: sha512-rL+6buqokxxAwCzPFmKt6p7G07zdH34ix1n1MhUVStllU7e/1Kho/bL7qeELFTIJDcgmmKBRj7sa8VJOTj0uJQ==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/aria-hidden': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/focus-trap': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/remove-scroll': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/popper@0.81.1:
- resolution: {integrity: sha512-zTGVu8bVtuGatwrtPdL8jahvWg+wx6N4sWuuCbh7FJbfVfQ849NRgP7im0ar4MLoMFcELkJGmxYQoJ1kbtPVIg==}
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/pagination@0.82.1:
+ resolution: {integrity: sha512-1Rsd3cSnlewefNB1RBI0ymK5wlgiBcK42H1IrJIhly6+SXDAhp0Oc45ofsCzpfhkQ4be+A9Cb30ayc6J4ZU2kA==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/pin-input@0.82.1:
+ resolution: {integrity: sha512-P7UN7rIt03YHt05SuK+kZ9mhl4AfvCvaSGB/9KzEq5r6p1D3lc4+0LVkkOvL2EEB8vbGY/y5BNcvaF2jPQPH5Q==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/popover@0.82.1:
+ resolution: {integrity: sha512-zZ8H/jcjaXcLRX4dBcmandexeKV/5cBOt4AUVEnd3/X5NFFkA2Njz8rpQFcNRZl814NxG4RCchIu8kmonmUKCA==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/aria-hidden': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/focus-trap': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/remove-scroll': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/popper@0.82.1:
+ resolution: {integrity: sha512-vQTmVUs6aLGqKmWb+FnLDntsulvd/sCvgndeTmwOHRW8PBwPb86aDnvNrNosBSS+Kk9p6CMJwWZ6CuPWR5Kf7Q==}
dependencies:
'@floating-ui/dom': 1.6.12
- '@zag-js/dom-query': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/presence@0.81.1:
- resolution: {integrity: sha512-9cWVU8ciU0oG3wJbo6AftDCdpBIGNIk3UqXxAQf4LI//FgnOiYtOmpvl9LXrS1MqEOAwnR6rkCeiNjTmW8O4Mw==}
+ /@zag-js/presence@0.82.1:
+ resolution: {integrity: sha512-eZeAkq2s7NYCiNVMvkWL2Or458hZj71u7ygCt6skA18sO1ZksY+qIFqj99leCov+fesz06Hf8bxZz5029t/Wjg==}
dependencies:
- '@zag-js/core': 0.81.1
- '@zag-js/types': 0.81.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/types': 0.82.1
- /@zag-js/progress@0.81.1:
- resolution: {integrity: sha512-mgUt8sub5DOCv2ic5UJqqWsR5tM/HWqMY2ug5LVN3WD9d0ChBzi2TB5nUprunDa1xbGQfk3AyPNYNYnkqHaVLQ==}
+ /@zag-js/progress@0.82.1:
+ resolution: {integrity: sha512-Fy1EjUda7o7e/yTKbZgKKayGOsHxkjLG+x0AakHmbR/k2VKbM4QuFHB9RJLlqNd9a+m/BzS1kEKWzCJ7/mXL9Q==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/qr-code@0.81.1:
- resolution: {integrity: sha512-aM2e8LwMffUq5PHaBTFseTb5PUmTgD9+avc4R/IqD6bXod/RRc0C5n2BhAsOMJnXFFucq2Wuwofk2dS4FlQ4vQ==}
+ /@zag-js/qr-code@0.82.1:
+ resolution: {integrity: sha512-E1N1o1dPVuhWkcrg6urut2aaCqrc16OeE9VJh1mAGIUknF3p0QScH+ql7J/n9r8WOa21xyF6HLKhnWVPRQmHGg==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
proxy-memoize: 3.0.1
uqr: 0.1.2
- /@zag-js/radio-group@0.81.1:
- resolution: {integrity: sha512-EOE9Usqf2ih6j7VqwtRak1Gq2WkMOaTh3xAgFSIpId5gI5lmbx5IPjyyufp9XZJzn6LOkHRViMHllGA9d1A2Ig==}
+ /@zag-js/radio-group@0.82.1:
+ resolution: {integrity: sha512-YTqP4Ok2YEmEXCEiNW2tufZ6svt4sh7KHqrHZq81vPAJMKKhVosP6LnZvmt4dVn6tKJ0OU8idwFVtPM5jSAWoA==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/element-rect': 0.81.1
- '@zag-js/focus-visible': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/element-rect': 0.82.1
+ '@zag-js/focus-visible': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/rating-group@0.81.1:
- resolution: {integrity: sha512-9MbeNVQeLDw/PppnCrJo7I9UOGzMCstzfPyyM3Yrpt8KN+hP8h2nHW1JHUvXQ9OslJWjKLnCLxJReEJxGxNdJQ==}
+ /@zag-js/rating-group@0.82.1:
+ resolution: {integrity: sha512-ULl0OA207b6Ilsr2QWt4dbx58hA/NnyCmHpvv1pAYSlH3K0Es5b25B80Cc5jM/3NK3yqoY81OkS9U8lxmpWo+A==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/react@0.81.1(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-fEBk2ejKCYDiHLEbNB6B+WgtzfigvKLP8Q3RSVc/IP9y6DkdztdWGZ80GBB/7cRdcbBOBZGK0ZEEi76iSC5YVg==}
+ /@zag-js/react@0.82.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-CZivUTFQ4TdRKTN+9wpWAo0lEZlMnbjJPVn2VJVpcz+eRNUeoVzevkNY/OzAqdV3mp+VtdNabQn1fAz8ngViPQ==}
peerDependencies:
react: '>=18.0.0'
react-dom: '>=18.0.0'
dependencies:
- '@zag-js/core': 0.81.1
- '@zag-js/store': 0.81.1
- '@zag-js/types': 0.81.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/store': 0.82.1
+ '@zag-js/types': 0.82.1
proxy-compare: 3.0.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- /@zag-js/rect-utils@0.81.1:
- resolution: {integrity: sha512-3BkNYhEYZYBk770EUiM/aZ9k1HJg9FaWKOHXGpfZpndlqjUtLLMehej7752KFcpZaDRtUZ3Po1WXq0sIgwEtxw==}
+ /@zag-js/rect-utils@0.82.1:
+ resolution: {integrity: sha512-gXmvj1wK9FeToOCzvoZ5gycqUNRzfeqd84uwJeG9zA8SVdoyEnoAji8IAynneq8t3LbiNUcu37wjTw0dcWM6ig==}
- /@zag-js/remove-scroll@0.81.1:
- resolution: {integrity: sha512-ONcWwEAAa3W9kYTHKoILGlFPJQ8XHvXkaVeYA+t8IlCA5pK2cS7yGA8ItyQUFFbJu1k1es53DQESXqZHtOoWTQ==}
+ /@zag-js/remove-scroll@0.82.1:
+ resolution: {integrity: sha512-68cvXvqgNOlucbnGKRyephk8Qg8wb4xpjgUdmF9xQwICdY/uhW2p4ZGJ4471TDCDIlpoBrJPYsWqV2oWH3QNfA==}
dependencies:
- '@zag-js/dom-query': 0.81.1
+ '@zag-js/dom-query': 0.82.1
- /@zag-js/scroll-snap@0.81.1:
- resolution: {integrity: sha512-eRbyvLxPI+rRkgd2GYCz9xeesucFgpqa9NPI3ERTibSsMSTOgZsYogi8vn6rXfW/YGS4xgiXZbVSMRgEeLPijQ==}
+ /@zag-js/scroll-snap@0.82.1:
+ resolution: {integrity: sha512-HL3MkBpWx4Cw0+h1UP/PnvLP3Z1T+F5mkeS8HWmiP+KPzhtFiEBRrve+xk7h7BMXifteg2UZy53ZiZfJeGsd3w==}
dependencies:
- '@zag-js/dom-query': 0.81.1
+ '@zag-js/dom-query': 0.82.1
- /@zag-js/select@0.81.1:
- resolution: {integrity: sha512-eYCJoxUfwXBMSI/+GLZCzmT3P2UMInKztRt064bW+pLMIHhsHCoUKoNNzDFFx9q27HKgXk6pZIp4/5ZnxPF4WQ==}
+ /@zag-js/select@0.82.1:
+ resolution: {integrity: sha512-cc6D8Iz+Ewnx9L0J63QGqC2bbiwzCEcJVE/j4OZDcy4Qk3lqr3qA09uuJbQxAi7yvIeB44DIEt9ryTZPkZbgiw==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/collection': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/collection': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/signature-pad@0.81.1:
- resolution: {integrity: sha512-wHFeZuwoJWG5/Tk5u8T7M+ENg9nkBf8md14huW8MKVcfkLNi+a/z2B1KzodWnn4mekxUMEKAXhOdmELqqAHSOg==}
+ /@zag-js/signature-pad@0.82.1:
+ resolution: {integrity: sha512-s8ae88OpAafkpuqimO9beUiVTn3FG+bnWeWnYQOLtNYMCNHzQbVZp9QBNbOoUpNcDT14mx9rfZe98BqfiMohFw==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
perfect-freehand: 1.2.2
- /@zag-js/slider@0.81.1:
- resolution: {integrity: sha512-1yPml/nIWpiijEmUxYzlPOIi6v2r+URhBM9giEG9mwaUU9uWtYrEQKSQVQChkPlW8xoNxtqtG6wNjEjekWDqfw==}
+ /@zag-js/slider@0.82.1:
+ resolution: {integrity: sha512-qXVvXbDRq6Cla036M9OH6plO7ubefM7k65NJQKjtITDua+VliKQLXj9BrdPLT9K96wWntW+D/TiZXE+JNbR4ow==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/element-size': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/element-size': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/splitter@0.81.1:
- resolution: {integrity: sha512-KlSIsCZWL1zLfqE05xyGYVKxu8OiQ91yVBqsJhuHUPTH0Ww/UQI4sU70yWqePrGi+L+VieMZUia4OFKcmhvljA==}
+ /@zag-js/splitter@0.82.1:
+ resolution: {integrity: sha512-eMNncj+pcepYTf+51s4ysDS/tjtKXswpwsSQR0AeNqCE3SW3TGzHOM0+uheyjgv9EmDGDrr3Imdo0PCkq3bqug==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/steps@0.81.1:
- resolution: {integrity: sha512-RA/TFqsc0QBgL61R8rWUhawANvZIaXN3nNP6RQ/qcYQpVjCLIC97oDrWvZd//THrMay65wPT4iuOGkBoXLqr5g==}
+ /@zag-js/steps@0.82.1:
+ resolution: {integrity: sha512-N/LVOPbpQGtqpnNsdgZsQytpvXVoJ9Uldo8G38Q7892wwhVx63L0qLaiOK+SkU7kUTueOh109HezZ67nq3sadw==}
dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
- /@zag-js/store@0.81.1:
- resolution: {integrity: sha512-IsRnK6G/I5Sx8kxLC/PNUmxduOeLsrtgWuw1FGu1x88BgE+/akmL9fZoGdQds+TFNPESTtqWQxiTFm1w3nn/aQ==}
+ /@zag-js/store@0.82.1:
+ resolution: {integrity: sha512-uWlVivLZBCuAEXrXOITM1srwfBtAnT8kBYVPElrT5aSO9gkV1YC/g+YdFRol7KKOg12qO561CPKReVfilmtAKg==}
dependencies:
proxy-compare: 3.0.1
- /@zag-js/switch@0.81.1:
- resolution: {integrity: sha512-2lEOGzVW2bqA2GY7HVg2aKXsQoD0v65K9qVuJiP/9Lpst6JPOw5E6nEZj1xOheluHJVI29R/HBUIw9GU27MroA==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/focus-visible': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/tabs@0.81.1:
- resolution: {integrity: sha512-B24xFIfVJRL0nbzp97mqKN1zJKVrL8eXR2TOq+1ZxqrnnUZ5RQNzqo46wFIItRQsHjvbxyuI54KgvL1bp29wiw==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/element-rect': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/tags-input@0.81.1:
- resolution: {integrity: sha512-nR5aE0NIaLrz2GQEGN1EkJFJrs53wdrx8cBpRn6qCIuC907fCRRDb8jdamZ51wP6GvRmgqdufuhGtbS7s78v/Q==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/auto-resize': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/form-utils': 0.81.1
- '@zag-js/interact-outside': 0.81.1
- '@zag-js/live-region': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/time-picker@0.81.1(@internationalized/date@3.6.0):
- resolution: {integrity: sha512-7iBOfRb7J0IYxOSy1Vbznfnq1ISzrbujbjHNY+PjbEDCA7vCEmI0vGEXHBs4YTkTaW5Sisku1a44Ua1kvHT0Dg==}
+ /@zag-js/switch@0.82.1:
+ resolution: {integrity: sha512-lIZsOs5nG9TkPs75+OK5THprEO0u3NAiLnEJ489KEFautVX/GMwAWvGHNFS7CcCpLZv+EpVKAPAdmGfEphrzhA==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/focus-visible': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/tabs@0.82.1:
+ resolution: {integrity: sha512-1uwNRvy8LyUTCAWjL1kD7BexOZ0sHrZ4OnUwDNuaWbqxUjtzoe+ftvcLXvmwFMmrns7o1SVnjqkgSVKuE4mcDA==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/element-rect': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/tags-input@0.82.1:
+ resolution: {integrity: sha512-1mY8nCNMQgMwWBV5zX0bUcIgstqKjvFOAuYhGLIxbQPbgX7lP8Kr3nuhABh0oC0KnWaKfOMlItir2k795G4KMQ==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/auto-resize': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/interact-outside': 0.82.1
+ '@zag-js/live-region': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/time-picker@0.82.1(@internationalized/date@3.7.0):
+ resolution: {integrity: sha512-nWKx3yyHFBUBPOTDFhi3du4wWlQe8wY0EoeWLQN6bpJSF4qo/BosTZJkUHm//FgUdwdhQBFOAsrlrJ0vL4qvNA==}
peerDependencies:
'@internationalized/date': '>=3.0.0'
dependencies:
- '@internationalized/date': 3.6.0
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/timer@0.81.1:
- resolution: {integrity: sha512-BcdSBf+EeQwdKiic0yDFjErCYbwa5vxVWbE7tDHoEXBWeV1xMIjqcxG20qJ2kSxDWjlkx+vpcTnDqvIYnFl5ag==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/toast@0.81.1:
- resolution: {integrity: sha512-v3jEsOcgtl2yIE1kllSccMUlHC87nB7UohFkhVl5gAV2sXMQ2evLna/+DAYlBRYjJogapOW+g69rW4sPX+HZxA==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/toggle-group@0.81.1:
- resolution: {integrity: sha512-x/cpAd/pER/F/pitJ+Rd3RZ02vj8pe17noE7t/1wFyiNRLTi6R4E5fik9yqyFAukLwizxCXpS3rDYIEi7ta70w==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/tooltip@0.81.1:
- resolution: {integrity: sha512-yNmgLlOh1AN006TD7xTkW/lu45O201g+uEXZhwgCiJsngYmOKNFMJFCUllE3KDR/kxecOFr9UZTVual1IhFxjA==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/focus-visible': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/tour@0.81.1:
- resolution: {integrity: sha512-ssKFyZyjFmRpvmlKSOEeo/yb01oCkF8XKOoYFiCgz7Pm9Guaf4rwEWbQBpzlKYaj2zZ8L6+7bOWVgt0f+ZngNw==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dismissable': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/focus-trap': 0.81.1
- '@zag-js/interact-outside': 0.81.1
- '@zag-js/popper': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/tree-view@0.81.1:
- resolution: {integrity: sha512-ks2OtbJXvvmC3UXUyaFQKO+LQDopNhenJ2mV+Gqs3RNqO/5EViIWbiZN6s2bsSaduQhfaCTqk4pFkeBhYIluhQ==}
- dependencies:
- '@zag-js/anatomy': 0.81.1
- '@zag-js/collection': 0.81.1
- '@zag-js/core': 0.81.1
- '@zag-js/dom-query': 0.81.1
- '@zag-js/types': 0.81.1
- '@zag-js/utils': 0.81.1
-
- /@zag-js/types@0.81.1:
- resolution: {integrity: sha512-+T9H99wHn7snO0LwZ9PHX9o4ZAz3Y80Z3nlEFCWyGwFjRwrmZxoGN016pQI+C9HUVe+qXDN5oXysV1N/1/6O0A==}
+ '@internationalized/date': 3.7.0
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/timer@0.82.1:
+ resolution: {integrity: sha512-uG4xCrYHgDZJgvW+71ROQX0xIkqMup37ZpNSLS2f5eD5DO1n/9NYLztA1YyeCJyv1aEDsZreeJLJvNDElgXA2A==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/toast@0.82.1:
+ resolution: {integrity: sha512-4dL99zHXQg8j7ReJAR9zLAp5lNKMS4Nm+THnJaKsA0TF5QkELGnsZz47oKhFY0aQn46paxMLVagLqQ0+2i6D1w==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/toggle-group@0.82.1:
+ resolution: {integrity: sha512-8YaYKFz3ciiQhlTFScrvqH3Ke6UMDQLSgMEsCcERBYatd6TxkJwlFiBzpksIDsZpmloBrylyItJvqmzj9jt6Ig==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/tooltip@0.82.1:
+ resolution: {integrity: sha512-ewF/1h2INDJlzYnoIigcWFWim56ezhfl7YGKgqLBdxBoRvZHyhRIfR8bbddVZk4k144gXsMVMeXwS6VEt6D0eQ==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/focus-visible': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/tour@0.82.1:
+ resolution: {integrity: sha512-Oo4ZA3vG2sYEotfrWVXfIV1KW0Z+s91U+2YPtM2sOLnhetEVXxj/AwAruZfvS6WOcTI7D9UBrrQolY94fdZeOA==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dismissable': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/focus-trap': 0.82.1
+ '@zag-js/interact-outside': 0.82.1
+ '@zag-js/popper': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/tree-view@0.82.1:
+ resolution: {integrity: sha512-xvYwaL49ffC8nnb+ENgNtkSZE1jMh8tm1E777AqBqnrhJZ28+FA9Sk8YDuWIWhNOV/r4n97jTXqj4SAGCrlAMQ==}
+ dependencies:
+ '@zag-js/anatomy': 0.82.1
+ '@zag-js/collection': 0.82.1
+ '@zag-js/core': 0.82.1
+ '@zag-js/dom-query': 0.82.1
+ '@zag-js/types': 0.82.1
+ '@zag-js/utils': 0.82.1
+
+ /@zag-js/types@0.82.1:
+ resolution: {integrity: sha512-Nr/CU/z/SZWDL92P2u9VDZL9JUxY8L1P7dGI0CmDKHlEHk1+vzqg3UnVkUKkZ5eVMNLtloHbrux5X9Gmkl39WQ==}
dependencies:
csstype: 3.1.3
- /@zag-js/utils@0.81.1:
- resolution: {integrity: sha512-lWpU6n6wKhK6GkgyE3IdEChY5AjwmrAqdr9rc4F2qlb/lEp/TFbKOn2TOiFHPLd2YzE4jElFQL7+/7CDK3qFPg==}
+ /@zag-js/utils@0.82.1:
+ resolution: {integrity: sha512-JUGdEjstrzB0G2AJqzQiURIl6UZ1ONYgby/pqBKX57LO5LxasQXk9oNZh8+ZAvePNC/lKqqTtyyI02YQB4XwkA==}
/JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
@@ -11604,6 +11592,27 @@ packages:
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
engines: {node: '>= 0.6'}
+ /framer-motion@12.0.6(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-LmrXbXF6Vv5WCNmb+O/zn891VPZrH7XbsZgRLBROw6kFiP+iTK49gxTv2Ur3F0Tbw6+sy9BVtSqnWfMUpH+6nA==}
+ peerDependencies:
+ '@emotion/is-prop-valid': '*'
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/is-prop-valid':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ motion-dom: 12.0.0
+ motion-utils: 12.0.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ tslib: 2.6.2
+ dev: false
+
/fresh@0.5.2:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
@@ -13757,6 +13766,36 @@ packages:
- supports-color
dev: false
+ /motion-dom@12.0.0:
+ resolution: {integrity: sha512-CvYd15OeIR6kHgMdonCc1ihsaUG4MYh/wrkz8gZ3hBX/uamyZCXN9S9qJoYF03GqfTt7thTV/dxnHYX4+55vDg==}
+ dependencies:
+ motion-utils: 12.0.0
+ dev: false
+
+ /motion-utils@12.0.0:
+ resolution: {integrity: sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==}
+ dev: false
+
+ /motion@12.0.6(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-AzCEO0+//mPlcGiL9JaVwjddHY1cbbnvz5upHL0toqQwsPCs+hiKJ0XG5jfG0XwDtBbiSXdEqW/UTmGLwkVQ6A==}
+ peerDependencies:
+ '@emotion/is-prop-valid': '*'
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/is-prop-valid':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ framer-motion: 12.0.6(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ tslib: 2.6.2
+ dev: false
+
/mrmime@2.0.0:
resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
engines: {node: '>=10'}
diff --git a/src/app/_components/ErrorBox.tsx b/src/app/_components/ErrorBox.tsx
index a5cdf26fc..513c576c1 100644
--- a/src/app/_components/ErrorBox.tsx
+++ b/src/app/_components/ErrorBox.tsx
@@ -46,12 +46,12 @@ export function ErrorBox({
{homeButton && (
-
+
Go home
)}
{tryAgainButton && (
-
+ }
+ menuTriggerProps={{
+ py: 2,
+ pl: 2,
+ pr: 3,
+ }}
+ menuContent={menuContent}
+ menuContentProps={{
+ px: 2,
+ pb: 2,
+ }}
+ isOpen={isOpen}
+ onOpenChange={setIsOpen}
+ />
+ );
+};
diff --git a/src/app/_components/NewNavBar/SettingsPopover.tsx b/src/app/_components/NewNavBar/SettingsPopover.tsx
new file mode 100644
index 000000000..0a0ec3b5a
--- /dev/null
+++ b/src/app/_components/NewNavBar/SettingsPopover.tsx
@@ -0,0 +1,87 @@
+import { PopoverContent, PopoverRoot, PopoverTrigger } from '@/components/ui/popover';
+import { CurvedCornerIcon } from '@/ui/icons/CurvedCornerIcon';
+import { Box, Flex, Icon, Separator, Stack } from '@chakra-ui/react';
+import { GearFine, X } from '@phosphor-icons/react';
+import { useState } from 'react';
+
+import { CurrencySetting } from './CurrencySetting';
+import { NetworkSetting } from './NetworkSetting';
+import { ThemeSetting } from './ThemeSetting';
+
+export const SettingsPopoverContent = ({ isOpen }: { isOpen?: boolean }) => {
+ return (
+ }
+ gap={3}
+ fontFamily="var(--font-instrument-sans)"
+ boxShadow={{ base: 'none', lg: isOpen ? 'var(--stacks-shadows-elevation2)' : 'none' }}
+ >
+
+
+
+
+ );
+};
+
+const gooseNeckHeight = 14; // Increases the height of the popover trigger to meet the lowered popover content
+const gooseNeckAdjustment = 8; // Moves the popover content down
+
+export const SettingsPopover = () => {
+ const [open, setOpen] = useState(false);
+
+ return (
+ setOpen(e.open)}
+ unstyled
+ >
+
+
+
+
+ {open ? : }
+
+
+ {open && (
+
+
+
+ )}
+
+
+
+ {/* TODO: needing to set zIndex to docked to fix the issue where the popover is not showing up because the zindex is set to auto is most likely a bug on Chakra UI */}
+
+
+
+ );
+};
diff --git a/src/app/_components/NewNavBar/ThemeSetting.tsx b/src/app/_components/NewNavBar/ThemeSetting.tsx
new file mode 100644
index 000000000..0d4d2a423
--- /dev/null
+++ b/src/app/_components/NewNavBar/ThemeSetting.tsx
@@ -0,0 +1,62 @@
+import { useColorMode } from '@/components/ui/color-mode';
+import { Text } from '@/ui/Text';
+import { Box, ClientOnly, Flex, Icon } from '@chakra-ui/react';
+import { Moon, SunDim } from '@phosphor-icons/react';
+
+import { OptionPicker, OptionPickerOption } from './OptionPicker';
+
+const options: OptionPickerOption[] = [
+ {
+ id: 'light',
+ label: 'Light',
+ value: 'light',
+ icon: props => (
+
+
+
+ ),
+ },
+ {
+ id: 'dark',
+ label: 'Dark',
+ value: 'dark',
+ icon: props => (
+
+
+
+ ),
+ },
+];
+
+export const ThemeSettingBase = () => {
+ const { colorMode, setColorMode } = useColorMode();
+
+ return (
+
+
+
+ Theme
+
+
+ {options.find(option => option.id === colorMode)?.label}
+
+
+ {
+ setColorMode(optionId as 'light' | 'dark');
+ }}
+ iconSize={{ base: 5, lg: 4 }}
+ iconButtonHeight={{ base: 8, lg: 6 }}
+ iconButtonWidth={{ base: 12, lg: 8 }}
+ />
+
+ );
+};
+
+export const ThemeSetting = () => (
+
+
+
+);
diff --git a/src/app/_components/NewNavBar/consts.ts b/src/app/_components/NewNavBar/consts.ts
new file mode 100644
index 000000000..02d35a496
--- /dev/null
+++ b/src/app/_components/NewNavBar/consts.ts
@@ -0,0 +1,112 @@
+export type PrimaryPage = {
+ id: PrimaryPageId;
+ label: PrimaryPageLabel;
+ href: string;
+ shortcut?: string;
+};
+
+export type PrimaryPageLabel =
+ | 'Home'
+ | 'Blocks'
+ | 'Transactions'
+ | 'Mempool'
+ | 'sBTC'
+ | 'Stacking'
+ | 'Signers'
+ | 'Tokens'
+ | 'NFTs'
+ | 'Analytics'
+ | 'Menu';
+
+export type PrimaryPageId =
+ | 'home'
+ | 'blocks'
+ | 'transactions'
+ | 'mempool'
+ | 'sbtc'
+ | 'stacking'
+ | 'signers'
+ | 'tokens'
+ | 'nfts'
+ | 'analytics';
+
+export const primaryPages: PrimaryPage[] = [
+ {
+ id: 'home',
+ label: 'Home',
+ href: '/',
+ },
+ {
+ id: 'blocks',
+ label: 'Blocks',
+ href: '/blocks',
+ },
+ {
+ id: 'transactions',
+ label: 'Transactions',
+ href: '/transactions',
+ },
+ {
+ id: 'mempool',
+ label: 'Mempool',
+ href: '/mempool',
+ },
+ {
+ id: 'sbtc',
+ label: 'sBTC',
+ href: '/token/SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token',
+ },
+ {
+ id: 'stacking',
+ label: 'Stacking',
+ href: '/stacking',
+ },
+ {
+ id: 'signers',
+ label: 'Signers',
+ href: '/signers',
+ },
+ {
+ id: 'tokens',
+ label: 'Tokens',
+ href: '/tokens',
+ },
+ {
+ id: 'nfts',
+ label: 'NFTs',
+ href: '/nfts',
+ },
+ {
+ id: 'analytics',
+ label: 'Analytics',
+ href: '/analytics',
+ },
+];
+
+export type SecondaryPageLabel = 'Sandbox' | 'Status Center' | 'Support';
+export type SecondaryPageId = 'sandbox' | 'status-center' | 'support';
+
+export type SecondaryPage = {
+ id: SecondaryPageId;
+ label: SecondaryPageLabel;
+ href: string;
+ shortcut?: string;
+};
+
+export const secondaryPages: SecondaryPage[] = [
+ {
+ id: 'sandbox',
+ label: 'Sandbox',
+ href: '/sandbox',
+ },
+ {
+ id: 'status-center',
+ label: 'Status Center',
+ href: '/status-center',
+ },
+ {
+ id: 'support',
+ label: 'Support',
+ href: '/support',
+ },
+];
diff --git a/src/app/_components/PageWrapper.tsx b/src/app/_components/PageWrapper.tsx
index d12e7db48..a28d9565b 100644
--- a/src/app/_components/PageWrapper.tsx
+++ b/src/app/_components/PageWrapper.tsx
@@ -7,12 +7,14 @@ import { ReactNode } from 'react';
import { useCookies } from 'react-cookie';
import { AddNetworkModal } from '../../common/components/modals/AddNetwork';
+import { AddNetworkModalNew } from '../../common/components/modals/AddNetworkNew';
import { IncidentContent } from '../../common/types/incidents';
import { TokenPrice } from '../../common/types/tokenPrice';
import { Footer } from './Footer';
import { NavBar } from './NavBar';
import { NetworkModeToast } from './NetworkModeToast';
import { NewFooter } from './NewFooter';
+import { NavBar as NewNavBar } from './NewNavBar/NavBar';
import { CMSStatusBars } from './StatusBar/CMSStatusBars';
import { IncidentsStatusBarWithErrorBoundary } from './StatusBar/IncidentsStatusBar';
import { NonHiroNetworkWarningBar } from './StatusBar/NonHiroNetworkWarningBar';
@@ -84,7 +86,8 @@ export function PageWrapper({
statusBarContent: IncidentContent | null;
serverThemeCookie: string;
}) {
- const redesignUrl = isRedesignUrl();
+ const isRedesign = isRedesignUrl();
+
return (
<>
@@ -94,7 +97,7 @@ export function PageWrapper({
-
+ {isRedesign ? : }
{children}
- {redesignUrl ? : }
+ {isRedesign ? : }
-
+
>
);
diff --git a/src/app/_components/StatusBar/__tests__/__snapshots__/StatusBarBase.test.tsx.snap b/src/app/_components/StatusBar/__tests__/__snapshots__/StatusBarBase.test.tsx.snap
index 9a6769014..2a777d55d 100644
--- a/src/app/_components/StatusBar/__tests__/__snapshots__/StatusBarBase.test.tsx.snap
+++ b/src/app/_components/StatusBar/__tests__/__snapshots__/StatusBarBase.test.tsx.snap
@@ -11,8 +11,8 @@ exports[`StatusBarBase renders correctly (critical impact) 1`] = `
className="css-w64dtj"
>
{children};
-}
diff --git a/src/app/_components/time-filter/DateInput.tsx b/src/app/_components/time-filter/DateInput.tsx
index 8dfe4e4aa..a5af5c52b 100644
--- a/src/app/_components/time-filter/DateInput.tsx
+++ b/src/app/_components/time-filter/DateInput.tsx
@@ -9,6 +9,7 @@ export const DateInput = forwardRef((inputProps, r
css={{
'::placeholder': {
color: 'textSubdued',
+ fontSize: 'sm',
},
border: '1px solid var(--stacks-colors-border-primary)',
}}
diff --git a/src/app/_components/time-filter/TimeFilter.tsx b/src/app/_components/time-filter/TimeFilter.tsx
index 5c399e1f6..21008d433 100644
--- a/src/app/_components/time-filter/TimeFilter.tsx
+++ b/src/app/_components/time-filter/TimeFilter.tsx
@@ -179,6 +179,7 @@ export function TimeFilter({
return (
setOpen(e.open)}
diff --git a/src/app/instrumentation.ts b/src/app/instrumentation.ts
index d3599c5b4..42626fc94 100644
--- a/src/app/instrumentation.ts
+++ b/src/app/instrumentation.ts
@@ -6,6 +6,8 @@ export function register() {
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
Sentry.init({
+ enabled: process.env.NODE_ENV !== 'development',
+
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
environment: process.env.NODE_ENV || 'production', // Set the environment
diff --git a/src/app/search/filters/Address.tsx b/src/app/search/filters/Address.tsx
index 295e9f41c..24be01929 100644
--- a/src/app/search/filters/Address.tsx
+++ b/src/app/search/filters/Address.tsx
@@ -35,6 +35,7 @@ export function AddressFilter({
const router = useRouter();
return (
setOpen(e.open)}
diff --git a/src/app/search/filters/Date.tsx b/src/app/search/filters/Date.tsx
index de0d66306..a5a97557d 100644
--- a/src/app/search/filters/Date.tsx
+++ b/src/app/search/filters/Date.tsx
@@ -77,6 +77,7 @@ export function DateFilter({ defaultStartTime, defaultEndTime }: DateFilterProps
return (
setOpen(e.open)}
diff --git a/src/common/components/SlidingMenu.tsx b/src/common/components/SlidingMenu.tsx
new file mode 100644
index 000000000..0320758af
--- /dev/null
+++ b/src/common/components/SlidingMenu.tsx
@@ -0,0 +1,89 @@
+import { Box, BoxProps } from '@chakra-ui/react';
+import { useCallback, useEffect, useRef, useState } from 'react';
+
+export const SlidingMenu = ({
+ menuTrigger,
+ menuTriggerProps,
+ menuContent,
+ menuContentProps,
+ menuSlidingMenuProps,
+ isOpen: controlledIsOpen,
+ onOpenChange,
+ height,
+ width,
+}: {
+ height?: number;
+ width: number;
+ menuTrigger: React.ReactNode;
+ menuTriggerProps?: BoxProps;
+ menuContent: React.ReactNode;
+ menuContentProps?: BoxProps;
+ menuSlidingMenuProps?: BoxProps;
+ isOpen?: boolean;
+ onOpenChange?: (isOpen: boolean) => void;
+} & BoxProps) => {
+ const triggerRef = useRef(null);
+ const contentRef = useRef(null);
+ const [menuTriggerHeight, setMenuTriggerHeight] = useState(0);
+ const [uncontrolledIsOpen, setUncontrolledIsOpen] = useState(false);
+ const isControlled = controlledIsOpen !== undefined;
+ const isOpen = isControlled ? controlledIsOpen : uncontrolledIsOpen;
+
+ useEffect(() => {
+ if (triggerRef.current) {
+ setMenuTriggerHeight(triggerRef.current.offsetHeight);
+ }
+ }, []);
+
+ const setIsOpen = useCallback(
+ (value: boolean) => {
+ if (!isControlled) {
+ setUncontrolledIsOpen(value);
+ }
+ onOpenChange?.(value);
+ },
+ [isControlled, onOpenChange]
+ );
+
+ return (
+
+ {
+ setIsOpen(true);
+ onOpenChange?.(true);
+ }}
+ onMouseLeave={() => {
+ setIsOpen(false);
+ onOpenChange?.(false);
+ }}
+ overflow="hidden"
+ transition="height 0.5s ease"
+ height={
+ isOpen && contentRef?.current?.scrollHeight
+ ? `${contentRef?.current?.scrollHeight + menuTriggerHeight}px`
+ : `${menuTriggerHeight}px`
+ }
+ position="absolute"
+ zIndex="dropdown"
+ bg="surfacePrimary"
+ borderRadius="redesign.lg"
+ boxShadow={isOpen ? 'var(--stacks-shadows-elevation2)' : 'none'}
+ {...menuSlidingMenuProps}
+ >
+
+ {menuTrigger}
+
+
+ {menuContent}
+
+
+
+ );
+};
diff --git a/src/common/components/modals/AddNetworkNew/AddNetworkFormNew.tsx b/src/common/components/modals/AddNetworkNew/AddNetworkFormNew.tsx
new file mode 100644
index 000000000..152963c11
--- /dev/null
+++ b/src/common/components/modals/AddNetworkNew/AddNetworkFormNew.tsx
@@ -0,0 +1,303 @@
+'use client';
+
+import { Accordion, Field as CUIField, Fieldset, Flex, Stack } from '@chakra-ui/react';
+import { CaretUp } from '@phosphor-icons/react';
+import { FieldProps, Form, Formik, FormikErrors, Field as FormikField } from 'formik';
+import { useRouter } from 'next/navigation';
+import { FC, useState } from 'react';
+
+import { Button } from '../../../../components/ui/button';
+import { Field as ChakraField } from '../../../../components/ui/field';
+import { Input } from '../../../../ui/Input';
+import { Text } from '../../../../ui/Text';
+import { NetworkIdModeMap } from '../../../constants/network';
+import { useGlobalContext } from '../../../context/useGlobalContext';
+import { useAppDispatch } from '../../../state/hooks';
+import { Network } from '../../../types/network';
+import { getQueryParams } from '../../../utils/buildUrl';
+import { promiseWrapper } from '../../../utils/utils';
+import { buildCustomNetworkUrl, fetchCustomNetworkId, validateUrl } from '../AddNetwork/utils';
+import { closeModal } from '../modal-slice';
+
+const AccordionItemTrigger = Accordion.ItemTrigger;
+const AccordionItemContent = Accordion.ItemContent;
+const AccordionRoot = Accordion.Root;
+const AccordionItem = Accordion.Item;
+
+interface FormValues {
+ label: string;
+ url: string;
+ btcBlockBaseUrl: string;
+ btcTxBaseUrl: string;
+ btcAddressBaseUrl: string;
+ genericError?: string;
+}
+
+export const AddNetworkFormNew: FC = () => {
+ const dispatch = useAppDispatch();
+ const { addCustomNetwork } = useGlobalContext();
+ const router = useRouter();
+ const [isBtcExplorerUrlsAccordionExpanded, setIsBtcExplorerUrlsAccordionExpanded] =
+ useState(false);
+
+ return (
+ {
+ const errors: FormikErrors = {};
+ if (!values.label) {
+ errors.label = 'You need to specify a label for this network.';
+ }
+
+ const { isValid: isNetworkUrlValid, message: networkUrlErrorMessage } = await validateUrl(
+ 'You need to specify a URL for this network.',
+ 'Please check the formatting of the URL passed.',
+ values.url
+ );
+ if (!isNetworkUrlValid) {
+ errors.url = networkUrlErrorMessage;
+ } else {
+ try {
+ const networkId = await fetchCustomNetworkId(buildCustomNetworkUrl(values.url), false);
+ if (!networkId) {
+ errors.genericError = 'The API did not return a valid network_id.';
+ }
+ } catch (e: any) {
+ if (e.message.includes('Failed to fetch')) {
+ errors.genericError = 'Could not connect to supplied network URL.';
+ } else {
+ errors.genericError = e.message;
+ }
+ }
+ }
+
+ const { isValid: isBtcBlockBaseUrlValid, message: btcBlockBaseUrlErrorMessage } =
+ await validateUrl(
+ 'You need to specify a base BTC block URL.',
+ 'Please check the formatting of the URL passed.',
+ values.btcBlockBaseUrl
+ );
+
+ if (!isBtcBlockBaseUrlValid) {
+ errors.btcBlockBaseUrl = btcBlockBaseUrlErrorMessage;
+ }
+
+ const { isValid: isBtcTxBaseUrlValid, message: btcTxBaseUrlErrorMessage } =
+ await validateUrl(
+ 'You need to specify a base BTC transaction URL.',
+ 'Please check the formatting of the URL passed.',
+ values.btcTxBaseUrl
+ );
+
+ if (!isBtcTxBaseUrlValid) {
+ errors.btcTxBaseUrl = btcTxBaseUrlErrorMessage;
+ }
+
+ const { isValid: isBtcAddressBaseUrlValid, message: btcAddressBaseUrlErrorMessage } =
+ await validateUrl(
+ 'You need to specify a base BTC address URL.',
+ 'Please check the formatting of the URL passed.',
+ values.btcAddressBaseUrl
+ );
+
+ if (!isBtcAddressBaseUrlValid) {
+ errors.btcAddressBaseUrl = btcAddressBaseUrlErrorMessage;
+ }
+
+ return errors;
+ }}
+ onSubmit={async ({ url, btcBlockBaseUrl, btcTxBaseUrl, btcAddressBaseUrl, label }) => {
+ const networkUrl = buildCustomNetworkUrl(url);
+ const networkId = await fetchCustomNetworkId(networkUrl, false);
+
+ if (networkId) {
+ const network: Network = {
+ label: label.trim(),
+ url: networkUrl,
+ btcBlockBaseUrl,
+ btcTxBaseUrl,
+ btcAddressBaseUrl,
+ networkId,
+ mode: NetworkIdModeMap[networkId],
+ isCustomNetwork: true,
+ isSubnet: false,
+ };
+ promiseWrapper(addCustomNetwork)(network)
+ .then(() => router.push(`/${getQueryParams(network)}`))
+ .then(() => setTimeout(() => window.location.reload(), 500));
+ }
+
+ dispatch(closeModal());
+ }}
+ >
+ {({ isValidating }) => (
+
+ )}
+
+ );
+};
diff --git a/src/common/components/modals/AddNetworkNew/index.tsx b/src/common/components/modals/AddNetworkNew/index.tsx
new file mode 100644
index 000000000..3042cf3af
--- /dev/null
+++ b/src/common/components/modals/AddNetworkNew/index.tsx
@@ -0,0 +1,53 @@
+import { RedesignModal } from '@/ui/RedesignModal';
+import { Flex, Icon, Stack } from '@chakra-ui/react';
+import { Warning } from '@phosphor-icons/react';
+import { useMemo } from 'react';
+
+import { Text } from '../../../../ui/Text';
+import { MODALS } from '../../../constants/constants';
+import { useOpenedModal } from '../modal-slice';
+import { AddNetworkFormNew } from './AddNetworkFormNew';
+
+const AddNetworkModalBody = () => (
+
+
+
+ Add a new instance of the Stacks Blockchain API.
+
+
+
+
+
+
+ Make sure you review and trust the host before you add it.
+
+
+
+
+
+);
+
+export const AddNetworkModalNew = () => {
+ const modal = useOpenedModal();
+ const open = useMemo(() => modal === MODALS.ADD_NETWORK_NEW, [modal]);
+
+ return (
+
+ Add a network
+
+ }
+ body={}
+ />
+ );
+};
diff --git a/src/common/constants/constants.ts b/src/common/constants/constants.ts
index da50bbbef..545b067c1 100644
--- a/src/common/constants/constants.ts
+++ b/src/common/constants/constants.ts
@@ -23,6 +23,7 @@ export const DEFAULT_DEVNET_SERVER = 'http://localhost:3999';
export enum MODALS {
SEARCH = 'modals/search',
ADD_NETWORK = 'modals/add-network',
+ ADD_NETWORK_NEW = 'modals/add-network-new',
NAKAMOTO = 'modals/nakamoto',
}
diff --git a/src/common/constants/network.ts b/src/common/constants/network.ts
index 0ab27b3cd..49b0eaccf 100644
--- a/src/common/constants/network.ts
+++ b/src/common/constants/network.ts
@@ -58,28 +58,6 @@ export const testnetNetwork: Network = {
mode: NetworkModes.Testnet,
};
-export const nakamotoTestnetNetwork: Network = {
- label: 'Nakamoto Testnet',
- url: 'https://api.nakamoto.testnet.hiro.so',
- btcBlockBaseUrl: NetworkModeBtcBlockBaseUrlMap[NetworkModes.Testnet],
- btcTxBaseUrl: NetworkModeBtcTxBaseUrlMap[NetworkModes.Testnet],
- btcAddressBaseUrl: NetworkModeBtcAddressBaseUrlMap[NetworkModes.Testnet],
- networkId: ChainID.Testnet,
- mode: NetworkModes.Testnet,
- isCustomNetwork: true,
-};
-
-export const oldTestnetNetwork: Network = {
- label: 'Stacks Testnet (Archive)',
- url: 'https://api.old.testnet.hiro.so',
- btcBlockBaseUrl: NetworkModeBtcBlockBaseUrlMap[NetworkModes.Testnet],
- btcTxBaseUrl: NetworkModeBtcTxBaseUrlMap[NetworkModes.Testnet],
- btcAddressBaseUrl: NetworkModeBtcAddressBaseUrlMap[NetworkModes.Testnet],
- networkId: ChainID.Testnet,
- mode: NetworkModes.Testnet,
- isCustomNetwork: true,
-};
-
export const devnetNetwork: Network = {
label: 'Devnet',
url: DEFAULT_DEVNET_SERVER,
diff --git a/src/common/context/GlobalContextProvider.tsx b/src/common/context/GlobalContextProvider.tsx
index 651726162..adb7430a9 100644
--- a/src/common/context/GlobalContextProvider.tsx
+++ b/src/common/context/GlobalContextProvider.tsx
@@ -10,7 +10,6 @@ import {
useStacksApiSocketClient,
} from '../../app/_components/BlockList/Sockets/use-stacks-api-socket-client';
import { buildCustomNetworkUrl, fetchCustomNetworkId } from '../components/modals/AddNetwork/utils';
-import { IS_BROWSER } from '../constants/constants';
import {
NetworkIdModeMap,
NetworkModeBtcAddressBaseUrlMap,
@@ -19,7 +18,6 @@ import {
NetworkModeUrlMap,
devnetNetwork,
mainnetNetwork,
- oldTestnetNetwork,
testnetNetwork,
} from '../constants/network';
import { ONE_HOUR } from '../queries/query-stale-time';
@@ -36,10 +34,6 @@ function filterNetworks(
}
interface GlobalContext {
- apiUrls: Record;
- btcBlockBaseUrls: Record;
- btcTxBaseUrls: Record;
- btcAddressBaseUrls: Record;
activeNetwork: Network;
activeNetworkKey: string;
addCustomNetwork: (network: Network) => void;
@@ -50,10 +44,6 @@ interface GlobalContext {
}
export const GlobalContext = createContext({
- apiUrls: NetworkModeUrlMap,
- btcBlockBaseUrls: NetworkModeBtcBlockBaseUrlMap,
- btcTxBaseUrls: NetworkModeBtcTxBaseUrlMap,
- btcAddressBaseUrls: NetworkModeBtcAddressBaseUrlMap,
activeNetwork: mainnetNetwork,
activeNetworkKey: NetworkModeUrlMap[NetworkModes.Mainnet],
addCustomNetwork: (network: Network) => {},
@@ -72,7 +62,6 @@ export const GlobalContextProvider: FC<{
const searchParams = useSearchParams();
const chain = searchParams?.get('chain');
const api = searchParams?.get('api');
- const subnet = searchParams?.get('subnet');
const btcBlockBaseUrl = searchParams?.get('btcBlockBaseUrl');
const btcTxBaseUrl = searchParams?.get('btcTxBaseUrl');
const btcAddressBaseUrl = searchParams?.get('btcAddressBaseUrl');
@@ -81,7 +70,6 @@ export const GlobalContextProvider: FC<{
const queryNetworkMode = ((Array.isArray(chain) ? chain[0] : chain) ||
NetworkModes.Mainnet) as NetworkModes;
const queryApiUrl = removeTrailingSlash(Array.isArray(api) ? api[0] : api);
- const querySubnet = Array.isArray(subnet) ? subnet[0] : subnet;
const queryBtcBlockBaseUrl = Array.isArray(btcBlockBaseUrl)
? btcBlockBaseUrl[0]
: btcBlockBaseUrl;
@@ -89,11 +77,7 @@ export const GlobalContextProvider: FC<{
const queryBtcAddressBaseUrl = Array.isArray(btcAddressBaseUrl)
? btcAddressBaseUrl[0]
: btcAddressBaseUrl;
- const activeNetworkKey = querySubnet || queryApiUrl || NetworkModeUrlMap[queryNetworkMode];
-
- // TODO: is this needed anymore?
- if (IS_BROWSER && (window as any)?.location?.search?.includes('err=1'))
- throw new Error('test error');
+ const activeNetworkKey = queryApiUrl || NetworkModeUrlMap[queryNetworkMode];
const addedCustomNetworks: Record = JSON.parse(
addedCustomNetworksCookie || '{}'
@@ -104,32 +88,13 @@ export const GlobalContextProvider: FC<{
const [_, setAddedCustomNetworksCookie] = useCookies(['addedCustomNetworks']);
const [__, setRemovedCustomNetworksCookie] = useCookies(['removedCustomNetworks']);
- const isUrlPassedSubnet = !!querySubnet;
-
const [networks, setNetworks] = useState>(
filterNetworks(
{
[mainnetNetwork.url]: mainnetNetwork,
[testnetNetwork.url]: testnetNetwork,
- [oldTestnetNetwork.url]: oldTestnetNetwork,
[devnetNetwork.url]: devnetNetwork,
...addedCustomNetworks,
- ...(isUrlPassedSubnet
- ? {
- [querySubnet]: {
- isSubnet: true,
- url: querySubnet,
- btcBlockBaseUrl:
- queryBtcBlockBaseUrl || NetworkModeBtcBlockBaseUrlMap[NetworkModes.Mainnet],
- btcTxBaseUrl: queryBtcTxBaseUrl || NetworkModeBtcTxBaseUrlMap[NetworkModes.Mainnet],
- btcAddressBaseUrl:
- queryBtcAddressBaseUrl || NetworkModeBtcAddressBaseUrlMap[NetworkModes.Mainnet],
- label: 'subnet',
- networkId: 1,
- mode: NetworkModes.Mainnet,
- } as Network,
- }
- : {}),
},
removedCustomNetworks
)
@@ -263,20 +228,17 @@ export const GlobalContextProvider: FC<{
{children}
diff --git a/src/common/context/__tests__/GlobalContext.test.tsx b/src/common/context/__tests__/GlobalContext.test.tsx
index c695fa99b..e156785c9 100644
--- a/src/common/context/__tests__/GlobalContext.test.tsx
+++ b/src/common/context/__tests__/GlobalContext.test.tsx
@@ -55,7 +55,7 @@ describe('GlobalContext', () => {
},
} as any);
render(
-
+
);
@@ -72,13 +72,13 @@ describe('GlobalContext', () => {
},
} as any);
render(
-
+
);
const networks = getContextField('networks');
- expect(Object.keys(networks).length).toBe(4);
+ expect(Object.keys(networks).length).toBe(3);
await waitFor(() => {
expect(fetchCustomNetworkId).toHaveBeenCalledWith(customApiUrl, false);
@@ -86,7 +86,7 @@ describe('GlobalContext', () => {
await waitFor(() => {
const updatedNetworks = getContextField('networks');
- expect(Object.keys(updatedNetworks).length).toBe(5);
+ expect(Object.keys(updatedNetworks).length).toBe(4);
expect(updatedNetworks[customApiUrl].isCustomNetwork).toBe(true);
});
});
diff --git a/src/common/queries/useMempoolFee.ts b/src/common/queries/useMempoolFee.ts
index a55d03b47..b55410e55 100644
--- a/src/common/queries/useMempoolFee.ts
+++ b/src/common/queries/useMempoolFee.ts
@@ -1,4 +1,6 @@
-import { useSuspenseQuery } from '@tanstack/react-query';
+import { useQuery, useSuspenseQuery } from '@tanstack/react-query';
+
+import { MempoolFeePriorities } from '@stacks/stacks-blockchain-api-types/generated';
import { callApiWithErrorHandling } from '../../api/callApiWithErrorHandling';
import { useApiClient } from '../../api/useApiClient';
@@ -15,3 +17,15 @@ export function useSuspenseMempoolFee(options: any = {}) {
...options,
});
}
+
+export function useMempoolFee(options: any = {}) {
+ const apiClient = useApiClient();
+ return useQuery({
+ queryKey: ['mempoolFee'],
+ queryFn: async () => {
+ return await callApiWithErrorHandling(apiClient, '/extended/v2/mempool/fees');
+ },
+ staleTime: ONE_MINUTE,
+ ...options,
+ });
+}
diff --git a/src/common/state/slices/currency-slice.ts b/src/common/state/slices/currency-slice.ts
new file mode 100644
index 000000000..29f29be9a
--- /dev/null
+++ b/src/common/state/slices/currency-slice.ts
@@ -0,0 +1,32 @@
+import { PayloadAction, createSlice } from '@reduxjs/toolkit';
+
+import { useAppSelector } from '../../state/hooks';
+
+export enum Currency {
+ USD = 'USD',
+ EUR = 'EUR',
+ GBP = 'GBP',
+ BTC = 'BTC',
+}
+
+export interface CurrencyState {
+ currency: Currency;
+}
+
+export const initialState: CurrencyState = {
+ currency: Currency.USD,
+};
+
+export const currencySlice = createSlice({
+ name: 'currency',
+ initialState,
+ reducers: {
+ setCurrency: (state, action: PayloadAction) => {
+ state.currency = action.payload;
+ },
+ },
+});
+
+export const { setCurrency } = currencySlice.actions;
+
+export const useCurrency = () => useAppSelector(state => state.currency.currency);
diff --git a/src/common/state/store.ts b/src/common/state/store.ts
index dcabad245..04a6f0d7a 100644
--- a/src/common/state/store.ts
+++ b/src/common/state/store.ts
@@ -9,6 +9,7 @@ import {
filterAndSortReducers,
} from '../../features/txsFilterAndSort/txsFilterAndSortSlice';
import { ModalState, modalSlice } from '../components/modals/modal-slice';
+import { CurrencyState, currencySlice } from './slices/currency-slice';
import {
TransactionValueFilterState,
activeTransactionValueFilterSlice,
@@ -19,6 +20,7 @@ const rootReducer = combineReducers({
search: searchSlice.reducer,
connect: sandboxSlice.reducer,
activeTransactionValueFilter: activeTransactionValueFilterSlice.reducer,
+ currency: currencySlice.reducer,
...filterAndSortReducers,
});
@@ -42,6 +44,7 @@ export interface RootState extends TxFilters {
search: SearchState;
connect: ConnectState;
activeTransactionValueFilter: TransactionValueFilterState;
+ currency: CurrencyState;
}
export type AppDispatch = ReturnType['dispatch'];
diff --git a/src/common/utils/test-utils/render-utils.tsx b/src/common/utils/test-utils/render-utils.tsx
index 6564c6842..9fc84caf0 100644
--- a/src/common/utils/test-utils/render-utils.tsx
+++ b/src/common/utils/test-utils/render-utils.tsx
@@ -26,6 +26,10 @@ import {
modalSlice,
initialState as modalSliceInitialState,
} from '../../components/modals/modal-slice';
+import {
+ currencySlice,
+ initialState as currencySliceInitialState,
+} from '../../state/slices/currency-slice';
import {
initialState as activeTransactionValueFilterInitialState,
activeTransactionValueFilterSlice,
@@ -123,6 +127,7 @@ export function renderWithReduxProviders(
modal: modalSliceInitialState,
search: searchSliceInitialState,
connect: sandboxSliceInitialState,
+ currency: currencySliceInitialState,
activeTransactionValueFilter: activeTransactionValueFilterInitialState,
...Object.keys(TxFilterAndSortTypes).reduce(
(acc, filterType) => ({ ...acc, [filterType]: filterSliceInitialState }),
@@ -135,6 +140,7 @@ export function renderWithReduxProviders(
search: searchSlice.reducer,
connect: sandboxSlice.reducer,
activeTransactionValueFilter: activeTransactionValueFilterSlice.reducer,
+ currency: currencySlice.reducer,
...filterAndSortReducers,
},
preloadedState,
diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx
index 238070402..c08930746 100644
--- a/src/components/ui/accordion.tsx
+++ b/src/components/ui/accordion.tsx
@@ -1,6 +1,6 @@
import { Accordion, HStack } from '@chakra-ui/react';
+import { CaretDown } from '@phosphor-icons/react';
import * as React from 'react';
-import { LuChevronDown } from 'react-icons/lu';
interface AccordionItemTriggerProps extends Accordion.ItemTriggerProps {
indicatorPlacement?: 'start' | 'end';
@@ -13,7 +13,7 @@ export const AccordionItemTrigger = React.forwardRef
{indicatorPlacement === 'start' && (
-
+
)}
@@ -21,7 +21,7 @@ export const AccordionItemTrigger = React.forwardRef
{indicatorPlacement === 'end' && (
-
+
)}
@@ -32,10 +32,10 @@ export const AccordionItemTrigger = React.forwardRef(
- function AccordionItemContent(props, ref) {
+ function AccordionItemContent({ ...rest }, ref) {
return (
-
-
+
+
);
}
diff --git a/src/components/ui/field.tsx b/src/components/ui/field.tsx
index 6bf73db8e..b93424b65 100644
--- a/src/components/ui/field.tsx
+++ b/src/components/ui/field.tsx
@@ -11,7 +11,7 @@ export interface FieldProps extends Omit {
export const Field = React.forwardRef(function Field(props, ref) {
const { label, children, helperText, errorText, optionalText, ...rest } = props;
return (
-
+
{label && (
{label}
diff --git a/src/features/search/search-field/search-input.tsx b/src/features/search/search-field/search-input.tsx
index 71b1ef0c8..cd580f52e 100644
--- a/src/features/search/search-field/search-input.tsx
+++ b/src/features/search/search-field/search-input.tsx
@@ -111,7 +111,7 @@ export function SearchInput({
{tempSearchTerm
?.toString()
?.split(new RegExp(`(${advancedSearchKeywords.join('|')})`, 'g'))
- ?.map((segment, index) =>
+ ?.map((segment: string, index: number) =>
advancedSearchKeywords.includes(segment) ? (
{
Border Radius Showcase
- {Object.entries(system._config.theme?.tokens?.radii ?? {}).map(([size, value]) => (
-
-
- {`${size}: ${value.value}`}
-
- ))}
+
+ Chakra UI Default Border Radii
+
+ {Object.entries(system._config.theme?.tokens?.radii ?? {}).map(([size, value]) => {
+ if (size === 'redesign') {
+ return null;
+ }
+ return (
+
+
+ {`${size}: ${value.value}`}
+
+ );
+ })}
+
+ Redesign Border Radii
+
+ {Object.entries(system._config.theme?.tokens?.radii?.redesign ?? {}).map(([size, value]) => {
+ return (
+
+
+ {`${size}: ${value.value}`}
+
+ );
+ })}
);
};
diff --git a/src/stories/Button.stories.ts b/src/stories/Button.stories.ts
index a09aa16a8..8e20e72a6 100644
--- a/src/stories/Button.stories.ts
+++ b/src/stories/Button.stories.ts
@@ -11,7 +11,11 @@ const meta = {
},
tags: ['autodocs'],
argTypes: {
- backgroundColor: { control: 'color' },
+ size: { control: 'select', options: ['small', 'big'] },
+ variant: {
+ control: 'select',
+ options: ['redesignPrimary', 'redesignSecondary', 'redesignTertiary', 'redesignWarning'],
+ },
},
args: { onClick: fn() },
} satisfies Meta;
@@ -21,14 +25,28 @@ type Story = StoryObj;
export const Primary: Story = {
args: {
- variant: 'primary',
children: 'Primary Button',
+ variant: 'redesignPrimary',
},
};
export const Secondary: Story = {
args: {
children: 'Secondary Button',
- variant: 'secondary',
+ variant: 'redesignSecondary',
+ },
+};
+
+export const Tertiary: Story = {
+ args: {
+ children: 'Tertiary Button',
+ variant: 'redesignTertiary',
+ },
+};
+
+export const Warning: Story = {
+ args: {
+ children: 'Warning Button',
+ variant: 'redesignWarning',
},
};
diff --git a/src/stories/Elevation.stories.tsx b/src/stories/Elevation.stories.tsx
index db96984cf..d82d94fd7 100644
--- a/src/stories/Elevation.stories.tsx
+++ b/src/stories/Elevation.stories.tsx
@@ -4,8 +4,6 @@ import type { Meta, StoryObj } from '@storybook/react';
import { Text } from '../ui/Text';
import { system } from '../ui/theme/theme';
-const customShadows = ['elevation1', 'elevation2', 'elevation3'];
-
const ElevationDemo = () => {
return (
@@ -18,14 +16,14 @@ const ElevationDemo = () => {
{Object.entries(system._config.theme?.tokens?.shadows ?? {}).map(
([elevationName, elevationValue]) => {
- if (!customShadows.includes(elevationName)) return null;
+ if (elevationName.toLowerCase().includes('dark')) return null;
return (
{
>
{elevationName}
- {(elevationValue as any)['default'].value}
+ {elevationValue.value as any}
);
}
)}
-
+
{Object.entries(system._config.theme?.tokens?.shadows ?? {}).map(
([elevationName, elevationValue]) => {
- if (!customShadows.includes(elevationName)) return null;
+ if (elevationName.toLowerCase().includes('light')) return null;
return (
{
>
{elevationName}
- {(elevationValue as any)._dark.value}
+ {elevationValue.value as any}
);
}
diff --git a/src/stories/Input.stories.tsx b/src/stories/Input.stories.tsx
new file mode 100644
index 000000000..1df4550e3
--- /dev/null
+++ b/src/stories/Input.stories.tsx
@@ -0,0 +1,22 @@
+import type { Meta, StoryObj } from '@storybook/react';
+
+import { Input } from '../ui/Input';
+
+const meta = {
+ title: 'Components/Input',
+ component: Input,
+ parameters: {
+ layout: 'centered',
+ },
+ tags: ['autodocs'],
+ argTypes: {},
+} satisfies Meta;
+
+export default meta;
+type Story = StoryObj;
+
+export const Default: Story = {
+ args: {
+ variant: 'redesignPrimary',
+ },
+};
diff --git a/src/stories/OptionPicker.stories.tsx b/src/stories/OptionPicker.stories.tsx
new file mode 100644
index 000000000..4fee618c4
--- /dev/null
+++ b/src/stories/OptionPicker.stories.tsx
@@ -0,0 +1,48 @@
+import { OptionPicker, OptionPickerOption } from '@/app/_components/NewNavBar/OptionPicker';
+import { Flex, Icon } from '@chakra-ui/react';
+import { Moon, SunDim } from '@phosphor-icons/react';
+import type { Meta, StoryObj } from '@storybook/react';
+
+const options: OptionPickerOption[] = [
+ {
+ id: 'light',
+ label: 'Light',
+ value: 'light',
+ icon: props => (
+
+
+
+ ),
+ },
+ {
+ id: 'dark',
+ label: 'Dark',
+ value: 'dark',
+ icon: props => (
+
+
+
+ ),
+ },
+];
+
+const meta: Meta = {
+ title: 'Components/OptionPicker',
+ component: OptionPicker,
+ tags: ['autodocs'],
+ parameters: {
+ layout: 'centered',
+ },
+};
+
+export default meta;
+type Story = StoryObj;
+
+export const Default: Story = {
+ args: {
+ options,
+ iconSize: 5,
+ iconButtonHeight: 8,
+ iconButtonWidth: 12,
+ },
+};
diff --git a/src/stories/SlidingMenu.stories.tsx b/src/stories/SlidingMenu.stories.tsx
new file mode 100644
index 000000000..44ced3905
--- /dev/null
+++ b/src/stories/SlidingMenu.stories.tsx
@@ -0,0 +1,54 @@
+import { Box, Flex, Stack, Text } from '@chakra-ui/react';
+import type { Meta, StoryObj } from '@storybook/react';
+
+import { SlidingMenu } from '../common/components/SlidingMenu';
+
+const meta = {
+ title: 'Components/SlidingMenu',
+ component: SlidingMenu,
+ parameters: {
+ layout: 'centered',
+ },
+ tags: ['autodocs'],
+ argTypes: {
+ width: { control: 'number' },
+ menuTrigger: { control: 'text' },
+ menuContent: { control: 'text' },
+ },
+ decorators: [
+ Story => (
+
+
+
+ ),
+ ],
+} satisfies Meta;
+
+export default meta;
+type Story = StoryObj;
+
+export const Default: Story = {
+ args: {
+ height: 10,
+ width: 200,
+ menuTrigger: 'Hover me',
+ menuTriggerProps: {
+ display: 'flex',
+ alignItems: 'center',
+ px: 5,
+ },
+ menuContent: (
+
+
+ Menu Item 1
+
+
+ Menu Item 2
+
+
+ Menu Item 3
+
+
+ ),
+ },
+};
diff --git a/src/ui/RedesignModal.tsx b/src/ui/RedesignModal.tsx
new file mode 100644
index 000000000..3b373f4a1
--- /dev/null
+++ b/src/ui/RedesignModal.tsx
@@ -0,0 +1,48 @@
+'use client';
+
+import { Dialog, DialogRootProps, Icon } from '@chakra-ui/react';
+import { X } from '@phosphor-icons/react';
+import { FC } from 'react';
+
+import { closeModal } from '../common/components/modals/modal-slice';
+import { useAppDispatch } from '../common/state/hooks';
+import { DialogContent } from '../components/ui/dialog';
+import { Button } from './Button';
+
+export type ModalProps = Omit & {
+ title: React.ReactNode;
+ body: React.ReactNode;
+ trigger?: React.ReactNode;
+};
+
+export const RedesignModal: FC = ({ open, title, body, trigger, ...rest }) => {
+ const dispatch = useAppDispatch();
+ const onClose = () => {
+ dispatch(closeModal());
+ };
+ return (
+
+ {trigger && {trigger}}
+
+
+
+
+
+
+
+
+
+
+ {title}
+
+ {body}
+
+
+ );
+};
diff --git a/src/ui/icons/CurvedCornerIcon.tsx b/src/ui/icons/CurvedCornerIcon.tsx
new file mode 100644
index 000000000..6c9e51f7a
--- /dev/null
+++ b/src/ui/icons/CurvedCornerIcon.tsx
@@ -0,0 +1,20 @@
+import { Icon, IconBase, IconWeight } from '@phosphor-icons/react';
+import { ReactElement, forwardRef } from 'react';
+
+const weights = new Map([
+ [
+ 'regular',
+ <>
+
+ >,
+ ],
+]);
+
+export const CurvedCornerIcon: Icon = forwardRef((props, ref) => (
+
+));
+
+CurvedCornerIcon.displayName = 'CurvedCornerIcon';
diff --git a/src/ui/icons/StxIcon.tsx b/src/ui/icons/StxIcon.tsx
index ecebb9b9d..7a3c407dc 100644
--- a/src/ui/icons/StxIcon.tsx
+++ b/src/ui/icons/StxIcon.tsx
@@ -6,12 +6,15 @@ import { ReactElement, forwardRef } from 'react';
const weights = new Map([
[
'regular',
- ,
+ <>
+
+
+ >,
],
]);
const StxIcon: Icon = forwardRef((props, ref) => (
-
+
));
StxIcon.displayName = 'StxIcon';
diff --git a/src/ui/theme/borderRadius.ts b/src/ui/theme/borderRadius.ts
index 87c471568..fefc129bb 100644
--- a/src/ui/theme/borderRadius.ts
+++ b/src/ui/theme/borderRadius.ts
@@ -15,17 +15,18 @@
export const CURRENT_BORDER_RADIUS = {};
-// I don't think we should use this as the same values are represented in the theme by default, and changing the naming convention will just break things and require us to fix it in a bunch of places.
export const NEW_BORDER_RADIUS = {
- xxs: { value: '2px' },
- xs: { value: '4px' },
- sm: { value: '6px' },
- md: { value: '8px' },
- lg: { value: '12px' },
- xl: { value: '16px' },
+ redesign: {
+ xxs: { value: '2px' },
+ xs: { value: '4px' },
+ sm: { value: '6px' },
+ md: { value: '8px' },
+ lg: { value: '12px' },
+ xl: { value: '16px' },
+ },
};
export const BORDER_RADIUS = {
- // ...NEW_BORDER_RADIUS, // TODO: BREAKING CHANGE!
+ ...NEW_BORDER_RADIUS,
...CURRENT_BORDER_RADIUS,
};
diff --git a/src/ui/theme/fonts.ts b/src/ui/theme/fonts.ts
index 3b53962d1..a3cb43a68 100644
--- a/src/ui/theme/fonts.ts
+++ b/src/ui/theme/fonts.ts
@@ -1,7 +1,7 @@
export const FONTS = {
- heading: { value: 'var(--font-open-sauce)' },
+ heading: { value: 'var(--font-open-sauce)' }, // TODO: change to matter when flipping on the redesign
matter: { value: 'var(--font-matter)' },
matterMono: { value: 'var(--font-matter-mono)' },
- body: { value: 'var(--font-inter)' },
+ body: { value: 'var(--font-inter)' }, // TODO: change to instrument-sans when flipping on the redesign
instrument: { value: 'var(--font-instrument-sans)' },
};
diff --git a/src/ui/theme/lineHeights.ts b/src/ui/theme/lineHeights.ts
index 1fb230430..3c1525e02 100644
--- a/src/ui/theme/lineHeights.ts
+++ b/src/ui/theme/lineHeights.ts
@@ -14,17 +14,19 @@ export const CURRENT_LINEHEIGHTS = {
};
export const NEW_LINEHEIGHTS = {
- normal: { value: 'normal' }, // default
- none: { value: '1' }, // default
- tighter: { value: '1.15' }, // custom
- tight: { value: '1.2' }, // custom
- shorter: { value: '1.25' }, // default
- snug: { value: '1.3' }, // custom
- short: { value: '1.375' }, // default
- medium: { value: '1.4' }, // custom
- base: { value: '1.5' }, // default
- tall: { value: '1.625' }, // default
- taller: { value: '2' }, // default
+ redesign: {
+ normal: { value: 'normal' }, // default
+ none: { value: '1' }, // default
+ tighter: { value: '1.15' }, // custom
+ tight: { value: '1.2' }, // custom
+ shorter: { value: '1.25' }, // default
+ snug: { value: '1.3' }, // custom
+ short: { value: '1.375' }, // default
+ medium: { value: '1.4' }, // custom
+ base: { value: '1.5' }, // default
+ tall: { value: '1.625' }, // default
+ taller: { value: '2' }, // default}
+ },
};
export const LINEHEIGHTS = {
diff --git a/src/ui/theme/recipes/ButtonRecipe.ts b/src/ui/theme/recipes/ButtonRecipe.ts
index 544b03273..40d41d32f 100644
--- a/src/ui/theme/recipes/ButtonRecipe.ts
+++ b/src/ui/theme/recipes/ButtonRecipe.ts
@@ -44,6 +44,130 @@ export const buttonRecipe = defineRecipe({
bg: 'none',
},
},
+ wrapper: {
+ padding: '0 !important',
+ border: 'none',
+ background: 'none',
+ h: 'fit-content',
+ w: 'fit-content',
+ minW: 'fit-content',
+ minH: 'fit-content',
+ _hover: {
+ textDecoration: 'underline',
+ bg: 'none',
+ },
+ },
+ redesignPrimary: {
+ borderRadius: 'redesign.md', // base
+ color: {
+ base: '{colors.neutral.sand-50}',
+ _dark: '{colors.neutral.sand-1000}',
+ },
+ bg: {
+ base: '{colors.neutral.sand-700}',
+ _dark: '{colors.neutral.sand-50}',
+ },
+ _hover: {
+ bg: {
+ base: '{colors.neutral.sand-1000}',
+ _dark: '{colors.neutral.sand-200}',
+ },
+ },
+ _disabled: {
+ color: {
+ base: '{colors.neutral.sand-200}',
+ _dark: '{colors.neutral.sand-300}',
+ },
+ bg: {
+ base: '{colors.neutral.sand-400}',
+ _dark: '{colors.neutral.sand-500}',
+ },
+ },
+ },
+ redesignSecondary: {
+ borderRadius: 'redesign.md', // base
+ color: {
+ base: '{colors.neutral.sand-50}',
+ _dark: '{colors.neutral.sand-1000}',
+ },
+ bg: {
+ base: '{colors.neutral.sand-500}',
+ _dark: '{colors.neutral.sand-300}',
+ },
+ _hover: {
+ bg: {
+ base: '{colors.neutral.sand-600}',
+ _dark: '{colors.neutral.sand-400}',
+ },
+ },
+ _disabled: {
+ color: {
+ base: '{colors.neutral.sand-100}',
+ _dark: '{colors.neutral.sand-400}',
+ },
+ bg: {
+ base: '{colors.neutral.sand-300}',
+ _dark: '{colors.neutral.sand-600}',
+ },
+ },
+ },
+ redesignTertiary: {
+ borderRadius: 'redesign.md', // base
+ border: '2px solid {colors.redesignBorderSecondary}', // TODO: check this works
+ color: 'textSecondary',
+ bg: {
+ base: '{colors.neutral.sand-50}',
+ _dark: '{colors.neutral.sand-1000}',
+ },
+ _hover: {
+ bg: {
+ base: '{colors.neutral.sand-200}',
+ _dark: '{colors.neutral.sand-700}',
+ },
+ border: 'none',
+ },
+ _disabled: {
+ color: {
+ base: '{colors.neutral.sand-300}',
+ _dark: '{colors.neutral.sand-500}',
+ },
+ },
+ },
+ redesignWarning: {
+ borderRadius: 'redesign.md', // base
+ color: '{colors.neutral.sand-50}',
+ bg: {
+ base: '{colors.feedback.red-500}',
+ _dark: '{colors.feedback.red-500}',
+ },
+ _hover: {
+ bg: '{colors.feedback.red-600}',
+ },
+ _disabled: {
+ color: {
+ base: '{colors.neutral.sand-500}',
+ _dark: '{colors.neutral.sand-300}',
+ },
+ bg: {
+ base: '{colors.feedback.red-300}',
+ _dark: '{colors.feedback.red-600}',
+ },
+ },
+ },
+ },
+ size: {
+ small: {
+ fontSize: 'xs',
+ fontWeight: 'medium',
+ py: 2,
+ px: 3,
+ },
+ big: {
+ fontSize: 'sm',
+ fontWeight: 'medium',
+ py: 3,
+ px: 4,
+ },
},
},
defaultVariants: {
diff --git a/src/ui/theme/recipes/DialogRecipe.ts b/src/ui/theme/recipes/DialogRecipe.ts
new file mode 100644
index 000000000..bfda35412
--- /dev/null
+++ b/src/ui/theme/recipes/DialogRecipe.ts
@@ -0,0 +1,46 @@
+import { defineSlotRecipe } from '@chakra-ui/react';
+
+export const dialogSlotRecipe = defineSlotRecipe({
+ slots: [
+ 'header',
+ 'body',
+ 'footer',
+ 'backdrop',
+ 'title',
+ 'content',
+ 'trigger',
+ 'positioner',
+ 'description',
+ 'closeTrigger',
+ ],
+ className: 'chakra-dialog',
+ base: {},
+ variants: {
+ variant: {
+ redesignPrimary: {
+ header: {
+ p: 0,
+ mb: 3,
+ },
+ content: {
+ borderRadius: 'redesign.xl',
+ boxShadow: '{shadows.elevation2}',
+ py: 5,
+ px: 6,
+ bg: 'surfaceTertiary',
+ },
+ body: {
+ p: 0,
+ },
+ backdrop: {
+ backdropFilter: 'blur(4px)',
+ bg: {
+ _light: 'black.alpha.200',
+ _dark: 'black.alpha.500',
+ },
+ },
+ },
+ },
+ },
+ defaultVariants: {},
+});
diff --git a/src/ui/theme/recipes/InputRecipe.ts b/src/ui/theme/recipes/InputRecipe.ts
index 3016f512a..b205aefa8 100644
--- a/src/ui/theme/recipes/InputRecipe.ts
+++ b/src/ui/theme/recipes/InputRecipe.ts
@@ -10,7 +10,7 @@ export const inputRecipe = defineRecipe({
primary: {
bg: 'surfaceTertiary',
borderColor: 'borderPrimary',
- borderRadius: 'md',
+ borderRadius: 'redesign.md',
color: 'textPrimary',
_hover: {
'& .checkbox__label': { color: 'white' },
@@ -35,6 +35,48 @@ export const inputRecipe = defineRecipe({
borderWidth: '2px',
},
},
+ redesignPrimary: {
+ bg: 'surfaceTertiary',
+ borderColor: 'borderPrimary',
+ borderRadius: 'redesign.md',
+ color: 'textPrimary',
+ _hover: {
+ '& .checkbox__label': { color: 'white' },
+ },
+ _focus: {
+ outline: 'none',
+ },
+ _focusVisible: {
+ borderColor: { base: '{colors.accent.stacks-200}', _dark: '{colors.accent.stacks-700}' },
+ borderWidth: '2px',
+ },
+ _disabled: {
+ bg: 'surfaceSecondary',
+ borderColor: 'borderSecondary',
+ color: 'textTertiary',
+ },
+ _placeholder: {
+ color: 'textSecondary',
+ },
+ _invalid: {
+ borderColor: 'feedback.red-500',
+ borderWidth: '2px',
+ },
+ },
+ },
+ size: {
+ small: {
+ fontSize: 'xs',
+ '::placeholder': {
+ fontSize: 'xs',
+ },
+ },
+ big: {
+ fontSize: 'sm',
+ '::placeholder': {
+ fontSize: 'sm',
+ },
+ },
},
},
});
diff --git a/src/ui/theme/recipes/TooltipRecipe.ts b/src/ui/theme/recipes/TooltipRecipe.ts
index 80e40740b..ee6f38200 100644
--- a/src/ui/theme/recipes/TooltipRecipe.ts
+++ b/src/ui/theme/recipes/TooltipRecipe.ts
@@ -16,8 +16,41 @@ export const tooltipSlotRecipe = defineSlotRecipe({
maxWidth: 'max-content',
},
},
+ redesignPrimary: {
+ content: {
+ fontSize: 'xs',
+ fontWeight: 'medium',
+ color: '{colors.neutral.sand-50}',
+ bg: '{colors.neutral.sand-600} !important',
+ borderColor: '{colors.neutral.sand-600} !important',
+ boxShadow: '{shadows.elevation1} !important',
+ },
+ arrow: {
+ bg: 'transparent',
+ borderColor: 'transparent',
+ },
+ arrowTip: {
+ bg: '{colors.neutral.sand-600} !important',
+ borderColor: '{colors.neutral.sand-600} !important',
+ },
+ },
+ },
+ size: {
+ sm: {
+ content: {
+ py: 1.5,
+ px: 2,
+ },
+ },
+ lg: {
+ content: {
+ py: 2,
+ px: 3,
+ },
+ },
},
},
+
defaultVariants: {
variant: 'primary',
},
diff --git a/src/ui/theme/semanticTokens.ts b/src/ui/theme/semanticTokens.ts
index af85615e2..6ef3f0a52 100644
--- a/src/ui/theme/semanticTokens.ts
+++ b/src/ui/theme/semanticTokens.ts
@@ -116,6 +116,9 @@ export const CURRENT_SEMANTIC_TOKENS = {
listIconHoverBg: {
value: { base: '{colors.neutral.sand-600}', _dark: '{colors.neutral.sand-700}' },
},
+ dropdownBg: {
+ value: { base: '{colors.neutral.sand-200}', _dark: '{colors.neutral.sand-700}' },
+ },
// this is the same as the time filter
networkLabelBadge: {
value: { base: '{colors.purple.600}', _dark: '{colors.purple.300}' },
@@ -262,10 +265,10 @@ export const CURRENT_SEMANTIC_TOKENS = {
export const NEW_SEMANTIC_TOKENS = {
colors: {
- newBorderPrimary: {
+ redesignBorderPrimary: {
value: { base: '{colors.neutral.sand-300}', _dark: '{colors.neutral.sand-600}' },
},
- newBorderSecondary: {
+ redesignBorderSecondary: {
value: { base: '{colors.neutral.sand-200}', _dark: '{colors.neutral.sand-700}' },
},
borderTertiary: {
@@ -296,7 +299,7 @@ export const NEW_SEMANTIC_TOKENS = {
value: { base: '{colors.neutral.sand-50}', _dark: '{colors.neutral.sand-1000}' },
},
iconError: {
- value: { base: '{colors.feedback.red.500}', _dark: '{colors.feedback.red.400}' },
+ value: { base: '{colors.feedback.red-500}', _dark: '{colors.feedback.red-400}' },
},
// TODO: find and replace all the uses of the non-namespaced icon semantic color variables
// icon: {
@@ -459,9 +462,24 @@ export const NEW_SEMANTIC_TOKENS = {
},
};
+const SHADOWS = {
+ elevation1: {
+ value: { base: '{shadows.elevation1Light}', _dark: '{shadows.elevation1Dark}' },
+ },
+ elevation2: {
+ value: { base: '{shadows.elevation2Light}', _dark: '{shadows.elevation2Dark}' },
+ },
+ elevation3: {
+ value: { base: '{shadows.elevation3Light}', _dark: '{shadows.elevation3Dark}' },
+ },
+};
+
export const SEMANTIC_TOKENS = {
colors: {
...CURRENT_SEMANTIC_TOKENS.colors,
...NEW_SEMANTIC_TOKENS.colors,
},
+ shadows: {
+ ...SHADOWS,
+ },
};
diff --git a/src/ui/theme/shadows.ts b/src/ui/theme/shadows.ts
index 70bbbac87..9ac57f4e8 100644
--- a/src/ui/theme/shadows.ts
+++ b/src/ui/theme/shadows.ts
@@ -1,14 +1,20 @@
export const SHADOWS = {
- elevation1: {
- default: { value: '0 2px 6px rgba(183, 180, 176, 0.2)' },
- _dark: { value: '0 2px 6px rgba(0, 0, 0, 0.2)' },
+ elevation1Light: {
+ value: '0 2px 6px rgba(183, 180, 176, 0.2)',
},
- elevation2: {
- default: { value: '0 8px 16px rgba(183, 180, 176, 0.2)' },
- _dark: { value: '0 8px 16px rgba(0, 0, 0, 0.2)' },
+ elevation2Light: {
+ value: '0 8px 16px rgba(183, 180, 176, 0.2)',
},
- elevation3: {
- default: { value: '0 16px 32px rgba(183, 180, 176, 0.2)' },
- _dark: { value: '0 16px 32px rgba(0, 0, 0, 0.2)' },
+ elevation3Light: {
+ value: '0 16px 32px rgba(183, 180, 176, 0.2)',
+ },
+ elevation1Dark: {
+ value: '0 2px 6px rgba(0, 0, 0, 0.2)',
+ },
+ elevation2Dark: {
+ value: '0 8px 16px rgba(0, 0, 0, 0.2)',
+ },
+ elevation3Dark: {
+ value: '0 16px 32px rgba(0, 0, 0, 0.2)',
},
};
diff --git a/src/ui/theme/sizes.ts b/src/ui/theme/sizes.ts
index 137670420..ffe9fb976 100644
--- a/src/ui/theme/sizes.ts
+++ b/src/ui/theme/sizes.ts
@@ -4,26 +4,34 @@ import { SPACE } from './space';
// export const CI_DEFAULT_SIZES = {
// // ...theme.space, // imports all the space values
// full: '100%',
-// '3xs': '14rem',
-// '2xs': '16rem',
-// xs: '20rem',
-// sm: '24rem',
-// md: '28rem',
-// lg: '32rem',
-// xl: '36rem',
-// '2xl': '42rem',
-// '3xl': '48rem',
-// '4xl': '56rem',
-// '5xl': '64rem',
-// '6xl': '72rem',
+// '3xs': '14rem', // 224px
+// '2xs': '16rem', // 256px
+// xs: '20rem', // 320px
+// sm: '24rem', // 384px
+// md: '28rem', // 448px
+// lg: '32rem', // 512px
+// xl: '36rem', // 576px
+// '2xl': '42rem', // 672px
+// '3xl': '48rem', // 768px
+// '4xl': '56rem', // 896px
+// '5xl': '64rem', // 1024px
+// '6xl': '72rem', // 1152px
// };
export const CURRENT_SIZES = {
3.5: { value: '0.875rem' }, // 14px
4.5: { value: '1.125rem' }, // 18px
18: { value: '4.5rem' }, // 72px
- 60: { value: '3.75rem' }, // 60px
- 150: { value: '9.375rem' }, // 150px
+ 5.5: { value: '1.375rem' }, // 22px
+ 13: { value: '3.25rem' }, // 52px
+ 13.5: { value: '3.375rem' }, // 54px
+ 14: { value: '3.5rem' }, // 56px
+ 14.5: { value: '3.625rem' }, // 58px
+ 15: { value: '3.75rem' }, // 60px
+ 17: { value: '4.25rem' }, // 68px
+ 50: { value: '12.5rem' }, // 200px
+ 60: { value: '15rem' }, // 240px
+ 150: { value: '37.5rem' }, // 600px
};
export const NEW_SIZES = {
diff --git a/src/ui/theme/space.ts b/src/ui/theme/space.ts
index 6b6dd041f..d890f87ec 100644
--- a/src/ui/theme/space.ts
+++ b/src/ui/theme/space.ts
@@ -51,6 +51,7 @@ export const NEW_SPACE = {
8: { value: '2rem' }, // 32px
10: { value: '2.5rem' }, // 40px
12: { value: '3rem' }, // 48px
+ 15: { value: '3.75rem' }, // 60px
16: { value: '4rem' }, // 64px
18: { value: '4.5rem' }, // 72px
20: { value: '5rem' }, // 80px
diff --git a/src/ui/theme/theme.ts b/src/ui/theme/theme.ts
index 5b694c1ee..c3126e333 100644
--- a/src/ui/theme/theme.ts
+++ b/src/ui/theme/theme.ts
@@ -14,6 +14,7 @@ import { LINEHEIGHTS } from './lineHeights';
import { badgeRecipe } from './recipes/BadgeRecipe';
import { buttonRecipe } from './recipes/ButtonRecipe';
import { checkboxSlotRecipe } from './recipes/CheckboxRecipe';
+import { dialogSlotRecipe } from './recipes/DialogRecipe';
import { iconButtonRecipe } from './recipes/IconButtonRecipe';
import { inputRecipe } from './recipes/InputRecipe';
import { linkRecipe } from './recipes/LinkRecipe';
@@ -50,6 +51,7 @@ const themeConfig = {
tabs: tabsSlotRecipe,
tag: tagSlotRecipe,
tooltip: tooltipSlotRecipe,
+ dialog: dialogSlotRecipe,
},
tokens: {
colors: { ...COLORS, ...NEW_COLORS },
diff --git a/src/ui/types.ts b/src/ui/types.ts
index 37e769963..2839224d1 100644
--- a/src/ui/types.ts
+++ b/src/ui/types.ts
@@ -2,3 +2,12 @@ export interface UIComponent {
// TODO: Remove this
size?: string | number;
}
+
+export type ResponsiveDesignObject = {
+ base?: number | string;
+ sm?: number | string;
+ md?: number | string;
+ lg?: number | string;
+ xl?: number | string;
+ '2xl'?: number | string;
+};
diff --git a/tsconfig.json b/tsconfig.json
index 8a56fd6dd..f3543a66d 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -22,6 +22,13 @@
"@/*": ["./src/*"]
}
},
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "next.config.js"],
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts",
+ "next.config.js",
+ "src/stories/OptionPicker.stories.tsx"
+ ],
"exclude": ["node_modules", "next.config.js"]
}