@smartyweb/ui 1.3.0 → 1.3.2

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
@@ -2,65 +2,22 @@
2
2
 
3
3
  Shared React component library consumed by multiple Next.js microservices via private npm.
4
4
 
5
- ## Stack
6
-
7
- - React 19, TypeScript, SCSS Modules
8
- - Vite (outputs ESM + CJS + types to `dist/`)
9
- - Storybook v10 for component development and documentation
10
- - Changesets for versioning and changelogs
11
- - Style Dictionary v4 for design token transformation
12
-
13
- ## Getting Started
14
-
15
- ```bash
16
- npm install
17
- ```
18
-
19
- ### Development
20
-
21
- ```bash
22
- npm run storybook
23
- ```
24
-
25
- This also runs `node sd.config.js` first to generate CSS tokens from `tokens.json`.
26
-
27
- ### Build
28
-
29
- ```bash
30
- npm run build
31
- ```
32
-
33
- ### Tokens only
34
-
35
- ```bash
36
- npm run tokens
37
- ```
38
-
39
- Regenerates `src/styles/_tokens.generated.scss` from `tokens.json` without building or starting Storybook.
40
-
41
- ## Usage
42
-
43
- Install the package in your consuming app:
5
+ ## Installation
44
6
 
45
7
  ```bash
46
8
  npm install @smartyweb/ui
47
9
  ```
48
10
 
49
- Import styles once in your app's entry point:
11
+ Requires **React 19** (a peer dependency). Import the stylesheet once in your app's entry point, then import components:
50
12
 
51
13
  ```js
52
14
  import "@smartyweb/ui/styles.css";
53
- ```
54
-
55
- Then import components:
56
-
57
- ```js
58
- import { H1, Paragraph } from "@smartyweb/ui";
15
+ import { H1, Button } from "@smartyweb/ui";
59
16
  ```
60
17
 
61
18
  ### Font Setup
62
19
 
63
- This library does not bundle fonts. Consumers are responsible for loading fonts and exposing them as CSS custom properties. The library reads these three variables:
20
+ This library does not bundle fonts. Consumers load fonts and expose them as CSS custom properties. The library reads these three variables:
64
21
 
65
22
  | CSS variable | Font | Used by |
66
23
  | ------------------- | ------------ | --------------------------------- |
@@ -82,9 +39,11 @@ const ttHovesPro = localFont({
82
39
  export default function RootLayout({ children }) {
83
40
  return (
84
41
  <html className={ttHovesPro.variable}>
85
- <body style={{
86
- "--ui-font-primary": "var(--font-tthoves, 'TT Hoves Pro', system-ui, sans-serif)",
87
- }}>
42
+ <body
43
+ style={{
44
+ "--ui-font-primary": "var(--font-tthoves, 'TT Hoves Pro', system-ui, sans-serif)",
45
+ }}
46
+ >
88
47
  {children}
89
48
  </body>
90
49
  </html>
@@ -94,152 +53,25 @@ export default function RootLayout({ children }) {
94
53
 
95
54
  If a variable is not set, components fall back to `system-ui` (headings/body) or `monospace` (code).
96
55
 
97
- ## Project Structure
98
-
99
- ```
100
- sd.config.js # Style Dictionary config — tokens.json → _tokens.generated.scss
101
- tokens.json # Designer-owned, synced from Tokens Studio (Figma plugin)
102
- src/
103
- text/
104
- ComponentName/
105
- ComponentName.tsx # "use client" at top
106
- ComponentName.module.scss # uses var(--token-*) CSS custom properties
107
- ComponentName.stories.tsx
108
- index.ts # named export
109
- index.ts # barrel export
110
- styles/
111
- _variables.scss # SCSS variables (fonts, weights, breakpoints, font-feature-settings)
112
- _tokens.generated.scss # Auto-generated by sd.config.js — do not edit manually
113
- global.scss
114
- index.ts # main entry point
115
- ```
116
-
117
- ## Publishing
118
-
119
- This package uses [Changesets](https://github.com/changesets/changesets) for versioning and changelog management.
120
-
121
- ### Semver policy
122
-
123
- | Change type | Bump |
124
- | -------------------------------------------------------------------------- | ------- |
125
- | Token value changes (e.g. heading size goes from 64px → 60px) | `patch` |
126
- | New CSS custom property names added (new tokens consumers could reference) | `minor` |
127
- | New components added | `minor` |
128
- | Removed components, renamed props, or changed component API | `major` |
129
-
130
- Visual changes (token values) are always `patch` — semver communicates API stability, not pixel perfection.
131
-
132
- ### Step 1 — On your feature branch
133
-
134
- Create a changeset to describe the change and bump type:
135
-
136
- ```bash
137
- npm run changeset
138
- ```
139
-
140
- This opens an interactive prompt:
56
+ ## Developing this library
141
57
 
142
- 1. **Which packages changed?** — select `@smartyweb/ui`
143
- 2. **Bump type?** — see semver policy above
144
- 3. **Summary?** — plain English description (goes into the changelog)
58
+ **This is a skills-driven codebase — for any repeatable task, reach for a skill (or author one) rather than doing it by hand.** Skills are verified, step-by-step walkthroughs that encode our process; run one by typing its slash command in Claude Code.
145
59
 
146
- Then apply the version bump immediately on the same branch:
60
+ <!-- When you add or remove a skill, update this catalog. -->
147
61
 
148
- ```bash
149
- npm run version # bumps package.json and updates CHANGELOG.md
150
- ```
62
+ | Skill | What it does |
63
+ | ------------------ | ------------------------------------------------------------------------------ |
64
+ | `/validate-tokens` | Validate a Tokens Studio sync end-to-end — drift, math, Figma source-of-truth. |
65
+ | `/version-up` | Cut a new version with changesets (bump, changelog, release prep). |
66
+ | `/commit-push` | Commit and push all changes with a summary commit message. |
151
67
 
152
- Commit everything and push:
68
+ Local commands, for the times you do need to run something by hand:
153
69
 
154
70
  ```bash
155
- git add .
156
- git commit -m "chore: version bump"
157
- git push
71
+ npm install # install dependencies
72
+ npm run storybook # generate tokens, then run Storybook (component workbench)
73
+ npm run build # generate tokens, then build to dist/
74
+ npm run tokens # regenerate src/styles/_tokens.generated.scss from tokens.json
158
75
  ```
159
76
 
160
- ### Step 2 — Open a PR and merge to master
161
-
162
- Open a PR from your feature branch → `master` on Bitbucket. The PR will include both your code changes and the version bump. Get it reviewed and merged.
163
-
164
- ### Step 3 — Publish to npm (automated)
165
-
166
- Publishing happens automatically when the PR merges to `master`. Bitbucket Pipelines runs the build and `npm run release` (`changeset publish`), then pushes the git tags.
167
-
168
- No manual action needed after merge.
169
-
170
- <details>
171
- <summary>Manual publish (if running outside CI)</summary>
172
-
173
- ```bash
174
- git checkout master && git pull
175
- npm run build
176
- export NPM_TOKEN=<your-token>
177
- npm run release # runs `changeset publish` → publishes to npm and creates git tags
178
- git push --tags
179
- ```
180
-
181
- </details>
182
-
183
- ### CI Setup (one-time)
184
-
185
- Two secured repository variables must be configured under **Bitbucket repo → Settings → Pipelines → Repository variables**:
186
-
187
- | Variable | Where to get it |
188
- | ----------------- | ------------------------------------------------------------- |
189
- | `NPM_TOKEN` | npmjs.org → Account → Access Tokens → type: "Automation" |
190
- | `BITBUCKET_TOKEN` | Bitbucket repo → Settings → Access tokens (Repository: Write) |
191
-
192
- Mark both as **Secured** so they are masked in logs.
193
-
194
- ## Design Tokens
195
-
196
- Design tokens flow from Figma → code via this pipeline:
197
-
198
- 1. **Designer** makes changes in Tokens Studio (Figma plugin) and syncs to the `design/tokens-update` branch
199
- 2. **CI** (Bitbucket Pipelines) runs `npm run tokens` on push, regenerates `src/styles/_tokens.generated.scss`, and commits the diff automatically
200
- 3. **Developer** opens a PR from `design/tokens-update` → `master`, runs `npx changeset add` on the branch, and merges after review
201
- 4. **Build** on `master` picks up the updated tokens and publishes a new npm version
202
-
203
- ### Reviewing a token PR
204
-
205
- When reviewing a `design/tokens-update` PR, check:
206
-
207
- - The `_tokens.generated.scss` diff — values should match the designer's intent in Figma
208
- - Spot-check affected components in Storybook (deployed on Vercel, or run `npm run storybook` locally)
209
- - Confirm a changeset file is present in `.changeset/` before merging
210
-
211
- A changeset must be committed to the branch before the PR is merged. The developer opening the PR is responsible for this — the pipeline cannot do it automatically because bump type and description require human input.
212
-
213
- `sd.config.js` reads only the `Responsive/Desktop`, `Responsive/Tablet`, and `Responsive/Mobile` token sets, outputting ~99 CSS custom properties like:
214
-
215
- ```css
216
- :root {
217
- --h1-desktop-font-size: 64px;
218
- --h1-desktop-line-height: 64px;
219
- --h1-desktop-letter-spacing: -0.02em;
220
- /* ... */
221
- }
222
- ```
223
-
224
- Text components consume these via `var(--{component}-{breakpoint}-{property})`. Font families, weights, and OpenType feature settings remain as SCSS variables in `_variables.scss`.
225
-
226
- Note: tablet CSS custom properties are generated but components intentionally do not use them. Components apply desktop values down to 768px, then switch to mobile. Tablet tokens are kept in `tokens.json` as source data for the planned fluid typography migration (see Roadmap).
227
-
228
- ## Roadmap
229
-
230
- ### Fluid typography
231
-
232
- The current breakpoint approach (desktop / mobile with a hard switch at 768px) will be replaced with fluid typography using CSS `clamp()`. The desktop and mobile token values will become the max and min of the clamp range respectively, scaling continuously across the viewport.
233
-
234
- The planned implementation: Style Dictionary computes the `clamp()` formula at build time (it has access to the raw numbers), outputting a single token per property (e.g. `--h1-font-size: clamp(44px, ..., 64px)`) instead of the current per-breakpoint triplets. Component SCSS becomes a single `font-size: var(--h1-font-size)` with no media queries.
235
-
236
- The tablet token set in `tokens.json` will be retired from the Style Dictionary transform when this ships.
237
-
238
- ## Architecture
239
-
240
- - **Component library only** — no routing, no pages, no app logic.
241
- - **All components include `"use client"`** for compatibility with Next.js App Router and Pages Router.
242
- - **CSS is compiled to a single file at build time.** No runtime CSS injection.
243
- - **React is a peerDependency**, not bundled.
244
- - **Stories are co-located with components.**
245
- - **`_tokens.generated.scss` is committed** so token changes are visible in PR diffs, but never edit it manually — always regenerate via `npm run tokens`.
77
+ For how the codebase is laid out and why it's built this way, see [`CLAUDE.md`](./CLAUDE.md), [`docs/PRINCIPLES.md`](./docs/PRINCIPLES.md), and the decision records in [`docs/adr/`](./docs/adr).
@@ -1,10 +1,10 @@
1
1
  import { default as React } from 'react';
2
- type SharedProps = {
2
+ interface SharedProps {
3
3
  variant?: "primary" | "secondary" | "negative";
4
4
  size?: "default" | "sm";
5
5
  onClick?: React.MouseEventHandler;
6
6
  children?: React.ReactNode;
7
- };
7
+ }
8
8
  type AsButton = SharedProps & {
9
9
  as?: "button";
10
10
  type?: "button" | "submit" | "reset";
@@ -1,10 +1,10 @@
1
1
  import { default as React } from 'react';
2
- type SharedProps = {
2
+ interface SharedProps {
3
3
  variant?: "default" | "negative";
4
4
  background?: "light" | "dark";
5
5
  onClick?: React.MouseEventHandler;
6
6
  children?: React.ReactNode;
7
- };
7
+ }
8
8
  type AsAnchor = SharedProps & {
9
9
  as?: "a";
10
10
  href: string;
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),m="_h1_1765w_1",y={h1:m};function h({children:t,className:s}){return o.jsx("h1",{className:`${y.h1}${s?` ${s}`:""}`,children:t})}const d="_button_hxesz_1",x="_sm_hxesz_26",b="_primary_hxesz_33",f="_secondary_hxesz_49",g="_negative_hxesz_68",e={button:d,sm:x,primary:b,secondary:f,negative:g};function v({as:t="button",variant:s="primary",size:r="default",href:a,openInNewTab:n,disabled:c,type:_,onClick:i,children:u}){const l=[e.button,e[s],r==="sm"&&e.sm].filter(Boolean).join(" ");return o.jsx(t,{className:l,href:a,target:n?"_blank":void 0,rel:n?"noopener noreferrer":void 0,disabled:c,type:_,onClick:i,children:u})}exports.Button=v;exports.H1=h;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),m="_h1_1765w_1",d={h1:m};function g({children:t,className:s}){const e=[d.h1,s].filter(Boolean).join(" ");return r.jsx("h1",{className:e,children:t})}const y="_button_dg3ri_1",b="_sm_dg3ri_26",f="_primary_dg3ri_33",j="_secondary_dg3ri_49",v="_negative_dg3ri_68",n={button:y,sm:b,primary:f,secondary:j,negative:v};function h({as:t="button",variant:s="primary",size:e="default",href:a,openInNewTab:o,disabled:c,type:i,onClick:l,children:_}){const u=[n.button,n[s],e==="sm"&&n.sm].filter(Boolean).join(" ");return r.jsx(t,{className:u,href:a,target:o?"_blank":void 0,rel:o?"noopener noreferrer":void 0,disabled:c,type:i,onClick:l,children:_})}exports.Button=h;exports.H1=g;
package/dist/index.js CHANGED
@@ -1,44 +1,46 @@
1
- import { jsx as o } from "react/jsx-runtime";
2
- const u = "_h1_1765w_1", h = {
1
+ "use client";
2
+ import { jsx as r } from "react/jsx-runtime";
3
+ const u = "_h1_1765w_1", d = {
3
4
  h1: u
4
5
  };
5
- function z({ children: t, className: s }) {
6
- return /* @__PURE__ */ o("h1", { className: `${h.h1}${s ? ` ${s}` : ""}`, children: t });
6
+ function j({ children: s, className: t }) {
7
+ const n = [d.h1, t].filter(Boolean).join(" ");
8
+ return /* @__PURE__ */ r("h1", { className: n, children: s });
7
9
  }
8
- const y = "_button_hxesz_1", x = "_sm_hxesz_26", d = "_primary_hxesz_33", f = "_secondary_hxesz_49", p = "_negative_hxesz_68", n = {
9
- button: y,
10
- sm: x,
11
- primary: d,
12
- secondary: f,
13
- negative: p
10
+ const g = "_button_dg3ri_1", y = "_sm_dg3ri_26", f = "_primary_dg3ri_33", p = "_secondary_dg3ri_49", b = "_negative_dg3ri_68", o = {
11
+ button: g,
12
+ sm: y,
13
+ primary: f,
14
+ secondary: p,
15
+ negative: b
14
16
  };
15
- function g({
16
- as: t = "button",
17
- variant: s = "primary",
18
- size: r = "default",
17
+ function B({
18
+ as: s = "button",
19
+ variant: t = "primary",
20
+ size: n = "default",
19
21
  href: a,
20
22
  openInNewTab: e,
21
23
  disabled: c,
22
- type: _,
23
- onClick: i,
24
- children: m
24
+ type: i,
25
+ onClick: _,
26
+ children: l
25
27
  }) {
26
- const l = [n.button, n[s], r === "sm" && n.sm].filter(Boolean).join(" ");
27
- return /* @__PURE__ */ o(
28
- t,
28
+ const m = [o.button, o[t], n === "sm" && o.sm].filter(Boolean).join(" ");
29
+ return /* @__PURE__ */ r(
30
+ s,
29
31
  {
30
- className: l,
32
+ className: m,
31
33
  href: a,
32
34
  target: e ? "_blank" : void 0,
33
35
  rel: e ? "noopener noreferrer" : void 0,
34
36
  disabled: c,
35
- type: _,
36
- onClick: i,
37
- children: m
37
+ type: i,
38
+ onClick: _,
39
+ children: l
38
40
  }
39
41
  );
40
42
  }
41
43
  export {
42
- g as Button,
43
- z as H1
44
+ B as Button,
45
+ j as H1
44
46
  };
package/dist/ui.css CHANGED
@@ -1 +1 @@
1
- :root{--font-desktop-heading: TT Hoves Pro;--font-desktop-paragraph: TT Hoves Pro;--font-desktop-buttons: Inter;--font-desktop-body: Inter;--font-desktop-caption: Inter;--font-desktop-code: Hack;--font-desktop-bodyinter: Inter;--font-desktop-bodytthoves: TT Hoves Pro;--font-desktop-numbers: TT Hoves Pro;--h-extra-desktop-letter-spacing: -.03em;--h-extra-desktop-line-height: 6.625rem;--h-extra-desktop-font-size: 6rem;--h1-desktop-letter-spacing: -.02em;--h1-desktop-line-height: 4rem;--h1-desktop-font-size: 4rem;--h2-desktop-letter-spacing: -.02em;--h2-desktop-line-height: 3.5625rem;--h2-desktop-font-size: 3.25rem;--h3-desktop-letter-spacing: -.02em;--h3-desktop-line-height: 3rem;--h3-desktop-font-size: 2.75rem;--h4-desktop-letter-spacing: -.01em;--h4-desktop-line-height: 2.6875rem;--h4-desktop-font-size: 2.25rem;--h6-desktop-letter-spacing: -.01em;--h6-desktop-line-height: 1.9375rem;--h6-desktop-font-size: 1.75rem;--h5-desktop-line-height: 2.0625rem;--h5-desktop-letter-spacing: -.01em;--h5-desktop-font-size: 1.875rem;--paragraph-desktop-letter-spacing: -.01em;--paragraph-desktop-line-height: 2.25rem;--paragraph-desktop-font-size: 1.5rem;--body-small-desktop-letter-spacing: -.01em;--body-small-desktop-line-height: 1.25rem;--body-small-desktop-font-size: .875rem;--caption-large-desktop-letter-spacing: -.01em;--caption-large-desktop-line-height: 1.5rem;--caption-large-desktop-font-size: 1rem;--caption-medium-desktop-line-height: 1.125rem;--caption-medium-desktop-letter-spacing: -.02em;--caption-medium-desktop-font-size: .75rem;--code-desktop-letter-spacing: 0;--code-desktop-line-height: 1.5625rem;--code-desktop-font-size: 1.125rem;--caption-uppercase-desktop-letter-spacing: .04em;--caption-uppercase-desktop-line-height: 1rem;--caption-uppercase-desktop-font-size: .8125rem;--body-large-desktop-letter-spacing: -.02em;--body-large-desktop-line-height: 1.875rem;--body-large-desktop-font-size: 1.25rem;--button-small-desktop-line-height: 1.5rem;--button-small-desktop-letter-spacing: -.02em;--button-small-desktop-font-size: 1.0625rem;--button-large-desktop-letter-spacing: -.02em;--button-large-desktop-line-height: 1.5rem;--button-large-desktop-font-size: 1.25rem;--captionsm-desktop-line-height: 1.125rem;--captionsm-desktop-letter-spacing: -.02em;--captionsm-desktop-font-size: .75rem;--bodylginter-desktop-letter-spacing: -.02em;--bodylginter-desktop-line-height: 1.875rem;--bodylginter-desktop-font-size: 1.25rem;--buttonsm-desktop-line-height: 1.5rem;--buttonsm-desktop-letter-spacing: -.01em;--buttonsm-desktop-font-size: .875rem;--buttonlg-desktop-letter-spacing: -.02em;--buttonlg-desktop-line-height: 1.5rem;--buttonlg-desktop-font-size: 1.25rem;--h7-desktop-font-size: 1.5rem;--h7-desktop-letter-spacing: -.01em;--h7-desktop-line-height: 1.75rem;--buttonmd-desktop-font-size: 1.0625rem;--buttonmd-desktop-line-height: 1.5rem;--buttonmd-desktop-letter-spacing: -.02em;--bodymdtthoves-desktop-letter-spacing: -.01em;--bodymdtthoves-desktop-font-size: 1rem;--bodymdtthoves-desktop-line-height: 1.375rem;--bodylgtthoves-desktop-font-size: 1.125rem;--bodylgtthoves-desktop-line-height: 1.5rem;--bodylgtthoves-desktop-letter-spacing: -.01em;--numbers-desktop-line-height: 1.375rem;--numbers-desktop-letter-spacing: .04em;--numbers-desktop-font-size: 1rem;--bodymdinter-desktop-letter-spacing: -.02em;--bodymdinter-desktop-font-size: 1rem;--bodymdinter-desktop-line-height: 1.5rem;--captionsmbold-desktop-font-size: .75rem;--captionsmbold-desktop-line-height: 1rem;--captionsmbold-desktop-letter-spacing: -.01em;--font-tablet-heading: TT Hoves Pro;--font-tablet-paragraph: TT Hoves Pro;--font-tablet-buttons: Inter;--font-tablet-body: Inter;--font-tablet-caption: Inter;--font-tablet-code: Hack;--font-tablet-bodyinter: Inter;--font-tablet-bodytthoves: TT Hoves Pro;--font-tablet-numbers: TT Hoves Pro;--h-extra-tablet-letter-spacing: -.03em;--h-extra-tablet-line-height: 7.5625rem;--h-extra-tablet-font-size: 6.875rem;--h1-tablet-letter-spacing: -.02em;--h1-tablet-line-height: 4.4rem;--h1-tablet-font-size: 4rem;--h2-tablet-letter-spacing: -.02em;--h2-tablet-line-height: 3.3125rem;--h2-tablet-font-size: 3rem;--h3-tablet-letter-spacing: -.02em;--h3-tablet-line-height: 2.75rem;--h3-tablet-font-size: 2.5rem;--h4-tablet-letter-spacing: -.02em;--h4-tablet-line-height: 2.6875rem;--h4-tablet-font-size: 2.25rem;--h6-tablet-letter-spacing: -.01em;--h6-tablet-line-height: 1.625rem;--h6-tablet-font-size: 1.5rem;--h5-tablet-line-height: 2.1875rem;--h5-tablet-letter-spacing: -.01em;--h5-tablet-font-size: 2rem;--paragraph-tablet-letter-spacing: -.01em;--paragraph-tablet-line-height: 2.0625rem;--paragraph-tablet-font-size: 1.375rem;--body-small-tablet-letter-spacing: -.01em;--body-small-tablet-line-height: 1.25rem;--body-small-tablet-font-size: .875rem;--caption-large-tablet-letter-spacing: -.02em;--caption-large-tablet-line-height: 1.5rem;--caption-large-tablet-font-size: 1rem;--caption-medium-tablet-line-height: 1.125rem;--caption-medium-tablet-letter-spacing: -.02em;--caption-medium-tablet-font-size: .75rem;--code-tablet-letter-spacing: 0;--code-tablet-line-height: 1.5625rem;--code-tablet-font-size: 1.125rem;--caption-uppercase-tablet-letter-spacing: .04em;--caption-uppercase-tablet-line-height: 1rem;--caption-uppercase-tablet-font-size: .8125rem;--body-large-tablet-letter-spacing: -.02em;--body-large-tablet-line-height: 1.6875rem;--body-large-tablet-font-size: 1.125rem;--button-small-tablet-line-height: 1.5rem;--button-small-tablet-letter-spacing: -.02em;--button-small-tablet-font-size: 1rem;--button-large-tablet-letter-spacing: -.02em;--button-large-tablet-line-height: 1.5rem;--button-large-tablet-font-size: 1.125rem;--captionsm-tablet-line-height: 1.125rem;--captionsm-tablet-letter-spacing: -.02em;--captionsm-tablet-font-size: .75rem;--bodylginter-tablet-letter-spacing: -.02em;--bodylginter-tablet-line-height: 1.6875rem;--bodylginter-tablet-font-size: 1.125rem;--buttonsm-tablet-line-height: 1.5rem;--buttonsm-tablet-letter-spacing: -.01em;--buttonsm-tablet-font-size: .875rem;--buttonlg-tablet-letter-spacing: -.02em;--buttonlg-tablet-line-height: 1.5rem;--buttonlg-tablet-font-size: 1.125rem;--h7-tablet-font-size: 1.375rem;--h7-tablet-letter-spacing: -.01em;--h7-tablet-line-height: 1.625rem;--buttonmd-tablet-font-size: 1rem;--buttonmd-tablet-line-height: 1.5rem;--buttonmd-tablet-letter-spacing: -.02em;--bodymdtthoves-tablet-letter-spacing: -.01em;--bodymdtthoves-tablet-font-size: 1rem;--bodymdtthoves-tablet-line-height: 1.375rem;--bodylgtthoves-tablet-font-size: 1rem;--bodylgtthoves-tablet-line-height: 1.375rem;--bodylgtthoves-tablet-letter-spacing: -.01em;--numbers-tablet-line-height: 1.375rem;--numbers-tablet-letter-spacing: .04em;--numbers-tablet-font-size: 1rem;--bodymdinter-tablet-letter-spacing: -.02em;--bodymdinter-tablet-font-size: 1rem;--bodymdinter-tablet-line-height: 1.5rem;--captionsmbold-tablet-font-size: .75rem;--captionsmbold-tablet-line-height: 1rem;--captionsmbold-tablet-letter-spacing: -.01em;--font-mobile-heading: TT Hoves Pro;--font-mobile-paragraph: TT Hoves Pro;--font-mobile-buttons: Inter;--font-mobile-body: Inter;--font-mobile-caption: Inter;--font-mobile-code: Hack;--font-mobile-bodyinter: Inter;--font-mobile-bodytthoves: TT Hoves Pro;--font-mobile-numbers: TT Hoves Pro;--h-extra-mobile-letter-spacing: -.02em;--h-extra-mobile-line-height: 3.875rem;--h-extra-mobile-font-size: 3.5rem;--h1-mobile-letter-spacing: -.01em;--h1-mobile-line-height: 2.75rem;--h1-mobile-font-size: 2.75rem;--h2-mobile-letter-spacing: -.01em;--h2-mobile-line-height: 2.75rem;--h2-mobile-font-size: 2.5rem;--h3-mobile-letter-spacing: -.01em;--h3-mobile-line-height: 2.5rem;--h3-mobile-font-size: 2.25rem;--h4-mobile-letter-spacing: -.01em;--h4-mobile-line-height: 2.625rem;--h4-mobile-font-size: 2rem;--h6-mobile-letter-spacing: -.01em;--h6-mobile-line-height: 1.375rem;--h6-mobile-font-size: 1.25rem;--h5-mobile-line-height: 1.5rem;--h5-mobile-letter-spacing: -.01em;--h5-mobile-font-size: 1.375rem;--paragraph-mobile-letter-spacing: -.01em;--paragraph-mobile-line-height: 1.6875rem;--paragraph-mobile-font-size: 1.125rem;--body-small-mobile-letter-spacing: -.01em;--body-small-mobile-line-height: 1.25rem;--body-small-mobile-font-size: .875rem;--caption-large-mobile-letter-spacing: -.02em;--caption-large-mobile-line-height: 1.5rem;--caption-large-mobile-font-size: 1rem;--caption-medium-mobile-line-height: 1.125rem;--caption-medium-mobile-letter-spacing: -.02em;--caption-medium-mobile-font-size: .75rem;--code-mobile-letter-spacing: 0;--code-mobile-line-height: 1.375rem;--code-mobile-font-size: 1rem;--caption-uppercase-mobile-letter-spacing: .04em;--caption-uppercase-mobile-line-height: 1rem;--caption-uppercase-mobile-font-size: .75rem;--body-large-mobile-letter-spacing: -.01em;--body-large-mobile-line-height: 1.5rem;--body-large-mobile-font-size: 1rem;--button-small-mobile-line-height: 1.5rem;--button-small-mobile-letter-spacing: -.01em;--button-small-mobile-font-size: .875rem;--button-large-mobile-letter-spacing: -.01em;--button-large-mobile-line-height: 1.5rem;--button-large-mobile-font-size: 1rem;--captionsm-mobile-line-height: 1.125rem;--captionsm-mobile-letter-spacing: -.02em;--captionsm-mobile-font-size: .75rem;--bodylginter-mobile-letter-spacing: -.01em;--bodylginter-mobile-line-height: 1.5rem;--bodylginter-mobile-font-size: 1rem;--buttonsm-mobile-line-height: 1.5rem;--buttonsm-mobile-letter-spacing: -.01em;--buttonsm-mobile-font-size: .75rem;--buttonlg-mobile-letter-spacing: -.01em;--buttonlg-mobile-line-height: 1.5rem;--buttonlg-mobile-font-size: 1rem;--h7-mobile-font-size: 1.25rem;--h7-mobile-letter-spacing: -.01em;--h7-mobile-line-height: 1.5rem;--buttonmd-mobile-font-size: .875rem;--buttonmd-mobile-line-height: 1.5rem;--buttonmd-mobile-letter-spacing: -.01em;--bodymdtthoves-mobile-letter-spacing: -.01em;--bodymdtthoves-mobile-font-size: 1rem;--bodymdtthoves-mobile-line-height: 1.375rem;--bodylgtthoves-mobile-font-size: .875rem;--bodylgtthoves-mobile-line-height: 1.1875rem;--bodylgtthoves-mobile-letter-spacing: -.01em;--numbers-mobile-line-height: 1.375rem;--numbers-mobile-letter-spacing: .04em;--numbers-mobile-font-size: 1rem;--bodymdinter-mobile-letter-spacing: -.01em;--bodymdinter-mobile-font-size: .875rem;--bodymdinter-mobile-line-height: 1.3125rem;--captionsmbold-mobile-font-size: .75rem;--captionsmbold-mobile-line-height: 1rem;--captionsmbold-mobile-letter-spacing: -.01em;--text-headings-primary: #151b23;--text-body-primary: #151b23;--text-action: #0066ff;--text-action-hover: #0039b5;--text-disabled: #b7bec7;--text-warning: #6b1000;--text-positive: #005925;--text-negative: #6b0039;--text-on-lit-blu: #0039b5;--text-on-lit-blu-hover: #001d7a;--text-headings-secondary: #383e48;--text-body-secondary: #383e48;--text-body-tertiary: #939ba6;--text-headings-tertiary: #939ba6;--text-button-primary: #ffffff;--text-pressed: #001d7a;--text-on-lit-blu-hover-pressed: #002ea3;--text-action-pressed: #001d7a;--icons-default: #151b23;--icons-default-secondary: #383e48;--icons-default-tertiary: #939ba6;--icons-action: #0066ff;--icons-action-hover: #0039b5;--icons-disabled: #d6dbe0;--icons-warning: #f5804e;--icons-positive: #47cc69;--icons-negative: #b22265;--icons-on-lit-blu: #0039b5;--icons-on-lit-blu-hover: #0066ff;--icons-on-action: #ffffff;--icons-pressed: #001d7a;--icons-disabled-hover: #939ba6;--icons-disabled-on-blu: #8fc1ff;--surface-primary: #ffffff;--surface-secondary: #f5f7fa;--surface-tertiary: #e6e9ed;--surface-secondary-tinted: #e2f0ff;--surface-tertiary-tinted: #bddcff;--surface-action: #0066ff;--surface-action-hover: #0039b5;--surface-positive: #cffad6;--surface-warning: #ffebde;--surface-negative: #ffe8ef;--surface-on-lit-blu: #0039b5;--surface-on-lit-blu-hover: #0066ff;--surface-disabled: #e6e9ed;--surface-action-pressed: #001d7a;--surface-negative-hover: #ffcbdb;--surface-negative-pressed: #ffafc8;--surface-overlay: #001d7a80;--surface-disabled-hover: #b7bec7;--surface-disabled-blue: #bddcff;--surface-elevation: #00204a08;--surface-toggle: #b7bec7;--surface-toggle-hover: #939ba6;--surface-toggle-hover-on-blu: #2d84ff;--surface-toggle-on-blu: #5aa1ff;--stroke-secondary: #e6e9ed;--stroke-tertiary: #d6dbe0;--stroke-disabled: #b7bec7;--stroke-focused: #5aa1ff;--stroke-action: #0066ff;--stroke-positive: #005925;--stroke-warning: #6b1000;--stroke-negative: #6b0039;--stroke-action-hover: #0039b5;--stroke-on-lit-blu: #0039b5;--stroke-on-lit-blu-hover: #0066ff;--stroke-action-pressed: #001d7a;--stroke-default: #151b23;--stroke-disabled-hover: #939ba6;--borderradius-lg: 36px;--borderradius-md: 24px;--borderradius-sm: 360px;--borderradius-none: 0;--borderradius-button: 99px;--borderradius-cardlg: 24px;--borderradius-cardsm: 12px;--borderradius-pill: 99px;--borderradius-focusedstroke: 4px;--strokewidth-lg: 8px;--strokewidth-md: 4px;--strokewidth-sm: 2px;--strokewidth-none: 0;--spacing-5xs: .25rem;--spacing-4xs: .5rem;--spacing-3xs: .75rem;--spacing-2xs: 1rem;--spacing-xs: 1.25rem;--spacing-s: 1.5rem;--spacing-m: 1.75rem;--spacing-l: 2rem;--spacing-xl: 2.5rem;--spacing-2xl: 2.75rem;--spacing-3xl: 3rem;--spacing-4xl: 3.5rem;--spacing-5xl: 4rem;--spacing-6xl: 4.5rem;--spacing-7xl: 5rem;--spacing-8xl: 6rem;--spacing-9xl: 7.5rem;--spacing-10xl: 10rem;--product-enrichment: #47cc69;--product-address-autocomplete: #9560ff;--product-geocoding: #f5804e;--product-address-verification: #f55591;--product-professional-services: #0066ff;--product-data-sets: #3dc9d1;--insetspacing-5xs: .25rem;--insetspacing-4xs: .5rem;--insetspacing-3xs: .75rem;--insetspacing-2xs: 1rem;--insetspacing-xs: 1.25rem;--insetspacing-s: 1.5rem;--insetspacing-m: 1.75rem;--insetspacing-l: 2rem;--insetspacing-xl: 2.5rem;--insetspacing-2xl: 2.75rem;--insetspacing-3xl: 3rem;--insetspacing-4xl: 3.5rem;--insetspacing-5xl: 4rem;--insetspacing-6xl: 4.5rem;--insetspacing-7xl: 5rem;--insetspacing-8xl: 6rem;--insetspacing-9xl: 7.5rem;--insetspacing-10xl: 10rem;--stackspacing-5xs: .25rem;--stackspacing-4xs: .5rem;--stackspacing-3xs: .75rem;--stackspacing-2xs: 1rem;--stackspacing-xs: 1.25rem;--stackspacing-s: 1.5rem;--stackspacing-m: 1.75rem;--stackspacing-l: 2rem;--stackspacing-xl: 2.5rem;--stackspacing-2xl: 2.75rem;--stackspacing-3xl: 3rem;--stackspacing-4xl: 3.5rem;--stackspacing-5xl: 4rem;--stackspacing-6xl: 4.5rem;--stackspacing-7xl: 5rem;--stackspacing-8xl: 6rem;--stackspacing-9xl: 7.5rem;--stackspacing-10xl: 10rem;--inlinespacing-5xs: .25rem;--inlinespacing-4xs: .5rem;--inlinespacing-3xs: .75rem;--inlinespacing-2xs: 1rem;--inlinespacing-xs: 1.25rem;--inlinespacing-s: 1.5rem;--inlinespacing-m: 1.75rem;--inlinespacing-l: 2rem;--inlinespacing-xl: 2.5rem;--inlinespacing-2xl: 2.75rem;--inlinespacing-3xl: 3rem;--inlinespacing-4xl: 3.5rem;--inlinespacing-5xl: 4rem;--inlinespacing-6xl: 4.5rem;--inlinespacing-7xl: 5rem;--inlinespacing-8xl: 6rem;--inlinespacing-9xl: 7.5rem;--inlinespacing-10xl: 10rem}[data-theme=dark]{--text-headings-primary: #ffffff;--text-body-primary: #ffffff;--text-action: #ffffff;--text-action-hover: #b7bec7;--text-disabled: #49505b;--text-warning: #f5804e;--text-positive: #47cc69;--text-negative: #f55591;--text-on-lit-blu: #0039b5;--text-on-lit-blu-hover: #001d7a;--text-headings-secondary: #b7bec7;--text-body-secondary: #b7bec7;--text-body-tertiary: #383e48;--text-headings-tertiary: #383e48;--text-button-primary: #151b23;--text-pressed: #5c636e;--text-on-lit-blu-hover-pressed: #002ea3;--text-action-pressed: #5c636e;--icons-default: #ffffff;--icons-default-secondary: #b7bec7;--icons-default-tertiary: #383e48;--icons-action: #ffffff;--icons-action-hover: #b7bec7;--icons-disabled: #383e48;--icons-warning: #f5804e;--icons-positive: #47cc69;--icons-negative: #b22265;--icons-on-lit-blu: #ffffff;--icons-on-lit-blu-hover: #ffffff;--icons-on-action: #151b23;--icons-pressed: #5c636e;--icons-disabled-hover: #383e48;--icons-disabled-on-blu: #8fc1ff;--surface-primary: #151b23;--surface-secondary: #262c36;--surface-tertiary: #383e48;--surface-secondary-tinted: #e2f0ff;--surface-tertiary-tinted: #bddcff;--surface-action: #ffffff;--surface-action-hover: #b7bec7;--surface-positive: #cffad6;--surface-warning: #ffebde;--surface-negative: #ffe8ef;--surface-on-lit-blu: #0039b5;--surface-on-lit-blu-hover: #0066ff;--surface-disabled: #939ba6;--surface-action-pressed: #6e7580;--surface-negative-hover: #ffcbdb;--surface-negative-pressed: #ffafc8;--surface-overlay: #001d7a80;--surface-disabled-hover: #383e48;--surface-disabled-blue: #bddcff;--surface-elevation: #262c36;--surface-toggle: #5c636e;--surface-toggle-hover: #939ba6;--surface-toggle-hover-on-blu: #2d84ff;--surface-toggle-on-blu: #5aa1ff;--stroke-secondary: #49505b;--stroke-tertiary: #5c636e;--stroke-disabled: #383e48;--stroke-focused: #5aa1ff;--stroke-action: #ffffff;--stroke-positive: #005925;--stroke-warning: #6b1000;--stroke-negative: #6b0039;--stroke-action-hover: #b7bec7;--stroke-on-lit-blu: #0039b5;--stroke-on-lit-blu-hover: #0066ff;--stroke-action-pressed: #5c636e;--stroke-default: #ffffff;--stroke-disabled-hover: #151b23}._h1_1765w_1{font-size:clamp(2.75rem,1.8779vw + 2.3099rem,4rem);line-height:clamp(2.75rem,1.8779vw + 2.3099rem,4rem);letter-spacing:-.02em;font-family:var(--ui-font-primary);font-weight:500;font-feature-settings:"ss01" 1,"ss02" 1,"ss04" 1;margin:0}._button_hxesz_1{appearance:none;border:none;background:none;display:inline-block;text-decoration:none;cursor:pointer;border-radius:var(--borderradius-sm);padding:clamp(.75rem,.3756vw + .662rem,1rem) clamp(1rem,.7512vw + .8239rem,1.5rem);font-size:clamp(1rem,.3756vw + .912rem,1.25rem);line-height:1.5rem;letter-spacing:-.02em;font-family:var(--ui-font-body);font-weight:500;font-feature-settings:"dlig" 1;transition:background-color .15s ease,color .15s ease}._button_hxesz_1:focus-visible{outline:2px solid var(--stroke-focused);outline-offset:2px}._button_hxesz_1:disabled{cursor:not-allowed}._sm_hxesz_26{font-size:clamp(.875rem,.2817vw + .809rem,1.0625rem);line-height:1.5rem;letter-spacing:-.02em;padding:clamp(.5rem,.3756vw + .412rem,.75rem) clamp(1rem,.3756vw + .912rem,1.25rem)}._primary_hxesz_33{background-color:var(--surface-action);color:var(--text-button-primary)}._primary_hxesz_33:hover:not(:disabled){background-color:var(--surface-action-hover);color:var(--text-button-primary)}._primary_hxesz_33:active:not(:disabled){background-color:var(--surface-action-pressed)}._primary_hxesz_33:disabled{background-color:var(--surface-disabled);color:var(--text-disabled)}._secondary_hxesz_49{background-color:transparent;color:var(--text-body-primary);box-shadow:inset 0 0 0 var(--strokewidth-md) var(--stroke-default);transition:box-shadow .15s ease,color .15s ease}._secondary_hxesz_49:hover:not(:disabled){box-shadow:inset 0 0 0 var(--strokewidth-md) var(--stroke-action-hover);color:var(--text-action-hover)}._secondary_hxesz_49:active:not(:disabled){box-shadow:inset 0 0 0 var(--strokewidth-md) var(--stroke-action-pressed);color:var(--text-pressed)}._secondary_hxesz_49:disabled{box-shadow:inset 0 0 0 var(--strokewidth-md) var(--stroke-disabled);color:var(--text-disabled)}._negative_hxesz_68{background-color:var(--surface-negative);color:var(--text-negative)}._negative_hxesz_68:hover:not(:disabled){background-color:var(--surface-negative-hover);color:var(--text-negative)}._negative_hxesz_68:active:not(:disabled){background-color:var(--surface-negative-pressed)}._negative_hxesz_68:disabled{background-color:var(--surface-disabled);color:var(--text-disabled)}
1
+ :root{--font-desktop-heading: TT Hoves Pro;--font-desktop-paragraph: TT Hoves Pro;--font-desktop-buttons: Inter;--font-desktop-body: Inter;--font-desktop-caption: Inter;--font-desktop-code: Hack;--font-desktop-bodyinter: Inter;--font-desktop-bodytthoves: TT Hoves Pro;--font-desktop-numbers: TT Hoves Pro;--h-extra-desktop-letter-spacing: -.03em;--h-extra-desktop-line-height: 6.625rem;--h-extra-desktop-font-size: 6rem;--h1-desktop-letter-spacing: -.02em;--h1-desktop-line-height: 4rem;--h1-desktop-font-size: 4rem;--h2-desktop-letter-spacing: -.02em;--h2-desktop-line-height: 3.5625rem;--h2-desktop-font-size: 3.25rem;--h3-desktop-letter-spacing: -.02em;--h3-desktop-line-height: 3rem;--h3-desktop-font-size: 2.75rem;--h4-desktop-letter-spacing: -.01em;--h4-desktop-line-height: 2.6875rem;--h4-desktop-font-size: 2.25rem;--h6-desktop-letter-spacing: -.01em;--h6-desktop-line-height: 1.9375rem;--h6-desktop-font-size: 1.75rem;--h5-desktop-line-height: 2.0625rem;--h5-desktop-letter-spacing: -.01em;--h5-desktop-font-size: 1.875rem;--paragraph-desktop-letter-spacing: -.01em;--paragraph-desktop-line-height: 2.25rem;--paragraph-desktop-font-size: 1.5rem;--body-small-desktop-letter-spacing: -.01em;--body-small-desktop-line-height: 1.25rem;--body-small-desktop-font-size: .875rem;--caption-large-desktop-letter-spacing: -.01em;--caption-large-desktop-line-height: 1.5rem;--caption-large-desktop-font-size: 1rem;--caption-medium-desktop-line-height: 1.125rem;--caption-medium-desktop-letter-spacing: -.02em;--caption-medium-desktop-font-size: .75rem;--code-desktop-letter-spacing: 0;--code-desktop-line-height: 1.5625rem;--code-desktop-font-size: 1.125rem;--caption-uppercase-desktop-letter-spacing: .04em;--caption-uppercase-desktop-line-height: 1rem;--caption-uppercase-desktop-font-size: .8125rem;--body-large-desktop-letter-spacing: -.02em;--body-large-desktop-line-height: 1.875rem;--body-large-desktop-font-size: 1.25rem;--button-small-desktop-line-height: 1.5rem;--button-small-desktop-letter-spacing: -.02em;--button-small-desktop-font-size: 1.0625rem;--button-large-desktop-letter-spacing: -.02em;--button-large-desktop-line-height: 1.5rem;--button-large-desktop-font-size: 1.25rem;--captionsm-desktop-line-height: 1.125rem;--captionsm-desktop-letter-spacing: -.02em;--captionsm-desktop-font-size: .75rem;--bodylginter-desktop-letter-spacing: -.02em;--bodylginter-desktop-line-height: 1.875rem;--bodylginter-desktop-font-size: 1.25rem;--buttonsm-desktop-line-height: 1.5rem;--buttonsm-desktop-letter-spacing: -.01em;--buttonsm-desktop-font-size: .875rem;--buttonlg-desktop-letter-spacing: -.02em;--buttonlg-desktop-line-height: 1.5rem;--buttonlg-desktop-font-size: 1.25rem;--h7-desktop-font-size: 1.5rem;--h7-desktop-letter-spacing: -.01em;--h7-desktop-line-height: 1.75rem;--buttonmd-desktop-font-size: 1.0625rem;--buttonmd-desktop-line-height: 1.5rem;--buttonmd-desktop-letter-spacing: -.02em;--bodymdtthoves-desktop-letter-spacing: -.01em;--bodymdtthoves-desktop-font-size: 1rem;--bodymdtthoves-desktop-line-height: 1.375rem;--bodylgtthoves-desktop-font-size: 1.125rem;--bodylgtthoves-desktop-line-height: 1.5rem;--bodylgtthoves-desktop-letter-spacing: -.01em;--numbers-desktop-line-height: 1.375rem;--numbers-desktop-letter-spacing: .04em;--numbers-desktop-font-size: 1rem;--bodymdinter-desktop-letter-spacing: -.02em;--bodymdinter-desktop-font-size: 1rem;--bodymdinter-desktop-line-height: 1.5rem;--captionsmbold-desktop-font-size: .75rem;--captionsmbold-desktop-line-height: 1rem;--captionsmbold-desktop-letter-spacing: -.01em;--font-tablet-heading: TT Hoves Pro;--font-tablet-paragraph: TT Hoves Pro;--font-tablet-buttons: Inter;--font-tablet-body: Inter;--font-tablet-caption: Inter;--font-tablet-code: Hack;--font-tablet-bodyinter: Inter;--font-tablet-bodytthoves: TT Hoves Pro;--font-tablet-numbers: TT Hoves Pro;--h-extra-tablet-letter-spacing: -.03em;--h-extra-tablet-line-height: 7.5625rem;--h-extra-tablet-font-size: 6.875rem;--h1-tablet-letter-spacing: -.02em;--h1-tablet-line-height: 4.4rem;--h1-tablet-font-size: 4rem;--h2-tablet-letter-spacing: -.02em;--h2-tablet-line-height: 3.3125rem;--h2-tablet-font-size: 3rem;--h3-tablet-letter-spacing: -.02em;--h3-tablet-line-height: 2.75rem;--h3-tablet-font-size: 2.5rem;--h4-tablet-letter-spacing: -.02em;--h4-tablet-line-height: 2.6875rem;--h4-tablet-font-size: 2.25rem;--h6-tablet-letter-spacing: -.01em;--h6-tablet-line-height: 1.625rem;--h6-tablet-font-size: 1.5rem;--h5-tablet-line-height: 2.1875rem;--h5-tablet-letter-spacing: -.01em;--h5-tablet-font-size: 2rem;--paragraph-tablet-letter-spacing: -.01em;--paragraph-tablet-line-height: 2.0625rem;--paragraph-tablet-font-size: 1.375rem;--body-small-tablet-letter-spacing: -.01em;--body-small-tablet-line-height: 1.25rem;--body-small-tablet-font-size: .875rem;--caption-large-tablet-letter-spacing: -.02em;--caption-large-tablet-line-height: 1.5rem;--caption-large-tablet-font-size: 1rem;--caption-medium-tablet-line-height: 1.125rem;--caption-medium-tablet-letter-spacing: -.02em;--caption-medium-tablet-font-size: .75rem;--code-tablet-letter-spacing: 0;--code-tablet-line-height: 1.5625rem;--code-tablet-font-size: 1.125rem;--caption-uppercase-tablet-letter-spacing: .04em;--caption-uppercase-tablet-line-height: 1rem;--caption-uppercase-tablet-font-size: .8125rem;--body-large-tablet-letter-spacing: -.02em;--body-large-tablet-line-height: 1.6875rem;--body-large-tablet-font-size: 1.125rem;--button-small-tablet-line-height: 1.5rem;--button-small-tablet-letter-spacing: -.02em;--button-small-tablet-font-size: 1rem;--button-large-tablet-letter-spacing: -.02em;--button-large-tablet-line-height: 1.5rem;--button-large-tablet-font-size: 1.125rem;--captionsm-tablet-line-height: 1.125rem;--captionsm-tablet-letter-spacing: -.02em;--captionsm-tablet-font-size: .75rem;--bodylginter-tablet-letter-spacing: -.02em;--bodylginter-tablet-line-height: 1.6875rem;--bodylginter-tablet-font-size: 1.125rem;--buttonsm-tablet-line-height: 1.5rem;--buttonsm-tablet-letter-spacing: -.01em;--buttonsm-tablet-font-size: .875rem;--buttonlg-tablet-letter-spacing: -.02em;--buttonlg-tablet-line-height: 1.5rem;--buttonlg-tablet-font-size: 1.125rem;--h7-tablet-font-size: 1.375rem;--h7-tablet-letter-spacing: -.01em;--h7-tablet-line-height: 1.625rem;--buttonmd-tablet-font-size: 1rem;--buttonmd-tablet-line-height: 1.5rem;--buttonmd-tablet-letter-spacing: -.02em;--bodymdtthoves-tablet-letter-spacing: -.01em;--bodymdtthoves-tablet-font-size: 1rem;--bodymdtthoves-tablet-line-height: 1.375rem;--bodylgtthoves-tablet-font-size: 1rem;--bodylgtthoves-tablet-line-height: 1.375rem;--bodylgtthoves-tablet-letter-spacing: -.01em;--numbers-tablet-line-height: 1.375rem;--numbers-tablet-letter-spacing: .04em;--numbers-tablet-font-size: 1rem;--bodymdinter-tablet-letter-spacing: -.02em;--bodymdinter-tablet-font-size: 1rem;--bodymdinter-tablet-line-height: 1.5rem;--captionsmbold-tablet-font-size: .75rem;--captionsmbold-tablet-line-height: 1rem;--captionsmbold-tablet-letter-spacing: -.01em;--font-mobile-heading: TT Hoves Pro;--font-mobile-paragraph: TT Hoves Pro;--font-mobile-buttons: Inter;--font-mobile-body: Inter;--font-mobile-caption: Inter;--font-mobile-code: Hack;--font-mobile-bodyinter: Inter;--font-mobile-bodytthoves: TT Hoves Pro;--font-mobile-numbers: TT Hoves Pro;--h-extra-mobile-letter-spacing: -.02em;--h-extra-mobile-line-height: 3.875rem;--h-extra-mobile-font-size: 3.5rem;--h1-mobile-letter-spacing: -.01em;--h1-mobile-line-height: 2.75rem;--h1-mobile-font-size: 2.75rem;--h2-mobile-letter-spacing: -.01em;--h2-mobile-line-height: 2.75rem;--h2-mobile-font-size: 2.5rem;--h3-mobile-letter-spacing: -.01em;--h3-mobile-line-height: 2.5rem;--h3-mobile-font-size: 2.25rem;--h4-mobile-letter-spacing: -.01em;--h4-mobile-line-height: 2.625rem;--h4-mobile-font-size: 2rem;--h6-mobile-letter-spacing: -.01em;--h6-mobile-line-height: 1.375rem;--h6-mobile-font-size: 1.25rem;--h5-mobile-line-height: 1.5rem;--h5-mobile-letter-spacing: -.01em;--h5-mobile-font-size: 1.375rem;--paragraph-mobile-letter-spacing: -.01em;--paragraph-mobile-line-height: 1.6875rem;--paragraph-mobile-font-size: 1.125rem;--body-small-mobile-letter-spacing: -.01em;--body-small-mobile-line-height: 1.25rem;--body-small-mobile-font-size: .875rem;--caption-large-mobile-letter-spacing: -.02em;--caption-large-mobile-line-height: 1.5rem;--caption-large-mobile-font-size: 1rem;--caption-medium-mobile-line-height: 1.125rem;--caption-medium-mobile-letter-spacing: -.02em;--caption-medium-mobile-font-size: .75rem;--code-mobile-letter-spacing: 0;--code-mobile-line-height: 1.375rem;--code-mobile-font-size: 1rem;--caption-uppercase-mobile-letter-spacing: .04em;--caption-uppercase-mobile-line-height: 1rem;--caption-uppercase-mobile-font-size: .75rem;--body-large-mobile-letter-spacing: -.01em;--body-large-mobile-line-height: 1.5rem;--body-large-mobile-font-size: 1rem;--button-small-mobile-line-height: 1.5rem;--button-small-mobile-letter-spacing: -.01em;--button-small-mobile-font-size: .875rem;--button-large-mobile-letter-spacing: -.01em;--button-large-mobile-line-height: 1.5rem;--button-large-mobile-font-size: 1rem;--captionsm-mobile-line-height: 1.125rem;--captionsm-mobile-letter-spacing: -.02em;--captionsm-mobile-font-size: .75rem;--bodylginter-mobile-letter-spacing: -.01em;--bodylginter-mobile-line-height: 1.5rem;--bodylginter-mobile-font-size: 1rem;--buttonsm-mobile-line-height: 1.5rem;--buttonsm-mobile-letter-spacing: -.01em;--buttonsm-mobile-font-size: .75rem;--buttonlg-mobile-letter-spacing: -.01em;--buttonlg-mobile-line-height: 1.5rem;--buttonlg-mobile-font-size: 1rem;--h7-mobile-font-size: 1.25rem;--h7-mobile-letter-spacing: -.01em;--h7-mobile-line-height: 1.5rem;--buttonmd-mobile-font-size: .875rem;--buttonmd-mobile-line-height: 1.5rem;--buttonmd-mobile-letter-spacing: -.01em;--bodymdtthoves-mobile-letter-spacing: -.01em;--bodymdtthoves-mobile-font-size: 1rem;--bodymdtthoves-mobile-line-height: 1.375rem;--bodylgtthoves-mobile-font-size: .875rem;--bodylgtthoves-mobile-line-height: 1.1875rem;--bodylgtthoves-mobile-letter-spacing: -.01em;--numbers-mobile-line-height: 1.375rem;--numbers-mobile-letter-spacing: .04em;--numbers-mobile-font-size: 1rem;--bodymdinter-mobile-letter-spacing: -.01em;--bodymdinter-mobile-font-size: .875rem;--bodymdinter-mobile-line-height: 1.3125rem;--captionsmbold-mobile-font-size: .75rem;--captionsmbold-mobile-line-height: 1rem;--captionsmbold-mobile-letter-spacing: -.01em;--text-headings-primary: #151b23;--text-body-primary: #151b23;--text-action: #0066ff;--text-action-hover: #0039b5;--text-disabled: #b7bec7;--text-warning: #6b1000;--text-positive: #005925;--text-negative: #6b0039;--text-on-lit-blu: #0039b5;--text-on-lit-blu-hover: #001d7a;--text-headings-secondary: #383e48;--text-body-secondary: #383e48;--text-body-tertiary: #939ba6;--text-headings-tertiary: #939ba6;--text-button-primary: #ffffff;--text-pressed: #001d7a;--text-on-lit-blu-hover-pressed: #002ea3;--text-action-pressed: #001d7a;--icons-default: #151b23;--icons-default-secondary: #383e48;--icons-default-tertiary: #939ba6;--icons-action: #0066ff;--icons-action-hover: #0039b5;--icons-disabled: #d6dbe0;--icons-warning: #f5804e;--icons-positive: #47cc69;--icons-negative: #b22265;--icons-on-lit-blu: #0039b5;--icons-on-lit-blu-hover: #0066ff;--icons-on-action: #ffffff;--icons-pressed: #001d7a;--icons-disabled-hover: #939ba6;--icons-disabled-on-blu: #8fc1ff;--surface-primary: #ffffff;--surface-secondary: #f5f7fa;--surface-tertiary: #e6e9ed;--surface-secondary-tinted: #e2f0ff;--surface-tertiary-tinted: #bddcff;--surface-action: #0066ff;--surface-action-hover: #0039b5;--surface-positive: #cffad6;--surface-warning: #ffebde;--surface-negative: #ffe8ef;--surface-on-lit-blu: #0039b5;--surface-on-lit-blu-hover: #0066ff;--surface-disabled: #e6e9ed;--surface-action-pressed: #001d7a;--surface-negative-hover: #ffcbdb;--surface-negative-pressed: #ffafc8;--surface-overlay: #001d7a80;--surface-disabled-hover: #b7bec7;--surface-disabled-blue: #bddcff;--surface-elevation: #00204a08;--surface-toggle: #b7bec7;--surface-toggle-hover: #939ba6;--surface-toggle-hover-on-blu: #2d84ff;--surface-toggle-on-blu: #5aa1ff;--stroke-secondary: #e6e9ed;--stroke-tertiary: #d6dbe0;--stroke-disabled: #b7bec7;--stroke-focused: #5aa1ff;--stroke-action: #0066ff;--stroke-positive: #005925;--stroke-warning: #6b1000;--stroke-negative: #6b0039;--stroke-action-hover: #0039b5;--stroke-on-lit-blu: #0039b5;--stroke-on-lit-blu-hover: #0066ff;--stroke-action-pressed: #001d7a;--stroke-default: #151b23;--stroke-disabled-hover: #939ba6;--borderradius-lg: 36px;--borderradius-md: 24px;--borderradius-sm: 360px;--borderradius-none: 0;--borderradius-button: 99px;--borderradius-cardlg: 24px;--borderradius-cardsm: 12px;--borderradius-pill: 99px;--borderradius-focusedstroke: 4px;--strokewidth-lg: 8px;--strokewidth-md: 4px;--strokewidth-sm: 2px;--strokewidth-none: 0;--spacing-5xs: .25rem;--spacing-4xs: .5rem;--spacing-3xs: .75rem;--spacing-2xs: 1rem;--spacing-xs: 1.25rem;--spacing-s: 1.5rem;--spacing-m: 1.75rem;--spacing-l: 2rem;--spacing-xl: 2.5rem;--spacing-2xl: 2.75rem;--spacing-3xl: 3rem;--spacing-4xl: 3.5rem;--spacing-5xl: 4rem;--spacing-6xl: 4.5rem;--spacing-7xl: 5rem;--spacing-8xl: 6rem;--spacing-9xl: 7.5rem;--spacing-10xl: 10rem;--product-enrichment: #47cc69;--product-address-autocomplete: #9560ff;--product-geocoding: #f5804e;--product-address-verification: #f55591;--product-professional-services: #0066ff;--product-data-sets: #3dc9d1;--insetspacing-5xs: .25rem;--insetspacing-4xs: .5rem;--insetspacing-3xs: .75rem;--insetspacing-2xs: 1rem;--insetspacing-xs: 1.25rem;--insetspacing-s: 1.5rem;--insetspacing-m: 1.75rem;--insetspacing-l: 2rem;--insetspacing-xl: 2.5rem;--insetspacing-2xl: 2.75rem;--insetspacing-3xl: 3rem;--insetspacing-4xl: 3.5rem;--insetspacing-5xl: 4rem;--insetspacing-6xl: 4.5rem;--insetspacing-7xl: 5rem;--insetspacing-8xl: 6rem;--insetspacing-9xl: 7.5rem;--insetspacing-10xl: 10rem;--stackspacing-5xs: .25rem;--stackspacing-4xs: .5rem;--stackspacing-3xs: .75rem;--stackspacing-2xs: 1rem;--stackspacing-xs: 1.25rem;--stackspacing-s: 1.5rem;--stackspacing-m: 1.75rem;--stackspacing-l: 2rem;--stackspacing-xl: 2.5rem;--stackspacing-2xl: 2.75rem;--stackspacing-3xl: 3rem;--stackspacing-4xl: 3.5rem;--stackspacing-5xl: 4rem;--stackspacing-6xl: 4.5rem;--stackspacing-7xl: 5rem;--stackspacing-8xl: 6rem;--stackspacing-9xl: 7.5rem;--stackspacing-10xl: 10rem;--inlinespacing-5xs: .25rem;--inlinespacing-4xs: .5rem;--inlinespacing-3xs: .75rem;--inlinespacing-2xs: 1rem;--inlinespacing-xs: 1.25rem;--inlinespacing-s: 1.5rem;--inlinespacing-m: 1.75rem;--inlinespacing-l: 2rem;--inlinespacing-xl: 2.5rem;--inlinespacing-2xl: 2.75rem;--inlinespacing-3xl: 3rem;--inlinespacing-4xl: 3.5rem;--inlinespacing-5xl: 4rem;--inlinespacing-6xl: 4.5rem;--inlinespacing-7xl: 5rem;--inlinespacing-8xl: 6rem;--inlinespacing-9xl: 7.5rem;--inlinespacing-10xl: 10rem}[data-theme=dark]{--text-headings-primary: #ffffff;--text-body-primary: #ffffff;--text-action: #ffffff;--text-action-hover: #b7bec7;--text-disabled: #49505b;--text-warning: #f5804e;--text-positive: #47cc69;--text-negative: #f55591;--text-on-lit-blu: #0039b5;--text-on-lit-blu-hover: #001d7a;--text-headings-secondary: #b7bec7;--text-body-secondary: #b7bec7;--text-body-tertiary: #383e48;--text-headings-tertiary: #383e48;--text-button-primary: #151b23;--text-pressed: #5c636e;--text-on-lit-blu-hover-pressed: #002ea3;--text-action-pressed: #5c636e;--icons-default: #ffffff;--icons-default-secondary: #b7bec7;--icons-default-tertiary: #383e48;--icons-action: #ffffff;--icons-action-hover: #b7bec7;--icons-disabled: #383e48;--icons-warning: #f5804e;--icons-positive: #47cc69;--icons-negative: #b22265;--icons-on-lit-blu: #ffffff;--icons-on-lit-blu-hover: #ffffff;--icons-on-action: #151b23;--icons-pressed: #5c636e;--icons-disabled-hover: #383e48;--icons-disabled-on-blu: #8fc1ff;--surface-primary: #151b23;--surface-secondary: #262c36;--surface-tertiary: #383e48;--surface-secondary-tinted: #e2f0ff;--surface-tertiary-tinted: #bddcff;--surface-action: #ffffff;--surface-action-hover: #b7bec7;--surface-positive: #cffad6;--surface-warning: #ffebde;--surface-negative: #ffe8ef;--surface-on-lit-blu: #0039b5;--surface-on-lit-blu-hover: #0066ff;--surface-disabled: #939ba6;--surface-action-pressed: #6e7580;--surface-negative-hover: #ffcbdb;--surface-negative-pressed: #ffafc8;--surface-overlay: #001d7a80;--surface-disabled-hover: #383e48;--surface-disabled-blue: #bddcff;--surface-elevation: #262c36;--surface-toggle: #5c636e;--surface-toggle-hover: #939ba6;--surface-toggle-hover-on-blu: #2d84ff;--surface-toggle-on-blu: #5aa1ff;--stroke-secondary: #49505b;--stroke-tertiary: #5c636e;--stroke-disabled: #383e48;--stroke-focused: #5aa1ff;--stroke-action: #ffffff;--stroke-positive: #005925;--stroke-warning: #6b1000;--stroke-negative: #6b0039;--stroke-action-hover: #b7bec7;--stroke-on-lit-blu: #0039b5;--stroke-on-lit-blu-hover: #0066ff;--stroke-action-pressed: #5c636e;--stroke-default: #ffffff;--stroke-disabled-hover: #151b23}._h1_1765w_1{font-size:clamp(2.75rem,1.8779vw + 2.3099rem,4rem);line-height:clamp(2.75rem,1.8779vw + 2.3099rem,4rem);letter-spacing:-.02em;font-family:var(--ui-font-primary);font-weight:500;font-feature-settings:"ss01" 1,"ss02" 1,"ss04" 1;margin:0}._button_dg3ri_1{appearance:none;border:none;background:none;display:inline-block;text-decoration:none;cursor:pointer;border-radius:var(--borderradius-sm);padding:clamp(.75rem,.3756vw + .662rem,1rem) clamp(1rem,.7512vw + .8239rem,1.5rem);font-size:clamp(1rem,.3756vw + .912rem,1.25rem);line-height:1.5rem;letter-spacing:-.02em;font-family:var(--ui-font-body);font-weight:500;font-feature-settings:"dlig" 1;transition:background-color .15s ease,color .15s ease}._button_dg3ri_1:focus-visible{outline:2px solid var(--stroke-focused);outline-offset:2px}._button_dg3ri_1:disabled{cursor:not-allowed}._sm_dg3ri_26{font-size:clamp(.875rem,.2817vw + .809rem,1.0625rem);line-height:1.5rem;letter-spacing:-.02em;padding:clamp(.5rem,.3756vw + .412rem,.75rem) clamp(1rem,.3756vw + .912rem,1.25rem)}._primary_dg3ri_33{background-color:var(--surface-action);color:var(--text-button-primary)}._primary_dg3ri_33:hover:not(:disabled){background-color:var(--surface-action-hover);color:var(--text-button-primary)}._primary_dg3ri_33:active:not(:disabled){background-color:var(--surface-action-pressed)}._primary_dg3ri_33:disabled{background-color:var(--surface-disabled);color:var(--text-disabled)}._secondary_dg3ri_49{background-color:transparent;color:var(--text-body-primary);box-shadow:inset 0 0 0 var(--strokewidth-sm) var(--stroke-default);transition:box-shadow .15s ease,color .15s ease}._secondary_dg3ri_49:hover:not(:disabled){box-shadow:inset 0 0 0 var(--strokewidth-sm) var(--stroke-action-hover);color:var(--text-action-hover)}._secondary_dg3ri_49:active:not(:disabled){box-shadow:inset 0 0 0 var(--strokewidth-sm) var(--stroke-action-pressed);color:var(--text-pressed)}._secondary_dg3ri_49:disabled{box-shadow:inset 0 0 0 var(--strokewidth-sm) var(--stroke-disabled);color:var(--text-disabled)}._negative_dg3ri_68{background-color:var(--surface-negative);color:var(--text-negative)}._negative_dg3ri_68:hover:not(:disabled){background-color:var(--surface-negative-hover);color:var(--text-negative)}._negative_dg3ri_68:active:not(:disabled){background-color:var(--surface-negative-pressed)}._negative_dg3ri_68:disabled{background-color:var(--surface-disabled);color:var(--text-disabled)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartyweb/ui",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
@@ -25,7 +25,8 @@
25
25
  "release": "changeset publish",
26
26
  "storybook": "node sd.config.js && storybook dev -p 6006",
27
27
  "build-storybook": "storybook build",
28
- "lint": "eslint src --max-warnings 0 && stylelint 'src/**/*.scss'"
28
+ "lint": "node scripts/check-use-client.mjs && eslint src --max-warnings 0 && stylelint 'src/**/*.scss'",
29
+ "format:check": "prettier --check ."
29
30
  },
30
31
  "peerDependencies": {
31
32
  "react": "^19.0.0",
@@ -39,6 +40,7 @@
39
40
  "@types/react-dom": "^19.2.3",
40
41
  "@vitejs/plugin-react": "^5.1.3",
41
42
  "eslint": "^10.0.0",
43
+ "eslint-plugin-react-hooks": "^7.1.1",
42
44
  "prettier": "^3.8.1",
43
45
  "react": "^19.2.4",
44
46
  "react-dom": "^19.2.4",