@godxjp/ui 28.6.0 → 28.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/components/data-display/data-table.d.ts +10 -2
  2. package/dist/components/data-display/data-table.js +12 -5
  3. package/dist/components/data-display/index.d.ts +2 -0
  4. package/dist/components/data-display/index.js +2 -0
  5. package/dist/components/data-display/marquee.d.ts +16 -0
  6. package/dist/components/data-display/marquee.js +155 -0
  7. package/dist/components/data-display/scroll-area.js +16 -2
  8. package/dist/components/data-display/service-launcher-card.d.ts +25 -0
  9. package/dist/components/data-display/table.d.ts +38 -1
  10. package/dist/components/data-display/table.js +57 -39
  11. package/dist/components/data-entry/form-field.js +29 -12
  12. package/dist/components/general/reveal.d.ts +23 -2
  13. package/dist/components/general/reveal.js +37 -7
  14. package/dist/components/general/typography.d.ts +4 -1
  15. package/dist/components/general/typography.js +14 -1
  16. package/dist/components/layout/affix.d.ts +86 -0
  17. package/dist/components/layout/affix.js +187 -0
  18. package/dist/components/layout/index.d.ts +4 -0
  19. package/dist/components/layout/index.js +4 -0
  20. package/dist/components/layout/legal-document-shell.js +4 -3
  21. package/dist/components/layout/masonry.d.ts +74 -0
  22. package/dist/components/layout/masonry.js +214 -0
  23. package/dist/components/layout/page-container.js +5 -20
  24. package/dist/components/navigation/anchor.d.ts +64 -0
  25. package/dist/components/navigation/anchor.js +284 -0
  26. package/dist/components/navigation/app-setting-picker.js +20 -3
  27. package/dist/components/navigation/index.d.ts +4 -0
  28. package/dist/components/navigation/index.js +4 -0
  29. package/dist/components/navigation/mega-menu.d.ts +21 -0
  30. package/dist/components/navigation/mega-menu.js +526 -0
  31. package/dist/components/ui/table.js +1 -0
  32. package/dist/contracts/measurement.json +1 -1
  33. package/dist/i18n/messages/en.json +522 -1
  34. package/dist/i18n/messages/ja.json +518 -1
  35. package/dist/i18n/messages/vi.json +518 -1
  36. package/dist/lib/hooks.d.ts +91 -0
  37. package/dist/lib/hooks.js +79 -0
  38. package/dist/lib/platform.d.ts +14 -0
  39. package/dist/lib/platform.js +10 -1
  40. package/dist/lib/utils.d.ts +1 -1
  41. package/dist/lib/utils.js +3 -2
  42. package/dist/props/components/data-display.prop.d.ts +109 -1
  43. package/dist/props/components/general.prop.d.ts +47 -3
  44. package/dist/props/components/layout.prop.d.ts +194 -0
  45. package/dist/props/components/navigation.prop.d.ts +263 -0
  46. package/dist/props/registry.d.ts +360 -5
  47. package/dist/props/registry.js +474 -4
  48. package/dist/props/vocabulary/index.d.ts +1 -1
  49. package/dist/props/vocabulary/interaction.prop.d.ts +39 -2
  50. package/dist/styles/control.css +5 -6
  51. package/dist/styles/data-display-layout.css +2 -1
  52. package/dist/styles/density.css +4 -0
  53. package/dist/styles/form-layout.css +22 -0
  54. package/dist/styles/layout.css +79 -1
  55. package/dist/styles/motion.css +121 -1
  56. package/dist/styles/navigation-layout.css +415 -20
  57. package/dist/styles/shell-layout.css +3 -0
  58. package/dist/styles/text-layout.css +52 -4
  59. package/dist/tokens/base.css +5 -0
  60. package/dist/tokens/components/affix.css +7 -0
  61. package/dist/tokens/components/anchor.css +17 -0
  62. package/dist/tokens/components/control.css +3 -3
  63. package/dist/tokens/components/form.css +3 -1
  64. package/dist/tokens/components/marquee.css +7 -0
  65. package/dist/tokens/components/masonry.css +6 -0
  66. package/dist/tokens/components/mega-menu.css +62 -0
  67. package/dist/tokens/components/navigation.css +2 -0
  68. package/dist/tokens/components/shell.css +3 -0
  69. package/dist/tokens/foundation.css +11 -0
  70. package/dist/tokens/semantic/layout.css +7 -0
  71. package/docs/COMPOSITION-VS-COMPONENT.md +21 -0
  72. package/docs/DESIGN-AUTHORITY.md +124 -23
  73. package/docs/FRAME-COVERAGE-REPORT.md +7 -2
  74. package/docs/data-display/marquee.tsx +254 -0
  75. package/docs/data-display/scroll-area.tsx +31 -0
  76. package/docs/data-display/service-launcher-card.tsx +275 -115
  77. package/docs/foundation/_theme-editor-scope.ts +222 -0
  78. package/docs/foundation/density.tsx +12 -2
  79. package/docs/foundation/spacing.tsx +5 -0
  80. package/docs/foundation/theme-editor.tsx +645 -0
  81. package/docs/general/activity.tsx +65 -0
  82. package/docs/general/reveal.tsx +290 -22
  83. package/docs/general/typography.tsx +91 -1
  84. package/docs/layout/affix.tsx +209 -0
  85. package/docs/layout/masonry.tsx +291 -0
  86. package/docs/navigation/anchor.tsx +285 -0
  87. package/docs/navigation/mega-menu-panel.tsx +86 -0
  88. package/docs/navigation/mega-menu.tsx +254 -0
  89. package/docs/roadmap/website-components.md +779 -0
  90. package/docs/showcase/acme-website.tsx +75 -39
  91. package/docs/showcase/futurelastic-web.tsx +91 -49
  92. package/docs/showcase/marketing-page.tsx +885 -0
  93. package/docs/showcase/table-footer-totals.tsx +12 -2
  94. package/docs/showcase/theme-customization.tsx +1259 -0
  95. package/package.json +8 -5
  96. package/scripts/brand-accent.generated.mjs +27 -0
  97. package/scripts/ui-audit.mjs +66 -0
  98. package/scripts/visual-audit-rules.mjs +46 -2
  99. package/scripts/visual-audit.mjs +29 -1
@@ -259,4 +259,26 @@
259
259
  text-align: end;
260
260
  }
261
261
  }
262
+
263
+ .ui-form-feedback > svg {
264
+ inline-size: var(--form-feedback-icon-size);
265
+ block-size: var(--form-feedback-icon-size);
266
+ flex-shrink: 0;
267
+ }
268
+
269
+ .ui-form-feedback[data-status="success"] {
270
+ color: hsl(var(--text-success));
271
+ }
272
+
273
+ .ui-form-feedback[data-status="warning"] {
274
+ color: hsl(var(--text-warning));
275
+ }
276
+
277
+ .ui-form-feedback[data-status="error"] {
278
+ color: hsl(var(--text-error));
279
+ }
280
+
281
+ .ui-form-feedback[data-status="validating"] {
282
+ color: hsl(var(--muted-foreground));
283
+ }
262
284
  }
@@ -1053,7 +1053,6 @@
1053
1053
  }
1054
1054
 
1055
1055
  .ui-pagination-size-trigger {
1056
- width: var(--pagination-size-width);
1057
1056
 
1058
1057
  height: var(--control-height);
1059
1058
  }
@@ -2014,3 +2013,82 @@
2014
2013
  transition: none;
2015
2014
  }
2016
2015
  }
2016
+
2017
+ @layer components {
2018
+
2019
+ .ui-masonry {
2020
+ position: relative;
2021
+ box-sizing: border-box;
2022
+
2023
+ column-gap: var(--masonry-gap-inline);
2024
+ row-gap: var(--masonry-gap-block);
2025
+ }
2026
+
2027
+ .ui-masonry-item {
2028
+ position: absolute;
2029
+ box-sizing: border-box;
2030
+
2031
+ --masonry-item-track: calc((100% + var(--masonry-gap-inline)) / var(--masonry-column-count, 3));
2032
+ inline-size: calc(var(--masonry-item-track) - var(--masonry-gap-inline));
2033
+
2034
+ inset-inline-start: calc(var(--masonry-item-track) * var(--masonry-item-column, 0));
2035
+ inset-block-start: 0;
2036
+
2037
+ opacity: 0;
2038
+ transition:
2039
+ opacity var(--duration-base) var(--ease-standard),
2040
+ inset-block-start var(--duration-base) var(--ease-standard),
2041
+ inset-inline-start var(--duration-base) var(--ease-standard);
2042
+ }
2043
+
2044
+ .ui-masonry-item[data-positioned] {
2045
+ opacity: 1;
2046
+ }
2047
+
2048
+ @media (prefers-reduced-motion: reduce) {
2049
+ .ui-masonry-item {
2050
+ transition: none;
2051
+ }
2052
+ }
2053
+
2054
+ .ui-affix {
2055
+
2056
+ position: relative;
2057
+ }
2058
+
2059
+ .ui-affix-sentinel {
2060
+ position: absolute;
2061
+ inset-inline: 0;
2062
+
2063
+ block-size: 1px;
2064
+ pointer-events: none;
2065
+ }
2066
+
2067
+ .ui-affix-sentinel[data-edge="block-start"] {
2068
+ inset-block-start: calc(-1 * var(--affix-inset-block-start));
2069
+ }
2070
+
2071
+ .ui-affix-sentinel[data-edge="block-end"] {
2072
+ inset-block-end: calc(-1 * var(--affix-inset-block-end));
2073
+ }
2074
+
2075
+ .ui-affix-placeholder {
2076
+ pointer-events: none;
2077
+ }
2078
+
2079
+ .ui-affix-content[data-affixed] {
2080
+ position: fixed;
2081
+
2082
+ z-index: var(--sticky-z-index);
2083
+
2084
+ inline-size: var(--affix-content-inline-size, auto);
2085
+ }
2086
+
2087
+ .ui-affix-content[data-affixed][data-edge="block-start"] {
2088
+ inset-block-start: calc(var(--affix-target-inset, 0px) + var(--affix-inset-block-start));
2089
+ }
2090
+
2091
+ .ui-affix-content[data-affixed][data-edge="block-end"] {
2092
+ inset-block-end: calc(var(--affix-target-inset, 0px) + var(--affix-inset-block-end));
2093
+ }
2094
+ }
@@ -6,6 +6,20 @@
6
6
  will-change: transform, opacity;
7
7
  }
8
8
 
9
+ .ui-reveal[data-reveal-on="view"] {
10
+ animation: none;
11
+ }
12
+ .ui-reveal[data-reveal-state="out"] {
13
+ opacity: 0;
14
+ transform: translateY(var(--reveal-distance));
15
+ }
16
+ .ui-reveal[data-reveal-state="in"] {
17
+ animation-name: ui-reveal-in;
18
+ animation-duration: var(--duration-slow);
19
+ animation-timing-function: var(--ease-emphasized);
20
+ animation-fill-mode: both;
21
+ }
22
+
9
23
  .ui-reveal[data-reveal-delay="1"] {
10
24
  animation-delay: calc(var(--reveal-stagger-step) * 1);
11
25
  }
@@ -38,9 +52,14 @@
38
52
 
39
53
  @media (prefers-reduced-motion: reduce) {
40
54
  .ui-reveal,
41
- .ui-reveal[data-reveal-delay] {
55
+ .ui-reveal[data-reveal-delay],
56
+ .ui-reveal[data-reveal-state] {
42
57
  animation: none;
43
58
  }
59
+ .ui-reveal[data-reveal-state="out"] {
60
+ opacity: 1;
61
+ transform: none;
62
+ }
44
63
  }
45
64
  }
46
65
 
@@ -193,3 +212,104 @@
193
212
  }
194
213
  }
195
214
  }
215
+
216
+ @layer components {
217
+
218
+ .ui-marquee {
219
+ display: flex;
220
+ align-items: center;
221
+ gap: var(--marquee-gap-inline);
222
+ inline-size: 100%;
223
+ min-inline-size: 0;
224
+ }
225
+
226
+ .ui-marquee-viewport {
227
+ flex: 1 1 auto;
228
+ min-inline-size: 0;
229
+ overflow: hidden;
230
+ }
231
+
232
+ .ui-marquee-scroller {
233
+ flex: 1 1 auto;
234
+ min-inline-size: 0;
235
+ }
236
+
237
+ .ui-marquee[data-fade="true"] .ui-marquee-viewport {
238
+ mask-image: linear-gradient(
239
+ to right,
240
+ transparent,
241
+ black var(--marquee-mask-width),
242
+ black calc(100% - var(--marquee-mask-width)),
243
+ transparent
244
+ );
245
+ }
246
+
247
+ .ui-marquee-track {
248
+ display: flex;
249
+ inline-size: max-content;
250
+ will-change: transform;
251
+ animation: ui-marquee-travel calc(var(--marquee-interval) * var(--marquee-cycle-scale, 1))
252
+ linear infinite;
253
+ }
254
+ .ui-marquee[data-speed="slow"] .ui-marquee-track {
255
+ animation-duration: calc(var(--marquee-interval-slow) * var(--marquee-cycle-scale, 1));
256
+ }
257
+ .ui-marquee[data-speed="fast"] .ui-marquee-track {
258
+ animation-duration: calc(var(--marquee-interval-fast) * var(--marquee-cycle-scale, 1));
259
+ }
260
+
261
+ .ui-marquee-copy {
262
+ display: flex;
263
+ flex: 0 0 auto;
264
+ align-items: center;
265
+ gap: var(--marquee-gap-inline);
266
+ padding-inline-end: var(--marquee-gap-inline);
267
+ }
268
+
269
+ .ui-marquee-control {
270
+ flex: 0 0 auto;
271
+ }
272
+
273
+ @keyframes ui-marquee-travel {
274
+ from {
275
+ transform: translateX(0);
276
+ }
277
+ to {
278
+ transform: translateX(calc(-100% / var(--marquee-copies, 2)));
279
+ }
280
+ }
281
+
282
+ @keyframes ui-marquee-travel-rtl {
283
+ from {
284
+ transform: translateX(0);
285
+ }
286
+ to {
287
+ transform: translateX(calc(100% / var(--marquee-copies, 2)));
288
+ }
289
+ }
290
+ [dir="rtl"] .ui-marquee-track {
291
+ animation-name: ui-marquee-travel-rtl;
292
+ }
293
+
294
+ .ui-marquee[data-direction="end"] .ui-marquee-track {
295
+ animation-direction: reverse;
296
+ }
297
+
298
+ .ui-marquee[data-playing="false"] .ui-marquee-track {
299
+ animation-play-state: paused;
300
+ }
301
+
302
+ .ui-marquee-viewport:focus-within .ui-marquee-track {
303
+ animation-play-state: paused;
304
+ }
305
+
306
+ .ui-marquee[data-pause-on-hover="true"] .ui-marquee-viewport:hover .ui-marquee-track {
307
+ animation-play-state: paused;
308
+ }
309
+
310
+ @media (prefers-reduced-motion: reduce) {
311
+ .ui-marquee-track {
312
+ animation: none;
313
+ }
314
+ }
315
+ }