@deepgram/styles 0.1.4 → 0.2.0

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.
package/README.md CHANGED
@@ -36,24 +36,17 @@ For development or easier debugging:
36
36
  import "@deepgram/styles/expanded";
37
37
  ```
38
38
 
39
- ### Using with Tailwind CSS
39
+ ### Using with Tailwind CSS v4
40
40
 
41
- If you're using Tailwind CSS in your project, you can extend your configuration with the Deepgram theme:
41
+ If you're using Tailwind CSS v4 in your project, import the Deepgram theme CSS in your main stylesheet:
42
42
 
43
- ```javascript
44
- // tailwind.config.js
45
- const deepgramConfig = require("@deepgram/styles/tailwind-config");
46
-
47
- module.exports = {
48
- presets: [deepgramConfig],
49
- content: [
50
- "./src/**/*.{html,js,ts,jsx,tsx}",
51
- // your content paths
52
- ],
53
- // your customizations
54
- };
43
+ ```css
44
+ /* Import Deepgram theme (includes @import "tailwindcss") */
45
+ @import "@deepgram/styles/theme";
55
46
  ```
56
47
 
48
+ This provides all Deepgram design tokens (`--color-dg-*`, `--font-dg-*`, `--spacing-dg-*`, etc.), base styles, and custom utilities via Tailwind v4's CSS-first configuration.
49
+
57
50
  ### Importing Source Files
58
51
 
59
52
  To customize and build the styles yourself:
@@ -95,50 +95,50 @@ base:
95
95
  scrollBehavior: "smooth"
96
96
  body:
97
97
  properties:
98
- fontFamily: "theme(fontFamily.dg-sans)"
98
+ fontFamily: "var(--font-dg-sans)"
99
99
  WebkitFontSmoothing: "antialiased"
100
100
  MozOsxFontSmoothing: "grayscale"
101
- backgroundColor: "theme(colors.dg-background)"
102
- color: "theme(colors.dg-text)"
103
- lineHeight: "theme(lineHeight.normal)"
101
+ backgroundColor: "var(--color-dg-background)"
102
+ color: "var(--color-dg-text)"
103
+ lineHeight: "1.5"
104
104
  "h1, h2, h3, h4, h5, h6":
105
105
  properties:
106
- fontFamily: "theme(fontFamily.dg-noto)"
107
- fontWeight: "theme(fontWeight.bold)"
106
+ fontFamily: "var(--font-dg-noto)"
107
+ fontWeight: "700"
108
108
  h1:
109
109
  properties:
110
- fontSize: "theme(fontSize.4xl)"
110
+ fontSize: "var(--text-4xl)"
111
111
  media:
112
112
  "(min-width: 768px)":
113
113
  properties:
114
- fontSize: "theme(fontSize.5xl)"
114
+ fontSize: "var(--text-5xl)"
115
115
  h2:
116
116
  properties:
117
- fontSize: "theme(fontSize.3xl)"
117
+ fontSize: "var(--text-3xl)"
118
118
  media:
119
119
  "(min-width: 768px)":
120
120
  properties:
121
- fontSize: "theme(fontSize.4xl)"
121
+ fontSize: "var(--text-4xl)"
122
122
  h3:
123
123
  properties:
124
- fontSize: "theme(fontSize.2xl)"
124
+ fontSize: "var(--text-2xl)"
125
125
  media:
126
126
  "(min-width: 768px)":
127
127
  properties:
128
- fontSize: "theme(fontSize.3xl)"
128
+ fontSize: "var(--text-3xl)"
129
129
  h4:
130
130
  properties:
131
- fontSize: "theme(fontSize.xl)"
131
+ fontSize: "var(--text-xl)"
132
132
  media:
133
133
  "(min-width: 768px)":
134
134
  properties:
135
- fontSize: "theme(fontSize.2xl)"
135
+ fontSize: "var(--text-2xl)"
136
136
  "code, pre":
137
137
  properties:
138
- fontFamily: "theme(fontFamily.dg-mono)"
138
+ fontFamily: "var(--font-dg-mono)"
139
139
  a:
140
140
  properties:
141
- color: "theme(colors.dg-primary)"
141
+ color: "var(--color-dg-primary)"
142
142
  transitionProperty: "color"
143
143
  transitionDuration: "200ms"
144
144
  "&:hover":
@@ -204,7 +204,7 @@ components:
204
204
  primary:
205
205
  css:
206
206
  ".dg-btn--primary":
207
- apply: "border border-transparent relative dg-text-white dg-gradient-border dg-glow-cyan-green"
207
+ apply: "border border-transparent relative text-white dg-gradient-border dg-glow-cyan-green"
208
208
  ".dg-btn--primary:hover":
209
209
  apply: "border-transparent text-black dg-bg-reset bg-white dg-shadow-subtle"
210
210
  secondary:
@@ -212,19 +212,19 @@ components:
212
212
  ".dg-btn--secondary":
213
213
  apply: "border border-transparent bg-white text-black"
214
214
  ".dg-btn--secondary:hover":
215
- apply: "border border-white bg-black dg-text-white"
215
+ apply: "border border-white bg-black text-white"
216
216
  ghost:
217
217
  css:
218
218
  ".dg-btn--ghost":
219
- apply: "border border-dg-slate bg-transparent dg-text-white"
219
+ apply: "border border-dg-slate bg-transparent text-white"
220
220
  ".dg-btn--ghost:hover":
221
221
  apply: "border-transparent text-black dg-bg-reset bg-white dg-shadow-subtle"
222
222
  danger-ghost:
223
223
  css:
224
224
  ".dg-btn--danger-ghost":
225
- apply: "border border-dg-danger bg-transparent dg-text-white"
225
+ apply: "border border-dg-danger bg-transparent text-white"
226
226
  ".dg-btn--danger-ghost:hover":
227
- apply: "border-transparent bg-dg-danger dg-text-white"
227
+ apply: "border-transparent bg-dg-danger text-white"
228
228
  icon-only:
229
229
  css:
230
230
  ".dg-btn--icon-only":
@@ -788,7 +788,7 @@ components:
788
788
  properties:
789
789
  padding-top: "2rem"
790
790
  ".dg-section--fieldset .dg-section-heading":
791
- apply: "absolute bg-dg-background dg-text-muted uppercase tracking-wide font-semibold text-base px-2 m-0"
791
+ apply: "absolute bg-dg-background text-dg-muted uppercase tracking-wide font-semibold text-base px-2 m-0"
792
792
  properties:
793
793
  top: "-0.75rem"
794
794
  left: "1rem"
@@ -881,18 +881,18 @@ components:
881
881
  ".dg-card--selectable__indicator":
882
882
  apply: "hidden"
883
883
  ".dg-card--selectable__icon":
884
- apply: "dg-text-white"
884
+ apply: "text-white"
885
885
  properties:
886
886
  margin-right: "0.5rem"
887
887
  ".dg-card--selectable__content":
888
888
  apply: "flex-1 flex flex-col gap-1"
889
889
  ".dg-card--selectable .dg-item-title":
890
- apply: "text-base font-semibold dg-text-white"
890
+ apply: "text-base font-semibold text-white"
891
891
  properties:
892
892
  display: "flex"
893
893
  align-items: "center"
894
894
  ".dg-card--selectable .dg-prose":
895
- apply: "text-sm dg-text-muted"
895
+ apply: "text-sm text-dg-muted"
896
896
  media:
897
897
  "(max-width: 767px)":
898
898
  ".dg-card--selectable__content":
@@ -926,18 +926,18 @@ components:
926
926
  ".dg-card--file-upload input[type=\"file\"], .dg-card--file-upload input[type=\"checkbox\"]":
927
927
  apply: "sr-only"
928
928
  ".dg-card--file-upload__icon":
929
- apply: "dg-text-white"
929
+ apply: "text-white"
930
930
  properties:
931
931
  margin-right: "0.5rem"
932
932
  ".dg-card--file-upload__content":
933
933
  apply: "flex-1 flex flex-col gap-1"
934
934
  ".dg-card--file-upload .dg-item-title":
935
- apply: "text-base font-semibold dg-text-white"
935
+ apply: "text-base font-semibold text-white"
936
936
  properties:
937
937
  display: "flex"
938
938
  align-items: "center"
939
939
  ".dg-card--file-upload .dg-prose":
940
- apply: "text-sm dg-text-muted"
940
+ apply: "text-sm text-dg-muted"
941
941
  media:
942
942
  "(max-width: 767px)":
943
943
  ".dg-card--file-upload__content":
@@ -978,7 +978,7 @@ components:
978
978
  ".dg-card__icon":
979
979
  apply: "flex items-center p-3 pt-6"
980
980
  ".dg-card__icon i, .dg-card__icon svg":
981
- apply: "text-5xl dg-text-primary"
981
+ apply: "text-5xl text-dg-primary"
982
982
  ".dg-card__icon--left":
983
983
  apply: "justify-start"
984
984
  ".dg-card__icon--center":
@@ -1173,7 +1173,7 @@ components:
1173
1173
  properties:
1174
1174
  -webkit-overflow-scrolling: "touch"
1175
1175
  ".dg-code-block pre":
1176
- apply: "m-0 p-0 font-dg-mono text-xs dg-text-fog whitespace-pre-wrap break-words"
1176
+ apply: "m-0 p-0 font-dg-mono text-xs text-dg-fog whitespace-pre-wrap break-words"
1177
1177
  properties:
1178
1178
  line-height: "1.3"
1179
1179
  media:
@@ -1251,13 +1251,13 @@ components:
1251
1251
  background-color: "rgba(19, 239, 149, 0.1)"
1252
1252
  box-shadow: "0 0.25rem 0.75rem rgba(19, 239, 149, 0.15)"
1253
1253
  ".dg-hero__announcement-text":
1254
- apply: "dg-text-white text-sm font-normal whitespace-nowrap"
1254
+ apply: "text-white text-sm font-normal whitespace-nowrap"
1255
1255
  ".dg-hero__announcement-cta":
1256
- apply: "inline-flex items-center dg-text-secondary text-sm font-semibold gap-2 transition-[gap] duration-200"
1256
+ apply: "inline-flex items-center text-dg-secondary text-sm font-semibold gap-2 transition-[gap] duration-200"
1257
1257
  ".dg-hero__announcement:hover .dg-hero__announcement-cta":
1258
1258
  apply: "gap-3"
1259
1259
  ".dg-hero__body":
1260
- apply: "text-center dg-text-fog text-lg leading-7 font-normal mx-auto max-w-[53.125rem]"
1260
+ apply: "text-center text-dg-fog text-lg leading-7 font-normal mx-auto max-w-[53.125rem]"
1261
1261
  ".dg-hero__actions":
1262
1262
  apply: "flex items-center justify-center flex-wrap gap-4 mt-2"
1263
1263
  media:
@@ -1404,9 +1404,9 @@ components:
1404
1404
  tags: [heading, section, title]
1405
1405
  css:
1406
1406
  ".dg-section-heading":
1407
- apply: "font-semibold font-dg-noto text-2xl dg-text-white mb-6 flex flex-wrap items-baseline gap-2"
1407
+ apply: "font-semibold font-dg-noto text-2xl text-white mb-6 flex flex-wrap items-baseline gap-2"
1408
1408
  ".dg-section-heading small":
1409
- apply: "font-normal text-base dg-text-muted"
1409
+ apply: "font-normal text-base text-dg-muted"
1410
1410
  media:
1411
1411
  "(max-width: 640px)":
1412
1412
  ".dg-section-heading":
@@ -1444,9 +1444,9 @@ components:
1444
1444
  ".dg-page-heading":
1445
1445
  apply: "mb-8"
1446
1446
  ".dg-page-heading__title":
1447
- apply: "font-semibold font-dg-noto text-4xl dg-text-white mb-2 leading-tight"
1447
+ apply: "font-semibold font-dg-noto text-4xl text-white mb-2 leading-tight"
1448
1448
  ".dg-page-heading__description":
1449
- apply: "dg-text-muted text-lg leading-relaxed m-0 max-w-[65ch]"
1449
+ apply: "text-dg-muted text-lg leading-relaxed m-0 max-w-[65ch]"
1450
1450
  media:
1451
1451
  "(max-width: 768px)":
1452
1452
  ".dg-page-heading__title":
@@ -1499,9 +1499,9 @@ components:
1499
1499
  tags: [heading, card, title]
1500
1500
  css:
1501
1501
  ".dg-card-heading":
1502
- apply: "font-medium font-dg-noto text-xl dg-text-white mb-3 flex flex-wrap items-baseline gap-1.5"
1502
+ apply: "font-medium font-dg-noto text-xl text-white mb-3 flex flex-wrap items-baseline gap-1.5"
1503
1503
  ".dg-card-heading small":
1504
- apply: "font-normal text-sm dg-text-muted"
1504
+ apply: "font-normal text-sm text-dg-muted"
1505
1505
  examples:
1506
1506
  - title: "Card Heading"
1507
1507
  ast:
@@ -1521,9 +1521,9 @@ components:
1521
1521
  tags: [heading, item, title]
1522
1522
  css:
1523
1523
  ".dg-item-title":
1524
- apply: "font-medium font-dg-noto text-base dg-text-white mb-1 flex flex-wrap items-baseline gap-1"
1524
+ apply: "font-medium font-dg-noto text-base text-white mb-1 flex flex-wrap items-baseline gap-1"
1525
1525
  ".dg-item-title small":
1526
- apply: "font-normal text-xs dg-text-muted"
1526
+ apply: "font-normal text-xs text-dg-muted"
1527
1527
  examples:
1528
1528
  - title: "Item Title"
1529
1529
  ast:
@@ -1546,7 +1546,7 @@ components:
1546
1546
  tags: [text, prose, body, paragraph]
1547
1547
  css:
1548
1548
  ".dg-prose":
1549
- apply: "w-full dg-text-fog text-sm leading-snug mb-3"
1549
+ apply: "w-full text-dg-fog text-sm leading-snug mb-3"
1550
1550
  ".dg-prose.dg-prose--block":
1551
1551
  apply: "max-w-none w-full"
1552
1552
  media:
@@ -1568,7 +1568,7 @@ components:
1568
1568
  small:
1569
1569
  css:
1570
1570
  ".dg-prose--small":
1571
- apply: "text-xs dg-text-muted"
1571
+ apply: "text-xs text-dg-muted"
1572
1572
  media:
1573
1573
  "(min-width: 640px)":
1574
1574
  ".dg-prose--small":
@@ -1595,15 +1595,15 @@ components:
1595
1595
  tags: [input, text, form, field, label]
1596
1596
  css:
1597
1597
  ".dg-input":
1598
- apply: "w-full px-4 py-3 rounded border border-dg-pebble bg-dg-charcoal dg-text-white font-dg-sans text-sm outline-none transition-all duration-300 shadow-dg-sm"
1598
+ apply: "w-full px-4 py-3 rounded border border-dg-pebble bg-dg-charcoal text-white font-dg-sans text-sm outline-none transition-all duration-300 shadow-dg-sm"
1599
1599
  properties:
1600
1600
  height: "2.75rem"
1601
1601
  ".dg-input::placeholder":
1602
- apply: "dg-text-muted"
1602
+ apply: "text-dg-muted"
1603
1603
  ".dg-input:focus":
1604
1604
  apply: "border-dg-primary"
1605
1605
  properties:
1606
- box-shadow: "0 0 0 0.0625rem theme(colors.dg-primary)"
1606
+ box-shadow: "0 0 0 0.0625rem var(--color-dg-primary)"
1607
1607
  ".dg-input:disabled":
1608
1608
  apply: "opacity-50 cursor-not-allowed"
1609
1609
  variants:
@@ -1695,7 +1695,7 @@ components:
1695
1695
  tags: [textarea, input, form]
1696
1696
  css:
1697
1697
  ".dg-textarea":
1698
- apply: "dg-input"
1698
+ apply: "w-full px-4 py-3 rounded border border-dg-pebble bg-dg-charcoal text-white font-dg-sans text-sm outline-none transition-all duration-300 shadow-dg-sm"
1699
1699
  properties:
1700
1700
  min-height: "6.25rem"
1701
1701
  resize: "vertical"
@@ -1746,9 +1746,9 @@ components:
1746
1746
  ".dg-checkbox:focus":
1747
1747
  apply: "outline-none"
1748
1748
  properties:
1749
- box-shadow: "0 0 0 0.125rem theme(colors.dg-primary/50)"
1749
+ box-shadow: "0 0 0 0.125rem color-mix(in srgb, var(--color-dg-primary) 50%, transparent)"
1750
1750
  ".dg-checkbox-label":
1751
- apply: "flex items-start gap-2 cursor-pointer text-sm dg-text-fog"
1751
+ apply: "flex items-start gap-2 cursor-pointer text-sm text-dg-fog"
1752
1752
  ".dg-checkbox-label:hover .dg-checkbox":
1753
1753
  apply: "border-dg-slate"
1754
1754
  ".dg-checkbox-description":
@@ -1808,19 +1808,19 @@ components:
1808
1808
  ".dg-form-field--error .dg-input, .dg-form-field--error .dg-textarea":
1809
1809
  apply: "border-dg-danger"
1810
1810
  ".dg-form-field--error .dg-form-helper":
1811
- apply: "dg-text-danger"
1811
+ apply: "text-dg-danger"
1812
1812
  ".dg-form-field--success .dg-input, .dg-form-field--success .dg-textarea":
1813
1813
  apply: "border-dg-success"
1814
1814
  ".dg-form-field--success .dg-form-helper":
1815
- apply: "dg-text-success"
1815
+ apply: "text-dg-success"
1816
1816
  ".dg-form-label":
1817
- apply: "text-sm font-medium dg-text-white"
1817
+ apply: "text-sm font-medium text-white"
1818
1818
  ".dg-form-error":
1819
- apply: "text-xs dg-text-danger block"
1819
+ apply: "text-xs text-dg-danger block"
1820
1820
  properties:
1821
1821
  margin: "0"
1822
1822
  ".dg-form-helper":
1823
- apply: "text-xs dg-text-muted block"
1823
+ apply: "text-xs text-dg-muted block"
1824
1824
  properties:
1825
1825
  margin: "0"
1826
1826
  media:
@@ -1866,13 +1866,13 @@ components:
1866
1866
  ".dg-drag-drop-zone__input":
1867
1867
  apply: "absolute inset-0 w-full h-full opacity-0 cursor-pointer"
1868
1868
  ".dg-drag-drop-zone__icon":
1869
- apply: "text-5xl dg-text-muted"
1869
+ apply: "text-5xl text-dg-muted"
1870
1870
  ".dg-drag-drop-zone:hover .dg-drag-drop-zone__icon":
1871
- apply: "dg-text-primary"
1871
+ apply: "text-dg-primary"
1872
1872
  ".dg-drag-drop-zone__text":
1873
- apply: "text-base dg-text-white font-medium"
1873
+ apply: "text-base text-white font-medium"
1874
1874
  ".dg-drag-drop-zone__hint":
1875
- apply: "text-sm dg-text-muted"
1875
+ apply: "text-sm text-dg-muted"
1876
1876
  examples:
1877
1877
  - title: "File Upload Zone"
1878
1878
  ast:
@@ -1911,7 +1911,7 @@ components:
1911
1911
  tags: [alert, status, notification, banner]
1912
1912
  css:
1913
1913
  ".dg-status":
1914
- apply: "w-full italic dg-text-fog text-sm leading-snug py-1 my-2"
1914
+ apply: "w-full italic text-dg-fog text-sm leading-snug py-1 my-2"
1915
1915
  media:
1916
1916
  "(min-width: 640px)":
1917
1917
  ".dg-status":
@@ -1920,27 +1920,27 @@ components:
1920
1920
  info:
1921
1921
  css:
1922
1922
  ".dg-status--info":
1923
- apply: "dg-text-fog"
1923
+ apply: "text-dg-fog"
1924
1924
  success:
1925
1925
  css:
1926
1926
  ".dg-status--success":
1927
- apply: "dg-text-success"
1927
+ apply: "text-dg-success"
1928
1928
  warning:
1929
1929
  css:
1930
1930
  ".dg-status--warning":
1931
- apply: "dg-text-warning"
1931
+ apply: "text-dg-warning"
1932
1932
  error:
1933
1933
  css:
1934
1934
  ".dg-status--error":
1935
- apply: "dg-text-danger"
1935
+ apply: "text-dg-danger"
1936
1936
  primary:
1937
1937
  css:
1938
1938
  ".dg-status--primary":
1939
- apply: "dg-text-primary"
1939
+ apply: "text-dg-primary"
1940
1940
  secondary:
1941
1941
  css:
1942
1942
  ".dg-status--secondary":
1943
- apply: "dg-text-secondary"
1943
+ apply: "text-dg-secondary"
1944
1944
  with-icon:
1945
1945
  css:
1946
1946
  ".dg-status--with-icon":
@@ -1997,7 +1997,7 @@ components:
1997
1997
  ".dg-spinner":
1998
1998
  apply: "rounded-full size-10 border-[3px] border-dg-pebble border-t-dg-primary mx-auto mb-3 animate-spin"
1999
1999
  ".dg-processing-title":
2000
- apply: "font-medium font-dg-noto text-xl dg-text-white mb-1"
2000
+ apply: "font-medium font-dg-noto text-xl text-white mb-1"
2001
2001
  examples:
2002
2002
  - title: "Spinner"
2003
2003
  ast:
@@ -2263,7 +2263,7 @@ components:
2263
2263
  ".dg-header__logo-image":
2264
2264
  apply: "h-8 w-auto"
2265
2265
  ".dg-header__logo-text":
2266
- apply: "font-dg-noto font-bold text-xl dg-text-white"
2266
+ apply: "font-dg-noto font-bold text-xl text-white"
2267
2267
  ".dg-header__nav":
2268
2268
  apply: "flex items-center gap-4"
2269
2269
  ".dg-header__profile-link":
@@ -2409,13 +2409,13 @@ components:
2409
2409
  tags: [link, navigation]
2410
2410
  css:
2411
2411
  ".dg-link":
2412
- apply: "dg-text-primary transition-opacity duration-200"
2412
+ apply: "text-dg-primary transition-opacity duration-200"
2413
2413
  ".dg-link:hover":
2414
2414
  apply: "opacity-80"
2415
2415
  ".dg-social-link":
2416
- apply: "dg-text-fog transition-colors duration-200 text-xl"
2416
+ apply: "text-dg-fog transition-colors duration-200 text-xl"
2417
2417
  ".dg-social-link:hover":
2418
- apply: "dg-text-primary"
2418
+ apply: "text-dg-primary"
2419
2419
  examples:
2420
2420
  - title: "Link"
2421
2421
  ast:
@@ -2457,15 +2457,15 @@ components:
2457
2457
  ".dg-text-white":
2458
2458
  apply: "text-white"
2459
2459
  ".dg-text-tagline":
2460
- apply: "text-center dg-text-fog text-sm"
2460
+ apply: "text-center text-dg-fog text-sm"
2461
2461
  ".dg-text-subtitle":
2462
- apply: "dg-text-fog text-sm"
2462
+ apply: "text-dg-fog text-sm"
2463
2463
  ".dg-text-heading":
2464
- apply: "dg-text-white text-base font-medium"
2464
+ apply: "text-white text-base font-medium"
2465
2465
  ".dg-text-heading--with-margin":
2466
- apply: "dg-text-white text-base font-medium mb-1"
2466
+ apply: "text-white text-base font-medium mb-1"
2467
2467
  ".dg-text-legal":
2468
- apply: "text-xs dg-text-muted text-center"
2468
+ apply: "text-xs text-dg-muted text-center"
2469
2469
  examples:
2470
2470
  - title: "Text Colors"
2471
2471
  ast: