@teseor/css 1.15.2 → 1.15.5

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 (106) hide show
  1. package/dist/compiled.css +1 -1
  2. package/dist/index.css +16 -16
  3. package/package.json +1 -1
  4. package/src/base/docs.html +1 -1
  5. package/src/base/typography/docs.html +33 -33
  6. package/src/components/actions/button/docs.html +19 -19
  7. package/src/components/actions/button/index.scss +6 -6
  8. package/src/components/actions/button-group/docs.html +12 -12
  9. package/src/components/actions/close-button/docs.html +10 -10
  10. package/src/components/content/divider/docs.html +1 -1
  11. package/src/components/content/scroll-area/docs.html +81 -81
  12. package/src/components/content/spacer/docs.html +6 -6
  13. package/src/components/data-display/avatar/docs.html +8 -8
  14. package/src/components/data-display/card/docs.html +12 -12
  15. package/src/components/data-display/card/index.scss +2 -2
  16. package/src/components/data-display/data-list/docs.html +32 -32
  17. package/src/components/data-display/icon/docs.html +5 -5
  18. package/src/components/data-display/image/docs.html +1 -1
  19. package/src/components/data-display/stat/docs.html +6 -6
  20. package/src/components/data-display/status/docs.html +9 -9
  21. package/src/components/data-display/table/docs.html +14 -14
  22. package/src/components/data-display/tag/docs.html +17 -17
  23. package/src/components/disclosure/accordion/docs.html +14 -14
  24. package/src/components/disclosure/disclosure/docs.html +8 -8
  25. package/src/components/feedback/alert/docs.html +18 -18
  26. package/src/components/feedback/progress/docs.html +2 -2
  27. package/src/components/feedback/progress/index.scss +3 -3
  28. package/src/components/feedback/toast/docs.html +22 -22
  29. package/src/components/forms/checkbox/docs.html +1 -1
  30. package/src/components/forms/checkbox-group/docs.html +21 -21
  31. package/src/components/forms/field/docs.html +11 -11
  32. package/src/components/forms/field/index.scss +3 -3
  33. package/src/components/forms/fieldset/docs.html +30 -30
  34. package/src/components/forms/form/docs.html +29 -29
  35. package/src/components/forms/form-error/docs.html +2 -2
  36. package/src/components/forms/form-helper/docs.html +9 -9
  37. package/src/components/forms/input/docs.html +13 -13
  38. package/src/components/forms/label/docs.html +7 -7
  39. package/src/components/forms/number-input/docs.html +12 -12
  40. package/src/components/forms/number-input/index.scss +2 -2
  41. package/src/components/forms/password-input/docs.html +14 -14
  42. package/src/components/forms/password-input/index.scss +2 -2
  43. package/src/components/forms/radio/docs.html +5 -5
  44. package/src/components/forms/radio-group/docs.html +20 -20
  45. package/src/components/forms/search-input/docs.html +7 -7
  46. package/src/components/forms/search-input/index.scss +2 -2
  47. package/src/components/forms/select/docs.html +23 -23
  48. package/src/components/forms/textarea/docs.html +18 -18
  49. package/src/components/forms/toggle/docs.html +1 -1
  50. package/src/components/forms/toggle/index.scss +1 -1
  51. package/src/components/navigation/breadcrumb/docs.html +11 -11
  52. package/src/components/navigation/dropdown-menu/docs.html +18 -18
  53. package/src/components/navigation/dropdown-menu/index.scss +2 -2
  54. package/src/components/navigation/menu/docs.html +25 -25
  55. package/src/components/navigation/menu/index.scss +2 -2
  56. package/src/components/navigation/nav/docs.html +13 -13
  57. package/src/components/navigation/pagination/docs.html +6 -6
  58. package/src/components/navigation/tabs/docs.html +19 -19
  59. package/src/components/overlays/dialog/docs.html +12 -12
  60. package/src/components/overlays/drawer/docs.html +16 -16
  61. package/src/components/overlays/modal/docs.html +11 -11
  62. package/src/components/overlays/overlay/docs.html +3 -3
  63. package/src/components/overlays/popover/docs.html +7 -7
  64. package/src/components/overlays/tooltip/docs.html +7 -7
  65. package/src/components/typography/blockquote/docs.html +5 -5
  66. package/src/components/typography/code/docs.html +2 -2
  67. package/src/components/typography/code-block/docs.html +2 -2
  68. package/src/components/typography/heading/docs.html +11 -11
  69. package/src/components/typography/kbd/docs.html +6 -6
  70. package/src/components/typography/link/docs.html +8 -8
  71. package/src/components/typography/link/index.scss +2 -2
  72. package/src/components/typography/list/docs.html +32 -32
  73. package/src/config/guides/accessibility.docs.html +5 -5
  74. package/src/config/guides/getting-started.docs.html +7 -7
  75. package/src/config/guides/theming.docs.html +21 -21
  76. package/src/config/tokens/_variables.scss +14 -0
  77. package/src/config/tokens/docs.html +7 -7
  78. package/src/config/tokens/grid/docs.html +3 -3
  79. package/src/config/tokens/spacing/docs.html +6 -6
  80. package/src/debug/docs.html +3 -3
  81. package/src/layout/app-shell/docs.html +15 -15
  82. package/src/layout/aspect-ratio/docs.html +8 -8
  83. package/src/layout/box/docs.html +10 -10
  84. package/src/layout/center/docs.html +4 -4
  85. package/src/layout/column/docs.html +11 -11
  86. package/src/layout/container/docs.html +7 -7
  87. package/src/layout/content/docs.html +12 -12
  88. package/src/layout/footer/docs.html +16 -16
  89. package/src/layout/grid/docs.html +25 -25
  90. package/src/layout/grid/index.scss +4 -2
  91. package/src/layout/main/docs.html +3 -3
  92. package/src/layout/nav-rail/docs.html +6 -6
  93. package/src/layout/page-header/docs.html +9 -9
  94. package/src/layout/row/docs.html +18 -18
  95. package/src/layout/sidebar/docs.html +5 -5
  96. package/src/layout/sidebar-nav/docs.html +37 -37
  97. package/src/layout/sidebar-nav/index.scss +2 -2
  98. package/src/layout/topbar/docs.html +14 -14
  99. package/src/utilities/container/docs.html +4 -4
  100. package/src/utilities/display/docs.html +11 -11
  101. package/src/utilities/scroll-animation/docs.html +5 -5
  102. package/src/utilities/scroll-snap/docs.html +30 -30
  103. package/src/utilities/spacing/docs.html +12 -12
  104. package/src/utilities/text/docs.html +36 -36
  105. package/src/utilities/view-transition/docs.html +12 -12
  106. package/src/utilities/visually-hidden/docs.html +3 -3
@@ -23,23 +23,23 @@ import '@teseor/css/dist/index.css';
23
23
  <!-- @root_class -->
24
24
  <!-- Add the .ui-root class to set baseline typography and colors. -->
25
25
  <div class="ui-root">
26
- <p>Text inherits font, size, color from .ui-root</p>
26
+ <p>{{ t('text_inherits_from_ui_root', 'Text inherits font, size, color from .ui-root') }}</p>
27
27
  </div>
28
28
 
29
29
  <!-- @first_component -->
30
30
  <!-- Use any component by adding its class. No JS required. -->
31
31
  <div class="ui-row ui-row--sm">
32
- <button class="ui-button">Primary</button>
33
- <button class="ui-button ui-button--secondary">Secondary</button>
34
- <button class="ui-button ui-button--danger">Danger</button>
32
+ <button class="ui-button">{{ t('primary', 'Primary') }}</button>
33
+ <button class="ui-button ui-button--secondary">{{ t('secondary', 'Secondary') }}</button>
34
+ <button class="ui-button ui-button--danger">{{ t('danger', 'Danger') }}</button>
35
35
  </div>
36
36
  <div class="ui-card">
37
- <h3 class="ui-heading ui-heading--4">Card Title</h3>
38
- <p>Cards use semantic tokens for padding, border, and background.</p>
37
+ <h3 class="ui-heading ui-heading--4">{{ t('card_title', 'Card Title') }}</h3>
38
+ <p>{{ t('cards_use_semantic_tokens', 'Cards use semantic tokens for padding, border, and background.') }}</p>
39
39
  </div>
40
40
 
41
41
  <!-- @customize -->
42
42
  <!-- Override design tokens with CSS custom properties. No build step required. -->
43
43
  <div class="theme-demo" style="--ui-hue-primary: 270">
44
- <button class="ui-button">Purple brand</button>
44
+ <button class="ui-button">{{ t('purple_brand', 'Purple brand') }}</button>
45
45
  </div>
@@ -8,62 +8,62 @@ weight: 2
8
8
  <!-- @brand_colors -->
9
9
  <!-- Change the entire color palette by adjusting hue values -->
10
10
  <div class="theme-demo">
11
- <button class="ui-button">Primary</button>
12
- <button class="ui-button ui-button--secondary">Secondary</button>
13
- <button class="ui-button ui-button--danger">Danger</button>
11
+ <button class="ui-button">{{ t('primary', 'Primary') }}</button>
12
+ <button class="ui-button ui-button--secondary">{{ t('secondary', 'Secondary') }}</button>
13
+ <button class="ui-button ui-button--danger">{{ t('danger', 'Danger') }}</button>
14
14
  </div>
15
15
  <div class="theme-demo theme-purple">
16
- <button class="ui-button">Primary</button>
17
- <button class="ui-button ui-button--secondary">Secondary</button>
18
- <button class="ui-button ui-button--danger">Danger</button>
16
+ <button class="ui-button">{{ t('primary', 'Primary') }}</button>
17
+ <button class="ui-button ui-button--secondary">{{ t('secondary', 'Secondary') }}</button>
18
+ <button class="ui-button ui-button--danger">{{ t('danger', 'Danger') }}</button>
19
19
  </div>
20
20
  <div class="theme-demo theme-teal">
21
- <button class="ui-button">Primary</button>
22
- <button class="ui-button ui-button--secondary">Secondary</button>
23
- <button class="ui-button ui-button--danger">Danger</button>
21
+ <button class="ui-button">{{ t('primary', 'Primary') }}</button>
22
+ <button class="ui-button ui-button--secondary">{{ t('secondary', 'Secondary') }}</button>
23
+ <button class="ui-button ui-button--danger">{{ t('danger', 'Danger') }}</button>
24
24
  </div>
25
25
  <div class="theme-demo theme-orange">
26
- <button class="ui-button">Primary</button>
27
- <button class="ui-button ui-button--secondary">Secondary</button>
28
- <button class="ui-button ui-button--danger">Danger</button>
26
+ <button class="ui-button">{{ t('primary', 'Primary') }}</button>
27
+ <button class="ui-button ui-button--secondary">{{ t('secondary', 'Secondary') }}</button>
28
+ <button class="ui-button ui-button--danger">{{ t('danger', 'Danger') }}</button>
29
29
  </div>
30
30
 
31
31
  <!-- @dark_mode -->
32
32
  <!-- Dark mode uses the CSS light-dark() function. Tokens resolve automatically based on color-scheme. Override with data-theme attribute. -->
33
33
  <div class="theme-demo">
34
34
  <div class="ui-card">
35
- <p>Follows OS color scheme</p>
35
+ <p>{{ t('follows_os_color_scheme', 'Follows OS color scheme') }}</p>
36
36
  </div>
37
37
  </div>
38
38
  <div class="theme-demo" data-theme="light">
39
39
  <div class="ui-card">
40
- <p>Always light</p>
40
+ <p>{{ t('always_light', 'Always light') }}</p>
41
41
  </div>
42
42
  </div>
43
43
  <div class="theme-demo" data-theme="dark">
44
44
  <div class="ui-card">
45
- <p>Always dark</p>
45
+ <p>{{ t('always_dark', 'Always dark') }}</p>
46
46
  </div>
47
47
  </div>
48
48
 
49
49
  <!-- @component_overrides -->
50
50
  <!-- Override specific component tokens -->
51
51
  <div class="theme-demo custom-buttons">
52
- <button class="ui-button ui-button--sm">Small</button>
53
- <button class="ui-button">Default</button>
54
- <button class="ui-button ui-button--lg">Large</button>
52
+ <button class="ui-button ui-button--sm">{{ t('small', 'Small') }}</button>
53
+ <button class="ui-button">{{ t('default', 'Default') }}</button>
54
+ <button class="ui-button ui-button--lg">{{ t('large', 'Large') }}</button>
55
55
  </div>
56
56
  <div class="theme-demo custom-cards">
57
57
  <div class="ui-card">
58
- <p>Card with custom padding</p>
58
+ <p>{{ t('card_with_custom_padding', 'Card with custom padding') }}</p>
59
59
  </div>
60
60
  </div>
61
61
 
62
62
  <!-- @full_theme_example -->
63
63
  <!-- Complete theme customization -->
64
64
  <div class="theme-demo theme-corporate">
65
- <button class="ui-button">Action</button>
65
+ <button class="ui-button">{{ t('action', 'Action') }}</button>
66
66
  <div class="ui-card">
67
- <p>Corporate theme with teal accent and sharp corners</p>
67
+ <p>{{ t('corporate_theme_with_teal_accent_and_sharp_corners', 'Corporate theme with teal accent and sharp corners') }}</p>
68
68
  </div>
69
69
  </div>
@@ -119,8 +119,13 @@ $weight-bold: 700;
119
119
  // Letter spacing
120
120
  $tracking-display: -0.02em;
121
121
  $tracking-body: 0;
122
+ $tracking-wide: 0.05em;
122
123
  $tracking-caps: 0.08em;
123
124
 
125
+ // Relative font sizes (for sub-elements sized relative to parent)
126
+ $font-size-relative-xs: 0.6em;
127
+ $font-size-relative-sm: 0.75em;
128
+
124
129
  // ==========================================================================
125
130
  // 5. Radius — derived from $unit
126
131
  // ==========================================================================
@@ -135,6 +140,7 @@ $radius-full: 9999px;
135
140
  $border-width-sm: $unit * 0.125; // 1px
136
141
  $border-width-md: $unit * 0.25; // 2px
137
142
  $border-width-lg: $unit * 0.5; // 4px
143
+ $focus-ring-offset: -$border-width-md;
138
144
 
139
145
  // ==========================================================================
140
146
  // 7. Shadows — static hue fallback
@@ -197,6 +203,7 @@ $overlay-bg: rgb(0 0 0 / 0.5);
197
203
  $overlay-bg-light: rgb(255 255 255 / 0.7);
198
204
  $overlay-bg-blur: rgb(0 0 0 / 0.3);
199
205
  $overlay-bg-subtle: rgb(0 0 0 / 0.1);
206
+ $stripe-highlight: rgb(255 255 255 / 0.15);
200
207
 
201
208
  // ==========================================================================
202
209
  // 11. Semantic spacing
@@ -223,6 +230,13 @@ $spinner-duration: 750ms;
223
230
  $progress-circle-stroke-width: 8;
224
231
  $skeleton-shimmer: rgb(255 255 255 / 0.5);
225
232
 
233
+ // Layout
234
+ $container-threshold-sm: 30rem;
235
+ $grid-col-min: 16rem;
236
+
237
+ // Icon
238
+ $icon-size-inline: 1em;
239
+
226
240
  // Misc
227
241
  $slider-thumb-shadow: 0 1px 3px rgb(0 0 0 / 0.2);
228
242
  $toast-viewport-max-width: 420px;
@@ -15,34 +15,34 @@ skipValidation: true
15
15
  <!-- Border radius tokens derived from the 8px unit. -->
16
16
  <div class="ui-column ui-column--xs" style="align-items: center">
17
17
  <div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-sm)"></div>
18
- <small>sm (4px)</small>
18
+ <small>{{ t('sm_4px', 'sm (4px)') }}</small>
19
19
  </div>
20
20
  <div class="ui-column ui-column--xs" style="align-items: center">
21
21
  <div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-md)"></div>
22
- <small>md (8px)</small>
22
+ <small>{{ t('md_8px', 'md (8px)') }}</small>
23
23
  </div>
24
24
  <div class="ui-column ui-column--xs" style="align-items: center">
25
25
  <div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-lg)"></div>
26
- <small>lg (16px)</small>
26
+ <small>{{ t('lg_16px', 'lg (16px)') }}</small>
27
27
  </div>
28
28
  <div class="ui-column ui-column--xs" style="align-items: center">
29
29
  <div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-full)"></div>
30
- <small>full</small>
30
+ <small>{{ t('full', 'full') }}</small>
31
31
  </div>
32
32
 
33
33
  <!-- @shadows | row -->
34
34
  <!-- Elevation shadows using the primary hue for tinted depth. -->
35
35
  <div class="ui-column ui-column--xs" style="align-items: center">
36
36
  <div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-sm)"></div>
37
- <small>sm</small>
37
+ <small>{{ t('sm', 'sm') }}</small>
38
38
  </div>
39
39
  <div class="ui-column ui-column--xs" style="align-items: center">
40
40
  <div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-md)"></div>
41
- <small>md</small>
41
+ <small>{{ t('md', 'md') }}</small>
42
42
  </div>
43
43
  <div class="ui-column ui-column--xs" style="align-items: center">
44
44
  <div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-lg)"></div>
45
- <small>lg</small>
45
+ <small>{{ t('lg', 'lg') }}</small>
46
46
  </div>
47
47
 
48
48
  <!-- @motion -->
@@ -5,6 +5,6 @@ skipValidation: true
5
5
  ---
6
6
 
7
7
  <!-- @default | column -->
8
- <div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-1); display: flex; align-items: center; padding: 0 var(--ui-space-2)">row-1 (16px)</div>
9
- <div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-2); display: flex; align-items: center; padding: 0 var(--ui-space-2)">row-2 (32px)</div>
10
- <div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-3); display: flex; align-items: center; padding: 0 var(--ui-space-2)">row-3 (48px)</div>
8
+ <div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-1); display: flex; align-items: center; padding: 0 var(--ui-space-2)">{{ t('row_1_16px', 'row-1 (16px)') }}</div>
9
+ <div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-2); display: flex; align-items: center; padding: 0 var(--ui-space-2)">{{ t('row_2_32px', 'row-2 (32px)') }}</div>
10
+ <div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-3); display: flex; align-items: center; padding: 0 var(--ui-space-2)">{{ t('row_3_48px', 'row-3 (48px)') }}</div>
@@ -7,25 +7,25 @@ skipValidation: true
7
7
  <!-- @default | row -->
8
8
  <div class="ui-column ui-column--xs" style="align-items: center">
9
9
  <div style="width: var(--ui-space-1); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
10
- <small>space-1</small>
10
+ <small>{{ t('space_1', 'space-1') }}</small>
11
11
  </div>
12
12
  <div class="ui-column ui-column--xs" style="align-items: center">
13
13
  <div style="width: var(--ui-space-2); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
14
- <small>space-2</small>
14
+ <small>{{ t('space_2', 'space-2') }}</small>
15
15
  </div>
16
16
  <div class="ui-column ui-column--xs" style="align-items: center">
17
17
  <div style="width: var(--ui-space-3); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
18
- <small>space-3</small>
18
+ <small>{{ t('space_3', 'space-3') }}</small>
19
19
  </div>
20
20
  <div class="ui-column ui-column--xs" style="align-items: center">
21
21
  <div style="width: var(--ui-space-4); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
22
- <small>space-4</small>
22
+ <small>{{ t('space_4', 'space-4') }}</small>
23
23
  </div>
24
24
  <div class="ui-column ui-column--xs" style="align-items: center">
25
25
  <div style="width: var(--ui-space-6); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
26
- <small>space-6</small>
26
+ <small>{{ t('space_6', 'space-6') }}</small>
27
27
  </div>
28
28
  <div class="ui-column ui-column--xs" style="align-items: center">
29
29
  <div style="width: var(--ui-space-8); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
30
- <small>space-8</small>
30
+ <small>{{ t('space_8', 'space-8') }}</small>
31
31
  </div>
@@ -20,8 +20,8 @@ skipValidation: true
20
20
  <!-- Outlines all child elements to reveal layout boundaries. -->
21
21
  <div class="ui-debug-outline">
22
22
  <div class="ui-row ui-row--sm">
23
- <div style="padding: var(--ui-space-1)">A</div>
24
- <div style="padding: var(--ui-space-1)">B</div>
25
- <div style="padding: var(--ui-space-1)">C</div>
23
+ <div style="padding: var(--ui-space-1)">{{ t('a', 'A') }}</div>
24
+ <div style="padding: var(--ui-space-1)">{{ t('b', 'B') }}</div>
25
+ <div style="padding: var(--ui-space-1)">{{ t('c', 'C') }}</div>
26
26
  </div>
27
27
  </div>
@@ -21,27 +21,27 @@ description: Layout primitives for app shells with sidebars and content containe
21
21
  <!-- Add a fixed topbar by setting --topbar-height on app-shell. Sidebar and main offset automatically. -->
22
22
  <body class="ui-app-shell" style="--topbar-height: var(--ui-row-3)">
23
23
  <header class="ui-topbar ui-topbar--fixed ui-topbar--bordered">
24
- <div class="ui-topbar__start"><strong>App</strong></div>
25
- <div class="ui-topbar__end">User</div>
24
+ <div class="ui-topbar__start"><strong>{{ t('app', 'App') }}</strong></div>
25
+ <div class="ui-topbar__end">{{ t('user', 'User') }}</div>
26
26
  </header>
27
- <aside class="ui-sidebar">Sidebar</aside>
27
+ <aside class="ui-sidebar">{{ t('sidebar', 'Sidebar') }}</aside>
28
28
  <main class="ui-main">
29
- <div class="ui-container">Content</div>
29
+ <div class="ui-container">{{ t('content', 'Content') }}</div>
30
30
  </main>
31
31
  </body>
32
32
 
33
33
  <!-- @sidebar_widths | column -->
34
34
  <div class="ui-row ui-row--sm">
35
35
  <code>.ui-sidebar--sm</code>
36
- <span>192px (24 units)</span>
36
+ <span>{{ t('192px_24_units', '192px (24 units)') }}</span>
37
37
  </div>
38
38
  <div class="ui-row ui-row--sm">
39
39
  <code>.ui-sidebar--md</code>
40
- <span>240px (30 units) - default</span>
40
+ <span>{{ t('240px_30_units_default', '240px (30 units) - default') }}</span>
41
41
  </div>
42
42
  <div class="ui-row ui-row--sm">
43
43
  <code>.ui-sidebar--lg</code>
44
- <span>320px (40 units)</span>
44
+ <span>{{ t('320px_40_units', '320px (40 units)') }}</span>
45
45
  </div>
46
46
 
47
47
  <!-- @sidebar_position -->
@@ -52,33 +52,33 @@ description: Layout primitives for app shells with sidebars and content containe
52
52
  <!-- @container_widths | column -->
53
53
  <div class="ui-row ui-row--sm">
54
54
  <code>.ui-container--sm</code>
55
- <span>640px (80 units)</span>
55
+ <span>{{ t('640px_80_units', '640px (80 units)') }}</span>
56
56
  </div>
57
57
  <div class="ui-row ui-row--sm">
58
58
  <code>.ui-container--md</code>
59
- <span>800px (100 units)</span>
59
+ <span>{{ t('800px_100_units', '800px (100 units)') }}</span>
60
60
  </div>
61
61
  <div class="ui-row ui-row--sm">
62
62
  <code>.ui-container--lg</code>
63
- <span>960px (120 units) - default</span>
63
+ <span>{{ t('960px_120_units_default', '960px (120 units) - default') }}</span>
64
64
  </div>
65
65
  <div class="ui-row ui-row--sm">
66
66
  <code>.ui-container--xl</code>
67
- <span>1280px (160 units)</span>
67
+ <span>{{ t('1280px_160_units', '1280px (160 units)') }}</span>
68
68
  </div>
69
69
  <div class="ui-row ui-row--sm">
70
70
  <code>.ui-container--full</code>
71
- <span>No max width</span>
71
+ <span>{{ t('no_max_width', 'No max width') }}</span>
72
72
  </div>
73
73
 
74
74
  <!-- @with_footer -->
75
75
  <!-- Place footer inside the content area, after the container. -->
76
76
  <body class="ui-app-shell">
77
77
  <main class="ui-main ui-main--full">
78
- <div class="ui-container">Content</div>
78
+ <div class="ui-container">{{ t('content', 'Content') }}</div>
79
79
  <footer class="ui-footer ui-footer--bordered">
80
- <div class="ui-footer__start"><small>Brand</small></div>
81
- <div class="ui-footer__end"><small>v1.0.0</small></div>
80
+ <div class="ui-footer__start"><small>{{ t('brand', 'Brand') }}</small></div>
81
+ <div class="ui-footer__end"><small>{{ t('v100', 'v1.0.0') }}</small></div>
82
82
  </footer>
83
83
  </main>
84
84
  </body>
@@ -6,33 +6,33 @@ description: Constrains a container to a specific aspect ratio. Media children f
6
6
  <!-- @presets -->
7
7
  <div class="ui-row ui-row--md">
8
8
  <div class="ui-aspect-ratio ui-aspect-ratio--square" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
9
- <span style="padding: var(--ui-space-2)">square</span>
9
+ <span style="padding: var(--ui-space-2)">{{ t('square', 'square') }}</span>
10
10
  </div>
11
11
  <div class="ui-aspect-ratio ui-aspect-ratio--video" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
12
- <span style="padding: var(--ui-space-2)">video</span>
12
+ <span style="padding: var(--ui-space-2)">{{ t('video', 'video') }}</span>
13
13
  </div>
14
14
  <div class="ui-aspect-ratio ui-aspect-ratio--photo" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
15
- <span style="padding: var(--ui-space-2)">photo</span>
15
+ <span style="padding: var(--ui-space-2)">{{ t('photo', 'photo') }}</span>
16
16
  </div>
17
17
  <div class="ui-aspect-ratio ui-aspect-ratio--wide" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
18
- <span style="padding: var(--ui-space-2)">wide</span>
18
+ <span style="padding: var(--ui-space-2)">{{ t('wide', 'wide') }}</span>
19
19
  </div>
20
20
  <div class="ui-aspect-ratio ui-aspect-ratio--portrait" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
21
- <span style="padding: var(--ui-space-2)">portrait</span>
21
+ <span style="padding: var(--ui-space-2)">{{ t('portrait', 'portrait') }}</span>
22
22
  </div>
23
23
  </div>
24
24
 
25
25
  <!-- @with_media -->
26
26
  <div class="ui-row ui-row--md">
27
27
  <div class="ui-aspect-ratio ui-aspect-ratio--video" style="inline-size: 240px">
28
- <div style="inline-size: 100%; block-size: 100%; background: var(--ui-color-primary); color: var(--ui-color-on-primary); display: grid; place-items: center">img (video)</div>
28
+ <div style="inline-size: 100%; block-size: 100%; background: var(--ui-color-primary); color: var(--ui-color-on-primary); display: grid; place-items: center">{{ t('img_video', 'img (video)') }}</div>
29
29
  </div>
30
30
  <div class="ui-aspect-ratio ui-aspect-ratio--square" style="inline-size: 240px">
31
- <div style="inline-size: 100%; block-size: 100%; background: var(--ui-color-primary); color: var(--ui-color-on-primary); display: grid; place-items: center">img (square)</div>
31
+ <div style="inline-size: 100%; block-size: 100%; background: var(--ui-color-primary); color: var(--ui-color-on-primary); display: grid; place-items: center">{{ t('img_square', 'img (square)') }}</div>
32
32
  </div>
33
33
  </div>
34
34
 
35
35
  <!-- @custom_ratio -->
36
36
  <div class="ui-aspect-ratio" style="--ui-aspect-ratio: 2.35 / 1; inline-size: 320px; background: var(--ui-color-bg-muted)">
37
- <span style="padding: var(--ui-space-2)">2.35:1 (cinemascope)</span>
37
+ <span style="padding: var(--ui-space-2)">{{ t('2351_cinemascope', '2.35:1 (cinemascope)') }}</span>
38
38
  </div>
@@ -4,21 +4,21 @@ description: Base container with style props. Foundation for layout primitives.
4
4
  ---
5
5
 
6
6
  <!-- @default -->
7
- <div class="ui-box">Content</div>
7
+ <div class="ui-box">{{ t('content', 'Content') }}</div>
8
8
 
9
9
  <!-- @padding | column -->
10
- <div class="ui-box ui-box--p-1 ui-box--bg-subtle">Padding 1</div>
11
- <div class="ui-box ui-box--p-2 ui-box--bg-subtle">Padding 2</div>
12
- <div class="ui-box ui-box--p-3 ui-box--bg-subtle">Padding 3</div>
13
- <div class="ui-box ui-box--p-4 ui-box--bg-subtle">Padding 4</div>
10
+ <div class="ui-box ui-box--p-1 ui-box--bg-subtle">{{ t('padding_1', 'Padding 1') }}</div>
11
+ <div class="ui-box ui-box--p-2 ui-box--bg-subtle">{{ t('padding_2', 'Padding 2') }}</div>
12
+ <div class="ui-box ui-box--p-3 ui-box--bg-subtle">{{ t('padding_3', 'Padding 3') }}</div>
13
+ <div class="ui-box ui-box--p-4 ui-box--bg-subtle">{{ t('padding_4', 'Padding 4') }}</div>
14
14
 
15
15
  <!-- @background | column -->
16
- <div class="ui-box ui-box--p-2 ui-box--bg-subtle">Subtle background</div>
17
- <div class="ui-box ui-box--p-2 ui-box--bg-muted">Muted background</div>
16
+ <div class="ui-box ui-box--p-2 ui-box--bg-subtle">{{ t('subtle_background', 'Subtle background') }}</div>
17
+ <div class="ui-box ui-box--p-2 ui-box--bg-muted">{{ t('muted_background', 'Muted background') }}</div>
18
18
 
19
19
  <!-- @rounded | row -->
20
- <div class="ui-box ui-box--p-3 ui-box--bg-subtle ui-box--rounded">Rounded</div>
21
- <div class="ui-box ui-box--p-3 ui-box--bg-subtle ui-box--rounded-lg">Rounded lg</div>
20
+ <div class="ui-box ui-box--p-3 ui-box--bg-subtle ui-box--rounded">{{ t('rounded', 'Rounded') }}</div>
21
+ <div class="ui-box ui-box--p-3 ui-box--bg-subtle ui-box--rounded-lg">{{ t('rounded_lg', 'Rounded lg') }}</div>
22
22
 
23
23
  <!-- @custom_via_css_variables -->
24
- <div class="ui-box" style="--box-padding: var(--ui-space-3); --box-bg: var(--ui-color-primary); --box-color: white; --box-radius: var(--ui-radius-lg);">Custom box</div>
24
+ <div class="ui-box" style="--box-padding: var(--ui-space-3); --box-bg: var(--ui-color-primary); --box-color: white; --box-radius: var(--ui-radius-lg);">{{ t('custom_box', 'Custom box') }}</div>
@@ -6,18 +6,18 @@ description: Centers content horizontally and vertically.
6
6
  <!-- @basic -->
7
7
  <!-- Centers children both horizontally and vertically using flexbox. -->
8
8
  <div class="ui-center" style="height: var(--ui-row-4); background: var(--ui-color-bg-muted)">
9
- <span>Centered content</span>
9
+ <span>{{ t('centered_content', 'Centered content') }}</span>
10
10
  </div>
11
11
 
12
12
  <!-- @column_direction -->
13
13
  <!-- Stack centered children vertically. -->
14
14
  <div class="ui-center ui-center--column" style="height: var(--ui-row-6); background: var(--ui-color-bg-muted)">
15
- <span>First line</span>
16
- <span>Second line</span>
15
+ <span>{{ t('first_line', 'First line') }}</span>
16
+ <span>{{ t('second_line', 'Second line') }}</span>
17
17
  </div>
18
18
 
19
19
  <!-- @full_page_center -->
20
20
  <!-- Center content within a full viewport area, useful for loading or empty states. -->
21
21
  <div class="ui-center" style="height: var(--ui-row-8); background: var(--ui-color-bg-muted)">
22
- <p>No results found</p>
22
+ <p>{{ t('no_results_found', 'No results found') }}</p>
23
23
  </div>
@@ -5,25 +5,25 @@ description: Vertical layout with consistent gap.
5
5
 
6
6
  <!-- @basic -->
7
7
  <div class="ui-column ui-column--sm">
8
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Item 1</div>
9
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Item 2</div>
10
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Item 3</div>
8
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">{{ t('item_1', 'Item 1') }}</div>
9
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">{{ t('item_2', 'Item 2') }}</div>
10
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">{{ t('item_3', 'Item 3') }}</div>
11
11
  </div>
12
12
 
13
13
  <!-- @sizes -->
14
14
  <div class="ui-column ui-column--xs">
15
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xs gap</div>
16
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xs gap</div>
15
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">{{ t('xs_gap', 'xs gap') }}</div>
16
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">{{ t('xs_gap', 'xs gap') }}</div>
17
17
  </div>
18
18
  <div class="ui-column ui-column--md">
19
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">md gap</div>
20
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">md gap</div>
19
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">{{ t('md_gap', 'md gap') }}</div>
20
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">{{ t('md_gap', 'md gap') }}</div>
21
21
  </div>
22
22
  <div class="ui-column ui-column--lg">
23
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">lg gap</div>
24
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">lg gap</div>
23
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">{{ t('lg_gap', 'lg gap') }}</div>
24
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">{{ t('lg_gap', 'lg gap') }}</div>
25
25
  </div>
26
26
  <div class="ui-column ui-column--xl">
27
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xl gap</div>
28
- <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xl gap</div>
27
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">{{ t('xl_gap', 'xl gap') }}</div>
28
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">{{ t('xl_gap', 'xl gap') }}</div>
29
29
  </div>
@@ -6,29 +6,29 @@ description: Content wrapper with max-width and inline padding. Centers page con
6
6
  <!-- @default -->
7
7
  <!-- Constrains content to a max width with horizontal padding. -->
8
8
  <div class="ui-container" style="background: var(--ui-color-bg-muted)">
9
- <p>Content within a container</p>
9
+ <p>{{ t('content_within_a_container', 'Content within a container') }}</p>
10
10
  </div>
11
11
 
12
12
  <!-- @centered -->
13
13
  <!-- Centers the container horizontally with auto margins. -->
14
14
  <div class="ui-container ui-container--center" style="background: var(--ui-color-bg-muted)">
15
- <p>Centered container</p>
15
+ <p>{{ t('centered_container', 'Centered container') }}</p>
16
16
  </div>
17
17
 
18
18
  <!-- @sizes | column -->
19
19
  <!-- Width presets for different layout needs. -->
20
20
  <div class="ui-container ui-container--sm ui-container--center" style="background: var(--ui-color-bg-muted)">
21
- <p>Small</p>
21
+ <p>{{ t('small', 'Small') }}</p>
22
22
  </div>
23
23
  <div class="ui-container ui-container--md ui-container--center" style="background: var(--ui-color-bg-muted)">
24
- <p>Medium</p>
24
+ <p>{{ t('medium', 'Medium') }}</p>
25
25
  </div>
26
26
  <div class="ui-container ui-container--lg ui-container--center" style="background: var(--ui-color-bg-muted)">
27
- <p>Large (default)</p>
27
+ <p>{{ t('large_default', 'Large (default)') }}</p>
28
28
  </div>
29
29
  <div class="ui-container ui-container--xl ui-container--center" style="background: var(--ui-color-bg-muted)">
30
- <p>Extra large</p>
30
+ <p>{{ t('extra_large', 'Extra large') }}</p>
31
31
  </div>
32
32
  <div class="ui-container ui-container--full" style="background: var(--ui-color-bg-muted)">
33
- <p>Full width</p>
33
+ <p>{{ t('full_width', 'Full width') }}</p>
34
34
  </div>
@@ -5,31 +5,31 @@ description: Content wrapper with consistent vertical spacing. Use inside contai
5
5
 
6
6
  <!-- @default -->
7
7
  <!-- Vertical flex layout with gap between children and block/inline padding. -->
8
- <div class="ui-content" style="0: b; 1: a; 2: c; 3: k; 4: g; 5: r; 6: o; 7: u; 8: n; 9: d; 10: :; 11: ; 12: v; 13: a; 14: r; 15: (; 16: -; 17: -; 18: u; 19: i; 20: -; 21: c; 22: o; 23: l; 24: o; 25: r; 26: -; 27: b; 28: g; 29: -; 30: s; 31: u; 32: b; 33: t; 34: l; 35: e; 36: )">
9
- <p>First section of content with consistent spacing.</p>
10
- <p>Second section automatically spaced by the gap token.</p>
11
- <p>Third section follows the same rhythm.</p>
8
+ <div class="ui-content ui-bg-subtle">
9
+ <p>{{ t('first_section_of_content_with_consistent_spacing', 'First section of content with consistent spacing.') }}</p>
10
+ <p>{{ t('second_section_spaced_by_gap', 'Second section automatically spaced by the gap token.') }}</p>
11
+ <p>{{ t('third_section_follows_the_same_rhythm', 'Third section follows the same rhythm.') }}</p>
12
12
  </div>
13
13
 
14
14
  <!-- @prose -->
15
15
  <!-- Narrower max-width for readable long-form text (640px / 80 units). -->
16
- <div class="ui-content ui-content--prose" style="0: b; 1: a; 2: c; 3: k; 4: g; 5: r; 6: o; 7: u; 8: n; 9: d; 10: :; 11: ; 12: v; 13: a; 14: r; 15: (; 16: -; 17: -; 18: u; 19: i; 20: -; 21: c; 22: o; 23: l; 24: o; 25: r; 26: -; 27: b; 28: g; 29: -; 30: s; 31: u; 32: b; 33: t; 34: l; 35: e; 36: )">
17
- <p>Prose content is constrained to a comfortable reading width. Long paragraphs stay readable without requiring the eye to travel too far across the screen.</p>
18
- <p>This works well for articles, documentation, and form layouts.</p>
16
+ <div class="ui-content ui-content--prose ui-bg-subtle">
17
+ <p>{{ t('prose_content_constrained', 'Prose content is constrained to a comfortable reading width. Long paragraphs stay readable without requiring the eye to travel too far across the screen.') }}</p>
18
+ <p>{{ t('works_for_articles_docs_forms', 'This works well for articles, documentation, and form layouts.') }}</p>
19
19
  </div>
20
20
 
21
21
  <!-- @flush -->
22
22
  <!-- No padding, only gap between children. Useful when the parent handles padding. -->
23
- <div class="ui-content ui-content--flush" style="0: b; 1: a; 2: c; 3: k; 4: g; 5: r; 6: o; 7: u; 8: n; 9: d; 10: :; 11: ; 12: v; 13: a; 14: r; 15: (; 16: -; 17: -; 18: u; 19: i; 20: -; 21: c; 22: o; 23: l; 24: o; 25: r; 26: -; 27: b; 28: g; 29: -; 30: s; 31: u; 32: b; 33: t; 34: l; 35: e; 36: )">
24
- <p>Flush content has no padding.</p>
25
- <p>Gap between children is preserved.</p>
23
+ <div class="ui-content ui-content--flush ui-bg-subtle">
24
+ <p>{{ t('flush_content_has_no_padding', 'Flush content has no padding.') }}</p>
25
+ <p>{{ t('gap_between_children_is_preserved', 'Gap between children is preserved.') }}</p>
26
26
  </div>
27
27
 
28
28
  <!-- @with_container -->
29
29
  <!-- Content inside a centered container for a typical page layout. -->
30
30
  <div class="ui-container ui-container--center">
31
31
  <div class="ui-content">
32
- <h2 class="ui-heading ui-heading--3">Page Title</h2>
33
- <p>Content with consistent spacing and max-width.</p>
32
+ <h2 class="ui-heading ui-heading--3">{{ t('page_title', 'Page Title') }}</h2>
33
+ <p>{{ t('content_with_consistent_spacing_and_max_width', 'Content with consistent spacing and max-width.') }}</p>
34
34
  </div>
35
35
  </div>