11import React , { createElement , forwardRef , ReactNode } from 'react' ;
22import type {
3- ColorsTokenName ,
43 DepthShadowAlias ,
5- ShapeTokenName ,
64 SpacingSpaceScale ,
75} from '@shopify/polaris-tokens' ;
86
97import { classNames , sanitizeCustomProperties } from '../../utilities/css' ;
108
119import styles from './Box.scss' ;
1210
13- type BackgroundColorTokenScale = Extract <
14- ColorsTokenName ,
15- | 'background'
16- | `background-${string } `
17- | 'surface'
18- | `surface-${string } `
11+ type Element = 'div' | 'span' ;
12+
13+ export type BackgroundColorTokenScale =
14+ | 'action-critical'
15+ | 'action-critical-depressed'
16+ | 'action-critical-disabled'
17+ | 'action-critical-hovered'
18+ | 'action-critical-pressed'
19+ | 'action-primary'
20+ | 'action-primary-depressed'
21+ | 'action-primary-disabled'
22+ | 'action-primary-hovered'
23+ | 'action-primary-pressed'
24+ | 'action-secondary'
25+ | 'action-secondary-depressed'
26+ | 'action-secondary-disabled'
27+ | 'action-secondary-hovered'
28+ | 'action-secondary-hovered-dark'
29+ | 'action-secondary-pressed'
30+ | 'action-secondary-pressed-dark'
1931 | 'backdrop'
32+ | 'background'
33+ | 'background-hovered'
34+ | 'background-pressed'
35+ | 'background-selected'
2036 | 'overlay'
21- | `action-${string } `
22- > ;
23- type ColorTokenScale = Extract < ColorsTokenName , 'text' | `text-${string } `> ;
24-
25- type BorderShapeTokenScale = ShapeTokenName extends `border-${infer Scale } `
26- ? Scale
27- : never ;
28- type BorderTokenScale = Exclude <
29- BorderShapeTokenScale ,
30- `radius-${string } ` | `width-${string } `
31- > ;
37+ | 'surface'
38+ | 'surface-attention'
39+ | 'surface-critical'
40+ | 'surface-critical-subdued'
41+ | 'surface-critical-subdued-depressed'
42+ | 'surface-critical-subdued-hovered'
43+ | 'surface-critical-subdued-pressed'
44+ | 'surface-dark'
45+ | 'surface-depressed'
46+ | 'surface-disabled'
47+ | 'surface-highlight'
48+ | 'surface-highlight-subdued'
49+ | 'surface-highlight-subdued-hovered'
50+ | 'surface-highlight-subdued-pressed'
51+ | 'surface-hovered'
52+ | 'surface-hovered-dark'
53+ | 'surface-neutral'
54+ | 'surface-neutral-disabled'
55+ | 'surface-neutral-hovered'
56+ | 'surface-neutral-pressed'
57+ | 'surface-neutral-subdued'
58+ | 'surface-neutral-subdued-dark'
59+ | 'surface-pressed'
60+ | 'surface-pressed-dark'
61+ | 'surface-primary-selected'
62+ | 'surface-primary-selected-hovered'
63+ | 'surface-primary-selected-pressed'
64+ | 'surface-search-field'
65+ | 'surface-search-field-dark'
66+ | 'surface-selected'
67+ | 'surface-selected-hovered'
68+ | 'surface-selected-pressed'
69+ | 'surface-subdued'
70+ | 'surface-success'
71+ | 'surface-success-subdued'
72+ | 'surface-success-subdued-hovered'
73+ | 'surface-success-subdued-pressed'
74+ | 'surface-warning'
75+ | 'surface-warning-subdued'
76+ | 'surface-warning-subdued-hovered'
77+ | 'surface-warning-subdued-pressed' ;
78+
79+ export type ColorTokenScale =
80+ | 'text'
81+ | 'text-critical'
82+ | 'text-disabled'
83+ | 'text-highlight'
84+ | 'text-on-critical'
85+ | 'text-on-dark'
86+ | 'text-on-interactive'
87+ | 'text-on-primary'
88+ | 'text-primary'
89+ | 'text-primary-hovered'
90+ | 'text-primary-pressed'
91+ | 'text-subdued'
92+ | 'text-subdued-on-dark'
93+ | 'text-success'
94+ | 'text-warning' ;
95+
96+ export type BorderTokenAlias =
97+ | 'base'
98+ | 'dark'
99+ | 'divider'
100+ | 'divider-on-dark'
101+ | 'transparent' ;
32102
33103interface Border {
34- bottom : BorderTokenScale ;
35- left : BorderTokenScale ;
36- right : BorderTokenScale ;
37- top : BorderTokenScale ;
104+ bottom : BorderTokenAlias ;
105+ left : BorderTokenAlias ;
106+ right : BorderTokenAlias ;
107+ top : BorderTokenAlias ;
38108}
39109
40- type BorderRadiusTokenScale = Extract <
41- BorderShapeTokenScale ,
42- `radius-${string } `
43- > extends `radius-${infer Scale } `
44- ? Scale
45- : never ;
110+ export type BorderRadiusTokenScale =
111+ | '05'
112+ | '1'
113+ | '2'
114+ | '3'
115+ | '4'
116+ | '5'
117+ | '6'
118+ | 'base'
119+ | 'large'
120+ | 'half' ;
46121
47122interface BorderRadius {
48123 bottomLeft : BorderRadiusTokenScale ;
@@ -58,23 +133,21 @@ interface Spacing {
58133 top : SpacingSpaceScale ;
59134}
60135
61- type Element = 'div' | 'span' ;
62-
63136export interface BoxProps {
64137 /** HTML Element type */
65138 as ?: Element ;
66139 /** Background color */
67140 background ?: BackgroundColorTokenScale ;
68141 /** Border style */
69- border ?: BorderTokenScale ;
142+ border ?: BorderTokenAlias ;
70143 /** Bottom border style */
71- borderBottom ?: BorderTokenScale ;
144+ borderBottom ?: BorderTokenAlias ;
72145 /** Left border style */
73- borderLeft ?: BorderTokenScale ;
146+ borderLeft ?: BorderTokenAlias ;
74147 /** Right border style */
75- borderRight ?: BorderTokenScale ;
148+ borderRight ?: BorderTokenAlias ;
76149 /** Top border style */
77- borderTop ?: BorderTokenScale ;
150+ borderTop ?: BorderTokenAlias ;
78151 /** Border radius */
79152 borderRadius ?: BorderRadiusTokenScale ;
80153 /** Bottom left border radius */
0 commit comments