@sanity/sdk-react 0.0.0-alpha.2 → 0.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/README.md +38 -67
  2. package/dist/index.d.ts +4811 -2
  3. package/dist/index.js +1069 -2
  4. package/dist/index.js.map +1 -1
  5. package/package.json +27 -58
  6. package/src/_exports/index.ts +66 -10
  7. package/src/components/Login/LoginLinks.test.tsx +4 -14
  8. package/src/components/Login/LoginLinks.tsx +16 -31
  9. package/src/components/SDKProvider.test.tsx +79 -0
  10. package/src/components/SDKProvider.tsx +42 -0
  11. package/src/components/SanityApp.test.tsx +156 -0
  12. package/src/components/SanityApp.tsx +90 -0
  13. package/src/components/auth/AuthBoundary.test.tsx +6 -19
  14. package/src/components/auth/AuthBoundary.tsx +20 -4
  15. package/src/components/auth/Login.test.tsx +2 -16
  16. package/src/components/auth/Login.tsx +11 -30
  17. package/src/components/auth/LoginCallback.test.tsx +5 -20
  18. package/src/components/auth/LoginCallback.tsx +9 -14
  19. package/src/components/auth/LoginError.test.tsx +2 -17
  20. package/src/components/auth/LoginError.tsx +11 -16
  21. package/src/components/auth/LoginFooter.test.tsx +2 -16
  22. package/src/components/auth/LoginFooter.tsx +8 -24
  23. package/src/components/auth/LoginLayout.test.tsx +2 -16
  24. package/src/components/auth/LoginLayout.tsx +8 -38
  25. package/src/components/auth/authTestHelpers.tsx +11 -0
  26. package/src/components/utils.ts +22 -0
  27. package/src/context/SanityInstanceContext.ts +4 -0
  28. package/src/{components/context → context}/SanityProvider.test.tsx +2 -2
  29. package/src/context/SanityProvider.tsx +50 -0
  30. package/src/hooks/_synchronous-groq-js.mjs +4 -0
  31. package/src/hooks/auth/useAuthState.tsx +4 -5
  32. package/src/hooks/auth/useAuthToken.tsx +1 -1
  33. package/src/hooks/auth/useCurrentUser.tsx +28 -4
  34. package/src/hooks/auth/useDashboardOrganizationId.test.tsx +42 -0
  35. package/src/hooks/auth/useDashboardOrganizationId.tsx +29 -0
  36. package/src/hooks/auth/useHandleAuthCallback.test.tsx +16 -0
  37. package/src/hooks/auth/{useHandleCallback.tsx → useHandleAuthCallback.tsx} +7 -6
  38. package/src/hooks/auth/useLogOut.test.tsx +2 -2
  39. package/src/hooks/auth/useLogOut.tsx +1 -1
  40. package/src/hooks/auth/useLoginUrls.tsx +1 -0
  41. package/src/hooks/client/useClient.ts +9 -30
  42. package/src/hooks/comlink/useFrameConnection.test.tsx +167 -0
  43. package/src/hooks/comlink/useFrameConnection.ts +107 -0
  44. package/src/hooks/comlink/useManageFavorite.test.ts +111 -0
  45. package/src/hooks/comlink/useManageFavorite.ts +130 -0
  46. package/src/hooks/comlink/useRecordDocumentHistoryEvent.test.ts +81 -0
  47. package/src/hooks/comlink/useRecordDocumentHistoryEvent.ts +106 -0
  48. package/src/hooks/comlink/useWindowConnection.test.ts +135 -0
  49. package/src/hooks/comlink/useWindowConnection.ts +122 -0
  50. package/src/hooks/context/useSanityInstance.test.tsx +2 -2
  51. package/src/hooks/context/useSanityInstance.ts +24 -8
  52. package/src/hooks/dashboard/useNavigateToStudioDocument.test.ts +178 -0
  53. package/src/hooks/dashboard/useNavigateToStudioDocument.ts +123 -0
  54. package/src/hooks/dashboard/useStudioWorkspacesByResourceId.test.tsx +278 -0
  55. package/src/hooks/dashboard/useStudioWorkspacesByResourceId.ts +92 -0
  56. package/src/hooks/datasets/useDatasets.ts +40 -0
  57. package/src/hooks/document/useApplyDocumentActions.test.ts +25 -0
  58. package/src/hooks/document/useApplyDocumentActions.ts +75 -0
  59. package/src/hooks/document/useDocument.test.ts +81 -0
  60. package/src/hooks/document/useDocument.ts +107 -0
  61. package/src/hooks/document/useDocumentEvent.test.ts +63 -0
  62. package/src/hooks/document/useDocumentEvent.ts +54 -0
  63. package/src/hooks/document/useDocumentPermissions.ts +84 -0
  64. package/src/hooks/document/useDocumentSyncStatus.test.ts +16 -0
  65. package/src/hooks/document/useDocumentSyncStatus.ts +33 -0
  66. package/src/hooks/document/useEditDocument.test.ts +179 -0
  67. package/src/hooks/document/useEditDocument.ts +195 -0
  68. package/src/hooks/documents/useDocuments.test.tsx +152 -0
  69. package/src/hooks/documents/useDocuments.ts +174 -0
  70. package/src/hooks/helpers/createCallbackHook.tsx +3 -2
  71. package/src/hooks/helpers/createStateSourceHook.test.tsx +66 -0
  72. package/src/hooks/helpers/createStateSourceHook.tsx +29 -10
  73. package/src/hooks/paginatedDocuments/usePaginatedDocuments.test.tsx +259 -0
  74. package/src/hooks/paginatedDocuments/usePaginatedDocuments.ts +290 -0
  75. package/src/hooks/preview/usePreview.test.tsx +19 -10
  76. package/src/hooks/preview/usePreview.tsx +67 -13
  77. package/src/hooks/projection/useProjection.test.tsx +218 -0
  78. package/src/hooks/projection/useProjection.ts +147 -0
  79. package/src/hooks/projects/useProject.ts +48 -0
  80. package/src/hooks/projects/useProjects.ts +45 -0
  81. package/src/hooks/query/useQuery.test.tsx +188 -0
  82. package/src/hooks/query/useQuery.ts +103 -0
  83. package/src/hooks/users/useUsers.test.ts +163 -0
  84. package/src/hooks/users/useUsers.ts +107 -0
  85. package/src/utils/getEnv.ts +21 -0
  86. package/src/version.ts +8 -0
  87. package/src/vite-env.d.ts +10 -0
  88. package/dist/_chunks-es/useLogOut.js +0 -44
  89. package/dist/_chunks-es/useLogOut.js.map +0 -1
  90. package/dist/assets/bundle-CcAyERuZ.css +0 -11
  91. package/dist/components.d.ts +0 -257
  92. package/dist/components.js +0 -316
  93. package/dist/components.js.map +0 -1
  94. package/dist/hooks.d.ts +0 -187
  95. package/dist/hooks.js +0 -81
  96. package/dist/hooks.js.map +0 -1
  97. package/src/_exports/components.ts +0 -13
  98. package/src/_exports/hooks.ts +0 -9
  99. package/src/components/DocumentGridLayout/DocumentGridLayout.stories.tsx +0 -113
  100. package/src/components/DocumentGridLayout/DocumentGridLayout.test.tsx +0 -42
  101. package/src/components/DocumentGridLayout/DocumentGridLayout.tsx +0 -21
  102. package/src/components/DocumentListLayout/DocumentListLayout.stories.tsx +0 -105
  103. package/src/components/DocumentListLayout/DocumentListLayout.test.tsx +0 -42
  104. package/src/components/DocumentListLayout/DocumentListLayout.tsx +0 -12
  105. package/src/components/DocumentPreviewLayout/DocumentPreviewLayout.md +0 -49
  106. package/src/components/DocumentPreviewLayout/DocumentPreviewLayout.stories.tsx +0 -39
  107. package/src/components/DocumentPreviewLayout/DocumentPreviewLayout.test.tsx +0 -30
  108. package/src/components/DocumentPreviewLayout/DocumentPreviewLayout.tsx +0 -171
  109. package/src/components/context/SanityProvider.tsx +0 -42
  110. package/src/css/css.config.js +0 -220
  111. package/src/css/paramour.css +0 -2347
  112. package/src/css/styles.css +0 -11
  113. package/src/hooks/auth/useHandleCallback.test.tsx +0 -16
  114. package/src/hooks/client/useClient.test.tsx +0 -130
  115. package/src/hooks/documentCollection/useDocuments.test.ts +0 -130
  116. package/src/hooks/documentCollection/useDocuments.ts +0 -87
@@ -1,49 +0,0 @@
1
- # DocumentPreviewLayout
2
-
3
- The DocumentPreviewLayout component is used to render a compact representation of a [document](#). These previews are often rendered for each document within a [DocumentListUI component](#), but can also be rendered as standalone components.
4
-
5
- Document previews surface the following information about each document:
6
-
7
- - The document's title
8
- - A subtitle (optional)
9
- - A piece of media, such as an icon or image (optional)
10
- - The document type (optional)
11
- - The document’s state, such as draft or published (optional)
12
-
13
- Additionally, each document preview can take a `url` prop to enable navigation changes when selecting the document, and a `selected` prop to indicate that a given document has been selected.
14
-
15
- ![An image of the stock preview component]()
16
-
17
- ```jsx
18
- <DocumentPreviewLayout
19
- title={doc.title}
20
- subtitle={doc.subtitle}
21
- media={doc.media}
22
- docType={doc.type}
23
- docState={doc.published ? 'published' : 'draft'}
24
- url={doc.url}
25
- selected={true}
26
- />
27
- ```
28
-
29
- ## Installation
30
-
31
- ```shell
32
- npm install @sanity/sdk
33
- ```
34
-
35
- ```javascript
36
- import DocumentPreviewLayout from `@sanity/sdk/react/DocumentPreviewLayout`
37
- ```
38
-
39
- ## Props
40
-
41
- | Name | Type | Description |
42
- | ---------- | -------------------- | ----------------------------------------------------------- |
43
- | `title` | `string` | The title to display for the document |
44
- | `subtitle` | `string` (optional) | The subtitle to display for the document |
45
- | `media` | `node` (optional) | The image, icon, or other node to display with the document |
46
- | `docType` | `string` (optional) | The document type |
47
- | `docState` | `string` (optional) | The state of the document, such as 'published' or 'draft' |
48
- | `url` | `string` (optional) | The URL to navigate to when selecting the document |
49
- | `selected` | `boolean` (optional) | The `selected` state of the document; defaults to `false` |
@@ -1,39 +0,0 @@
1
- import {type Meta, type StoryObj} from '@storybook/react'
2
-
3
- import {DocumentPreviewLayout} from './DocumentPreviewLayout'
4
-
5
- const meta: Meta<typeof DocumentPreviewLayout> = {
6
- title: 'DocumentPreviewLayout',
7
- component: DocumentPreviewLayout,
8
- }
9
-
10
- export default meta
11
- type Story = StoryObj<typeof meta>
12
-
13
- export const Basic: Story = {
14
- args: {
15
- title: 'Hello World',
16
- },
17
- render: (props) => {
18
- return <DocumentPreviewLayout {...props} />
19
- },
20
- }
21
-
22
- export const AllProps: Story = {
23
- args: {
24
- title: 'Hello World',
25
- subtitle: 'It’s nice to meet you',
26
- onClick: () => {
27
- alert('Hello World!')
28
- },
29
- media: {
30
- type: 'image-asset',
31
- url: 'https://picsum.photos/80/80',
32
- },
33
- docType: 'article',
34
- status: 'published',
35
- },
36
- render: (props) => {
37
- return <DocumentPreviewLayout {...props} />
38
- },
39
- }
@@ -1,30 +0,0 @@
1
- import {render, screen} from '../../../test/test-utils.tsx'
2
- import {DocumentPreviewLayout} from './DocumentPreviewLayout'
3
-
4
- describe('DocumentPreviewLayout', () => {
5
- it('renders the data it receives via props', () => {
6
- render(<DocumentPreviewLayout title="Test Preview" subtitle="It works" />)
7
- expect(screen.getByText('Test Preview')).toBeVisible()
8
- expect(screen.getByText('It works')).toBeVisible()
9
- })
10
-
11
- it('renders empty when no title is provided (todo)', () => {
12
- const {container} = render(<DocumentPreviewLayout title="" />)
13
- expect(container).toBeEmptyDOMElement()
14
- })
15
-
16
- it('renders the doctype when one is provided', () => {
17
- render(<DocumentPreviewLayout title="Test Preview" docType="article" />)
18
- expect(screen.getByText('article')).toBeVisible()
19
- })
20
-
21
- it('renders the published status when provided', () => {
22
- render(<DocumentPreviewLayout title="Test Preview" status="published" />)
23
- expect(screen.getByText('published')).toBeVisible()
24
- })
25
-
26
- it('renders the draft status when provided', () => {
27
- render(<DocumentPreviewLayout title="Test Preview" status="draft" />)
28
- expect(screen.getByText('draft')).toBeVisible()
29
- })
30
- })
@@ -1,171 +0,0 @@
1
- import 'inter-ui/inter.css'
2
- import '../../css/styles.css'
3
-
4
- import {DocumentIcon} from '@sanity/icons'
5
- import {forwardRef} from 'react'
6
-
7
- /**
8
- * @public
9
- */
10
- export interface DocumentPreviewLayoutProps {
11
- docType?: string
12
- media?: {type: string; url: string} | null | undefined
13
- onClick?: () => void
14
- selected?: boolean
15
- status?: string
16
- subtitle?: string
17
- title: string
18
- }
19
-
20
- /**
21
- * This is a component that renders a document preview.
22
- *
23
- * @public
24
- *
25
- * @param props - The props for the DocumentPreviewLayout component.
26
- * @returns - The DocumentPreviewLayout component.
27
- */
28
- export const DocumentPreviewLayout = forwardRef(
29
- (
30
- {
31
- docType,
32
- media,
33
- onClick,
34
- selected = false,
35
- status = '',
36
- subtitle = '',
37
- title,
38
- }: DocumentPreviewLayoutProps,
39
- ref: React.Ref<HTMLElement>,
40
- ): JSX.Element => {
41
- // @TODO: empty state
42
- if (!title) {
43
- return <></>
44
- }
45
-
46
- let PreviewMedia
47
-
48
- if (media?.url) {
49
- const baseUrl = new URL(media.url)
50
- baseUrl.searchParams.set('h', '66')
51
- baseUrl.searchParams.set('w', '66')
52
- baseUrl.searchParams.set('fit', 'crop')
53
- const mediaUrl = baseUrl.toString()
54
- // media url string params for sanity img
55
- PreviewMedia = <img src={mediaUrl} alt="" />
56
- } else {
57
- PreviewMedia = <DocumentIcon />
58
- }
59
-
60
- return (
61
- <>
62
- <style>{`
63
- .DocumentPreviewLayout {
64
- --_hoverFocusBg: light-dark(var(--shade-11), var(--tint-1));
65
- --_selectedBg: light-dark(var(--blue-10), var(--blue-2));
66
- --_selectedFg: light-dark(var(--gray-1), var(--gray-10));
67
- --_titleFg: light-dark(var(--gray-1), var(--gray-10));
68
- --_subtitleFg: light-dark(var(--gray-4), var(--gray-7));
69
- --_docTypeFg: light-dark(var(--gray-1), var(--gray-10));
70
- --_docTypeBg: light-dark(var(--shade-10), var(--tint-1));
71
- --_publishedFg: light-dark(var(--gray-1), var(--gray-10));
72
- --_publishedBg: light-dark(var(--green-10), var(--green-2));
73
- --_draftFg: light-dark(var(--gray-1), var(--gray-10));
74
- --_draftBg: light-dark(var(--yellow-6), var(--yellow-2));
75
-
76
- appearance: none;
77
-
78
- &:has(:hover, focus) {
79
- background-color: var(--hoverFocusBg, var(--_hoverFocusBg));
80
- }
81
-
82
- &.selected {
83
- background-color: var(--selectedBg, var(--_selectedBg));
84
- color: var(--selectedFg, var(--_selectedFg));
85
- }
86
-
87
- .Title {
88
- color: var(--titleFg, var(--_titleFg));
89
- }
90
-
91
- &:not(.selected) .Subtitle {
92
- color: var(--subtitleFg, var(--_subtitleFg));
93
- }
94
-
95
- .Media {
96
- aspect-ratio: 1;
97
- inline-size: 33px;
98
- border-color: var(--gray-8);
99
- }
100
-
101
- .DocType {
102
- color: var(--docTypeFg, var(--_docTypeFg));
103
- background-color: var(--docTypeBg, var(--_docTypeBg));
104
- }
105
-
106
- .Published {
107
- color: var(--publishedFg, var(--_publishedFg));
108
- background-color: var(--publishedBg, var(--_publishedBg));
109
- }
110
-
111
- .Draft {
112
- color: var(--draftFg, var(--_draftFg));
113
- background-color: var(--draftBg, var(--_draftBg));
114
- }
115
-
116
- :is(.Published, .Draft) figcaption {
117
- @container (width < 52ch) {
118
- clip: rect(0 0 0 0);
119
- clip-path: inset(50%);
120
- height: 1px;
121
- overflow: hidden;
122
- position: absolute;
123
- white-space: nowrap;
124
- width: 1px;
125
- }
126
- }
127
-
128
- }
129
- `}</style>
130
- <button
131
- onClick={onClick}
132
- ref={ref as React.Ref<HTMLButtonElement>}
133
- className={`DocumentPreviewLayout block si-100 text-start p-1 radius1 ${selected ? 'selected' : ''}`}
134
- >
135
- <div className="container-inline flex align-items-center gap-2 font-sans">
136
- <figure className="Media border0 border-solid flex-none flex align-items-center justify-content-center object-cover">
137
- {PreviewMedia}
138
- </figure>
139
-
140
- <div className="leading2 flex-grow overflow-hidden">
141
- <p className="Title text-1 font-medium truncate">{title}</p>
142
- {subtitle && <p className="Subtitle text-1 truncate">{subtitle}</p>}
143
- </div>
144
-
145
- {docType && (
146
- <figure className="DocType inline-block pb-5 pi-3 radius-pill text-2">
147
- <figcaption className="inline">{docType}</figcaption>
148
- </figure>
149
- )}
150
-
151
- {/* @TODO: finalize UI for this */}
152
- {status === 'published' && (
153
- <figure className="Published inline-block pb-5 pi-3 radius-pill text-2">
154
- ✔︎ <figcaption className="inline">published</figcaption>
155
- </figure>
156
- )}
157
-
158
- {/* @TODO: finalize UI for this */}
159
- {status === 'draft' && (
160
- <figure className="Draft inline-block pb-5 pi-3 radius-pill text-2">
161
- ⛑︎ <figcaption className="inline">draft</figcaption>
162
- </figure>
163
- )}
164
- </div>
165
- </button>
166
- </>
167
- )
168
- },
169
- )
170
-
171
- DocumentPreviewLayout.displayName = 'DocumentPreviewLayout'
@@ -1,42 +0,0 @@
1
- import {type SanityInstance} from '@sanity/sdk'
2
- import {createContext, type ReactElement} from 'react'
3
-
4
- /**
5
- * @public
6
- */
7
- export interface SanityProviderProps {
8
- children: React.ReactNode
9
- sanityInstance: SanityInstance
10
- }
11
-
12
- export const SanityInstanceContext = createContext<SanityInstance | null>(null)
13
-
14
- /**
15
- * Top-level context provider that provides a Sanity configuration instance.
16
- * This must wrap any Sanity SDK React component.
17
- * @public
18
- * @param props - Sanity project and dataset configuration
19
- * @returns Rendered component
20
- * @example
21
- * ```tsx
22
- * import {createSanityInstance} from '@sanity/sdk'
23
- * import {ExampleComponent, SanityProvider} from '@sanity/sdk-react'
24
- *
25
- * const sanityInstance = createSanityInstance({projectId: 'your-project-id', dataset: 'production'})
26
- *
27
- * export default function MyApp() {
28
- * return (
29
- * <SanityProvider sanityInstance={sanityInstance}>
30
- * <ExampleComponent />
31
- * </SanityProvider>
32
- * )
33
- * }
34
- * ```
35
- */
36
- export const SanityProvider = ({children, sanityInstance}: SanityProviderProps): ReactElement => {
37
- return (
38
- <SanityInstanceContext.Provider value={sanityInstance}>
39
- {children}
40
- </SanityInstanceContext.Provider>
41
- )
42
- }
@@ -1,220 +0,0 @@
1
- export default {
2
- color: {
3
- spots: {
4
- 'tint-0': 'hsla(0, 0%, 100%, 0.035)',
5
- 'tint-1': 'hsla(0, 0%, 100%, 0.1)',
6
- 'tint-2': 'hsla(0, 0%, 100%, 0.19)',
7
- 'tint-3': 'hsla(0, 0%, 100%, 0.28)',
8
- 'tint-4': 'hsla(0, 0%, 100%, 0.36)',
9
- 'tint-5': 'hsla(0, 0%, 100%, 0.45)',
10
- 'tint-6': 'hsla(0, 0%, 100%, 0.55)',
11
- 'tint-7': 'hsla(0, 0%, 100%, 0.64)',
12
- 'tint-8': 'hsla(0, 0%, 100%, 0.73)',
13
- 'tint-9': 'hsla(0, 0%, 100%, 0.815)',
14
- 'tint-10': 'hsla(0, 0%, 100%, 0.895)',
15
- 'tint-11': 'hsla(0, 0%, 100%, 0.94)',
16
-
17
- 'shade-0': 'hsla(0, 0%, 0%, 0.94)',
18
- 'shade-1': 'hsla(0, 0%, 0%, 0.899)',
19
- 'shade-2': 'hsla(0, 0%, 0%, 0.8)',
20
- 'shade-3': 'hsla(0, 0%, 0%, 0.69)',
21
- 'shade-4': 'hsla(0, 0%, 0%, 0.6)',
22
- 'shade-5': 'hsla(0, 0%, 0%, 0.5)',
23
- 'shade-6': 'hsla(0, 0%, 0%, 0.41)',
24
- 'shade-7': 'hsla(0, 0%, 0%, 0.32)',
25
- 'shade-8': 'hsla(0, 0%, 0%, 0.24)',
26
- 'shade-9': 'hsla(0, 0%, 0%, 0.16)',
27
- 'shade-10': 'hsla(0, 0%, 0%, 0.07)',
28
- 'shade-11': 'hsla(0, 0%, 0%, 0.035)',
29
-
30
- 'gray-0': '#000000',
31
- 'gray-1': '#1a1a1a',
32
- 'gray-2': '#353535',
33
- 'gray-3': '#4e4e4e',
34
- 'gray-4': '#686868',
35
- 'gray-5': '#808080',
36
- 'gray-6': '#979797',
37
- 'gray-7': '#adadad',
38
- 'gray-8': '#c2c2c2',
39
- 'gray-9': '#d7d7d7',
40
- 'gray-10': '#ebebeb',
41
- 'gray-11': '#ffffff',
42
-
43
- 'slate-gray-0': '#0c0c0e',
44
- 'slate-gray-1': '#26262c',
45
- 'slate-gray-2': '#403f49',
46
- 'slate-gray-3': '#595865',
47
- 'slate-gray-4': '#71707f',
48
- 'slate-gray-5': '#878697',
49
- 'slate-gray-6': '#9d9cad',
50
- 'slate-gray-7': '#b1b0c0',
51
- 'slate-gray-8': '#c4c4d0',
52
- 'slate-gray-9': '#d7d6e0',
53
- 'slate-gray-10': '#e8e8ee',
54
- 'slate-gray-11': '#fafafb',
55
-
56
- 'blue-0': '#060c16',
57
- 'blue-1': '#122443',
58
- 'blue-2': '#1f3c6f',
59
- 'blue-3': '#2e5397',
60
- 'blue-4': '#3e6aba',
61
- 'blue-5': '#5180d7',
62
- 'blue-6': '#6696ec',
63
- 'blue-7': '#7faaf9',
64
- 'blue-8': '#99beff',
65
- 'blue-9': '#b6d2ff',
66
- 'blue-10': '#d4e4ff',
67
- 'blue-11': '#f2f7ff',
68
-
69
- 'indigo-0': '#0d0a18',
70
- 'indigo-1': '#271f4b',
71
- 'indigo-2': '#41337b',
72
- 'indigo-3': '#5b48a6',
73
- 'indigo-4': '#735dcc',
74
- 'indigo-5': '#8a72ea',
75
- 'indigo-6': '#a088ff',
76
- 'indigo-7': '#b39eff',
77
- 'indigo-8': '#c6b3ff',
78
- 'indigo-9': '#d7c9ff',
79
- 'indigo-10': '#e8e0ff',
80
- 'indigo-11': '#f8f6ff',
81
-
82
- 'violet-0': '#160a1b',
83
- 'violet-1': '#3b1a47',
84
- 'violet-2': '#5e2a72',
85
- 'violet-3': '#7f3c98',
86
- 'violet-4': '#9d4eba',
87
- 'violet-5': '#b662d6',
88
- 'violet-6': '#cb77eb',
89
- 'violet-7': '#db8ef8',
90
- 'violet-8': '#e7a6ff',
91
- 'violet-9': '#f0c0ff',
92
- 'violet-10': '#f7daff',
93
- 'violet-11': '#fdf4ff',
94
-
95
- 'magenta-0': '#130811',
96
- 'magenta-1': '#381831',
97
- 'magenta-2': '#5c2850',
98
- 'magenta-3': '#803870',
99
- 'magenta-4': '#a4488f',
100
- 'magenta-5': '#c858af',
101
- 'magenta-6': '#db6ec3',
102
- 'magenta-7': '#e289ce',
103
- 'magenta-8': '#e8a4d9',
104
- 'magenta-9': '#efbfe4',
105
- 'magenta-10': '#f6daf0',
106
- 'magenta-11': '#fdf5fb',
107
-
108
- 'red-0': '#130707',
109
- 'red-1': '#3b1516',
110
- 'red-2': '#632325',
111
- 'red-3': '#8b3233',
112
- 'red-4': '#b34042',
113
- 'red-5': '#db4e51',
114
- 'red-6': '#f06467',
115
- 'red-7': '#f28183',
116
- 'red-8': '#f59d9f',
117
- 'red-9': '#f8babb',
118
- 'red-10': '#fbd7d7',
119
- 'red-11': '#fef3f3',
120
-
121
- 'red-orange-0': '#120705',
122
- 'red-orange-1': '#371410',
123
- 'red-orange-2': '#5c221a',
124
- 'red-orange-3': '#813025',
125
- 'red-orange-4': '#a63e2f',
126
- 'red-orange-5': '#cc4c3a',
127
- 'red-orange-6': '#e06150',
128
- 'red-orange-7': '#e67f70',
129
- 'red-orange-8': '#eb9c91',
130
- 'red-orange-9': '#f1b9b1',
131
- 'red-orange-10': '#f7d6d1',
132
- 'red-orange-11': '#fdf3f2',
133
-
134
- 'orange-0': '#201307',
135
- 'orange-1': '#43240f',
136
- 'orange-2': '#693612',
137
- 'orange-3': '#8f4812',
138
- 'orange-4': '#b05710',
139
- 'orange-5': '#d1660c',
140
- 'orange-6': '#f47603',
141
- 'orange-7': '#ff8f32',
142
- 'orange-8': '#ffa960',
143
- 'orange-9': '#ffc28c',
144
- 'orange-10': '#ffdab8',
145
- 'orange-11': '#fff2e7',
146
-
147
- 'yellow-0': '#000000',
148
- 'yellow-1': '#413b15',
149
- 'yellow-2': '#655c19',
150
- 'yellow-3': '#857a1a',
151
- 'yellow-4': '#a1941a',
152
- 'yellow-5': '#c0b017',
153
- 'yellow-6': '#eedb0b',
154
- 'yellow-7': '#feee45',
155
- 'yellow-8': '#fdf377',
156
- 'yellow-9': '#fdf8a2',
157
- 'yellow-10': '#fdfcca',
158
- 'yellow-11': '#fffff1',
159
-
160
- 'green-0': '#011409',
161
- 'green-1': '#0a311e',
162
- 'green-2': '#134d33',
163
- 'green-3': '#1b6846',
164
- 'green-4': '#238158',
165
- 'green-5': '#2b9968',
166
- 'green-6': '#34b379',
167
- 'green-7': '#45dc8f',
168
- 'green-8': '#58f19c',
169
- 'green-9': '#9ef4c4',
170
- 'green-10': '#c5f9dd',
171
- 'green-11': '#effff9',
172
-
173
- 'teal-0': '#080e0c',
174
- 'teal-1': '#152621',
175
- 'teal-2': '#1d3f35',
176
- 'teal-3': '#25594a',
177
- 'teal-4': '#2b7560',
178
- 'teal-5': '#309178',
179
- 'teal-6': '#48a98e',
180
- 'teal-7': '#6eb9a1',
181
- 'teal-8': '#90c9b6',
182
- 'teal-9': '#b0d8ca',
183
- 'teal-10': '#d0e8df',
184
- 'teal-11': '#f0f8f5',
185
-
186
- 'cyan-0': '#000000',
187
- 'cyan-1': '#132223',
188
- 'cyan-2': '#1b3f41',
189
- 'cyan-3': '#205e62',
190
- 'cyan-4': '#237f84',
191
- 'cyan-5': '#21a2a8',
192
- 'cyan-6': '#45bbc1',
193
- 'cyan-7': '#74c9cd',
194
- 'cyan-8': '#9ad6d9',
195
- 'cyan-9': '#bde4e6',
196
- 'cyan-10': '#def2f2',
197
- 'cyan-11': '#ffffff',
198
- },
199
- },
200
- fonts: {
201
- sans: 'Inter, system-ui, Avenir, Helvetica, Arial, sans-serif',
202
- },
203
- grid: {
204
- steps: 12,
205
- },
206
- spaceScale: {
207
- steps: 6,
208
- baseMin: 16,
209
- baseMax: 16,
210
- scaleMin: 'minor-third',
211
- scaleMax: 'minor-third',
212
- },
213
- typeScale: {
214
- steps: 6,
215
- baseMin: 16,
216
- baseMax: 16,
217
- scaleMin: 'minor-third',
218
- scaleMax: 'minor-third',
219
- },
220
- }