@hjmds/design-contracts 1.34.0 โ†’ 1.35.1

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 (158) hide show
  1. package/dist/anchor.d.ts +4 -1
  2. package/dist/anchor.d.ts.map +1 -1
  3. package/dist/anchor.js +3 -3
  4. package/dist/anchor.js.map +1 -1
  5. package/dist/base-recipes.d.ts +15 -1
  6. package/dist/base-recipes.d.ts.map +1 -1
  7. package/dist/base-recipes.js +14 -3
  8. package/dist/base-recipes.js.map +1 -1
  9. package/dist/behaviors.d.ts +22 -0
  10. package/dist/behaviors.d.ts.map +1 -1
  11. package/dist/behaviors.js +2 -0
  12. package/dist/behaviors.js.map +1 -1
  13. package/dist/calendar.d.ts +9 -7
  14. package/dist/calendar.d.ts.map +1 -1
  15. package/dist/calendar.js +31 -2
  16. package/dist/calendar.js.map +1 -1
  17. package/dist/card.d.ts +15 -1
  18. package/dist/card.d.ts.map +1 -1
  19. package/dist/card.js +14 -1
  20. package/dist/card.js.map +1 -1
  21. package/dist/carousel.d.ts +3 -0
  22. package/dist/carousel.d.ts.map +1 -1
  23. package/dist/carousel.js +10 -1
  24. package/dist/carousel.js.map +1 -1
  25. package/dist/catalog.d.ts +147 -17
  26. package/dist/catalog.d.ts.map +1 -1
  27. package/dist/catalog.js +9 -6
  28. package/dist/catalog.js.map +1 -1
  29. package/dist/colors.d.ts +1 -0
  30. package/dist/colors.d.ts.map +1 -1
  31. package/dist/colors.js +2 -0
  32. package/dist/colors.js.map +1 -1
  33. package/dist/component-recipes.d.ts +45 -11
  34. package/dist/component-recipes.d.ts.map +1 -1
  35. package/dist/component-recipes.js +35 -15
  36. package/dist/component-recipes.js.map +1 -1
  37. package/dist/component-references.d.ts +2 -2
  38. package/dist/component-references.js +1 -1
  39. package/dist/component-references.js.map +1 -1
  40. package/dist/design-profile.d.ts +14 -0
  41. package/dist/design-profile.d.ts.map +1 -1
  42. package/dist/design-profile.js +15 -0
  43. package/dist/design-profile.js.map +1 -1
  44. package/dist/index.d.ts +2 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +2 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/progress-recipe.d.ts +6 -0
  49. package/dist/progress-recipe.d.ts.map +1 -1
  50. package/dist/progress-recipe.js +15 -2
  51. package/dist/progress-recipe.js.map +1 -1
  52. package/dist/recipes.d.ts +2 -2
  53. package/dist/recipes.d.ts.map +1 -1
  54. package/dist/recipes.js +2 -2
  55. package/dist/recipes.js.map +1 -1
  56. package/dist/screen-patterns.d.ts +32 -2
  57. package/dist/screen-patterns.d.ts.map +1 -1
  58. package/dist/screen-patterns.js +26 -2
  59. package/dist/screen-patterns.js.map +1 -1
  60. package/dist/semantic-colors.d.ts +5 -0
  61. package/dist/semantic-colors.d.ts.map +1 -1
  62. package/dist/semantic-colors.js +2 -0
  63. package/dist/semantic-colors.js.map +1 -1
  64. package/dist/sheet.d.ts +15 -0
  65. package/dist/sheet.d.ts.map +1 -1
  66. package/dist/sheet.js +11 -0
  67. package/dist/sheet.js.map +1 -1
  68. package/dist/shortcut-rail.d.ts +20 -0
  69. package/dist/shortcut-rail.d.ts.map +1 -0
  70. package/dist/shortcut-rail.js +28 -0
  71. package/dist/shortcut-rail.js.map +1 -0
  72. package/dist/showcase.js +2 -2
  73. package/dist/showcase.js.map +1 -1
  74. package/dist/steps.d.ts +6 -4
  75. package/dist/steps.d.ts.map +1 -1
  76. package/dist/steps.js +3 -0
  77. package/dist/steps.js.map +1 -1
  78. package/dist/time-picker.d.ts +70 -0
  79. package/dist/time-picker.d.ts.map +1 -0
  80. package/dist/time-picker.js +51 -0
  81. package/dist/time-picker.js.map +1 -0
  82. package/dist/timeline.d.ts +13 -1
  83. package/dist/timeline.d.ts.map +1 -1
  84. package/dist/timeline.js +11 -1
  85. package/dist/timeline.js.map +1 -1
  86. package/dist/version.d.ts +1 -1
  87. package/dist/version.js +1 -1
  88. package/dist/version.js.map +1 -1
  89. package/docs/calendar.md +19 -1
  90. package/docs/carousel.md +10 -0
  91. package/docs/collapsible.md +9 -0
  92. package/docs/consumer-policy.md +8 -12
  93. package/docs/design-profile.md +9 -0
  94. package/docs/expansion-roadmap.md +1 -1
  95. package/docs/generated/component-maturity.md +5 -4
  96. package/docs/generated/renderer-evidence.json +141 -16
  97. package/docs/generated/renderer-evidence.md +5 -3
  98. package/docs/generated/showcase-manifest.json +69 -7
  99. package/docs/optional-adapters.md +11 -0
  100. package/docs/stable-core.md +25 -0
  101. package/docs/steps.md +4 -0
  102. package/docs/theme-palette.md +2 -0
  103. package/docs/time-picker.md +22 -114
  104. package/docs/usage/README.md +9 -7
  105. package/docs/usage/SELECTION.md +44 -2
  106. package/docs/usage/components/accordion.md +4 -2
  107. package/docs/usage/components/alert-dialog.md +5 -0
  108. package/docs/usage/components/anchor.md +4 -1
  109. package/docs/usage/components/badge.md +7 -4
  110. package/docs/usage/components/bottom-cta.md +29 -4
  111. package/docs/usage/components/bottom-navigation.md +8 -0
  112. package/docs/usage/components/button.md +42 -2
  113. package/docs/usage/components/calendar.md +8 -1
  114. package/docs/usage/components/card.md +111 -7
  115. package/docs/usage/components/carousel.md +4 -1
  116. package/docs/usage/components/chat-screen.md +1 -1
  117. package/docs/usage/components/checkbox-group.md +33 -3
  118. package/docs/usage/components/checkbox.md +8 -2
  119. package/docs/usage/components/chip.md +5 -0
  120. package/docs/usage/components/collapsible.md +16 -1
  121. package/docs/usage/components/comment-thread-screen.md +12 -3
  122. package/docs/usage/components/composition-layout.md +6 -1
  123. package/docs/usage/components/conversation-row.md +2 -1
  124. package/docs/usage/components/data-table.md +10 -0
  125. package/docs/usage/components/description-list.md +1 -0
  126. package/docs/usage/components/field.md +8 -0
  127. package/docs/usage/components/icon-tile.md +29 -10
  128. package/docs/usage/components/image-choice-group.md +6 -0
  129. package/docs/usage/components/image.md +8 -1
  130. package/docs/usage/components/list-detail-screen.md +10 -4
  131. package/docs/usage/components/list-row.md +3 -0
  132. package/docs/usage/components/list.md +33 -1
  133. package/docs/usage/components/message-composer.md +2 -0
  134. package/docs/usage/components/notice.md +5 -1
  135. package/docs/usage/components/notification-row.md +19 -9
  136. package/docs/usage/components/onboarding-screen.md +3 -0
  137. package/docs/usage/components/page-indicator.md +12 -0
  138. package/docs/usage/components/profile-summary.md +16 -3
  139. package/docs/usage/components/progress.md +24 -0
  140. package/docs/usage/components/radio-group.md +45 -3
  141. package/docs/usage/components/radio.md +8 -2
  142. package/docs/usage/components/repeatable-field-group.md +1 -0
  143. package/docs/usage/components/screen-layout.md +46 -3
  144. package/docs/usage/components/search-screen.md +29 -1
  145. package/docs/usage/components/segmented-control.md +19 -3
  146. package/docs/usage/components/select.md +2 -0
  147. package/docs/usage/components/sheet.md +56 -3
  148. package/docs/usage/components/spinner.md +10 -0
  149. package/docs/usage/components/statistic.md +23 -0
  150. package/docs/usage/components/steps.md +11 -4
  151. package/docs/usage/components/switch.md +5 -0
  152. package/docs/usage/components/tabs.md +4 -0
  153. package/docs/usage/components/time-picker.md +88 -0
  154. package/docs/usage/components/timeline.md +19 -6
  155. package/docs/usage/components/top-bar.md +7 -0
  156. package/docs/usage/compositions/shortcut-rail.md +99 -0
  157. package/docs/usage/compositions/time-selection.md +5 -0
  158. package/package.json +17 -4
@@ -0,0 +1,99 @@
1
+ # ShortcutRail
2
+
3
+ - ๋‹จ๊ณ„: ๊ตฌ์„ฑ
4
+ - ์ƒํƒœ: ์‹คํ—˜
5
+ - ์ง€์›: Web ยท Native
6
+ - ์ ์šฉ: ๋ฏธ๊ฒŒ์‹œ(1.34.0 ์ดํ›„)
7
+ - ๊ฒ€ํ† ์ผ: 2026-10-19
8
+ - ๊ทผ๊ฑฐ: `src/shortcut-rail.ts`, `chipRecipe`. Spint ์ตœ๊ทผ ๋„์‹œ์—์„œ ์—ด๊ธฐ ๋ฒ„ํŠผ ์•ˆ์— ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋„ฃ์–ด ๋‘ ํ–‰๋™๊ณผ ์ ‘๊ทผ์„ฑ ๊ฒฝ๊ณ„๊ฐ€ ๊ฒน์นœ 2026-10-18 ์ „์ˆ˜ ์ด๊ด€.
9
+ - ์Šคํ† ๋ฆฌ๋ถ: `์‹คํ—˜/๊ตฌ์„ฑ/์ฝ˜ํ…์ธ /๋ฐ”๋กœ๊ฐ€๊ธฐ ๋ชฉ๋ก`
10
+
11
+ ## ์–ธ์ œ ์“ฐ๋‚˜
12
+
13
+ ์ตœ๊ทผ ์žฅ์†Œยท์ตœ๊ทผ ๋„๊ตฌ์ฒ˜๋Ÿผ ๋ˆ„๋ฅด๋ฉด ๋ฐ”๋กœ ์—ด๋ฆฌ๋Š” ์œ ํ•œ ๋ชฉ๋ก์ด๋‹ค. ์„ ํƒ๊ฐ’ยท์ฒดํฌ ํ‘œ์‹œ๊ฐ€ ์—†์œผ๋ฉฐ ํ•ญ๋ชฉ์˜
14
+ ์—ด๊ธฐ์™€ ์‚ญ์ œ๋Š” ์„œ๋กœ ์ค‘์ฒฉ๋˜์ง€ ์•Š์€ ๋ณ„๋„ ๋ฒ„ํŠผ์ด๋‹ค. ์„œ๋ฒ„ ์กฐํšŒยท๊ธฐ๋ก ์ €์žฅยท์‚ญ์ œ ๊ฒฐ๊ณผ๋Š” ์ œํ’ˆ์ด ์†Œ์œ ํ•œ๋‹ค.
15
+ ํ•„ํ„ฐ ์„ ํƒ์—๋Š” Chip/SegmentedControl, ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅ์— ํ™•์ •ํ•˜๋Š” ํ–‰์—๋Š” SearchScreen.recentQueries,
16
+ ์—ฌ๋Ÿฌ ์นด๋“œ์™€ ํƒ์ƒ‰ ๋ฒ„ํŠผ์—๋Š” CollectionRail, ์ง์ ‘ ์ž…๋ ฅํ•ด ๋งŒ๋“œ๋Š” ํƒœ๊ทธ์—๋Š” TagsInput์„ ์“ด๋‹ค.
17
+
18
+ ## ๊ตฌ์„ฑ ์š”์†Œ
19
+
20
+ | ์ปดํฌ๋„ŒํŠธ | ์—ญํ•  | ์ง€์นจ |
21
+ | --- | --- | --- |
22
+ | ShortcutRail | ์—ด๊ธฐ/์‚ญ์ œ์™€ ๊ฐ€๋กœ ๋ฐฐ์น˜ | ์ด ๋ฌธ์„œ |
23
+ | Chip recipe | pill ํ‘œ๋ฉด๊ณผ ๋ผ๋ฒจ ๊ฐ„๊ฒฉ | [Chip](../components/chip.md) |
24
+ | Section | ํ•„์š”ํ•  ๋•Œ ๋ณด์ด๋Š” ์ œ๋ชฉ | [Section](../components/section.md) |
25
+
26
+ | ์ด๋ฆ„ | Web | Native |
27
+ | --- | --- | --- |
28
+ | ShortcutRail ยท ShortcutRailProps | `@hjmds/react/shortcut-rail` | `@hjmds/react-native/shortcut-rail` |
29
+
30
+ ๊ณ„์•ฝ์˜ ShortcutRailItem ยท shortcutRailRecipe ยท validateShortcutRail ยท revealShortcut์€
31
+ `@hjmds/design-contracts/shortcut-rail`์—์„œ ์ œ๊ณตํ•œ๋‹ค. Chip์˜ companion์ด๋ฉฐ ์ƒˆ canonical ํ•ญ๋ชฉ์€ ์•„๋‹ˆ๋‹ค.
32
+
33
+ ## ๋ฐฐ์น˜
34
+
35
+ ```text
36
+ ์ด๋ฆ„ ์žˆ๋Š” ๊ฐ€๋กœ ๋ชฉ๋ก (ํ•œ ์ค„, ๋‚ด์šฉ ํญ)
37
+ [ ์—ด๊ธฐ: ๋„์‹œ ์ด๋ฆ„ ][ ร— ] [ ์—ด๊ธฐ: ๋„์‹œ ์ด๋ฆ„ ][ ร— ] โ†’ ์Šคํฌ๋กค
38
+ ```
39
+
40
+ | ์˜์—ญ | ์ปดํฌ๋„ŒํŠธ | ์œ„์น˜ | ํฌ๊ธฐยท๊ฐ„๊ฒฉ |
41
+ | --- | --- | --- | --- |
42
+ | ๋ฐ”๊นฅ ํ‹€ | ๊ฐ€๋กœ ๋ชฉ๋ก | ํ•œ ์ค„, ๋‚ด์šฉ ํญ ํ•ญ๋ชฉ | ํ•ญ๋ชฉ ๊ฐ„ spacing.xs8 |
43
+ | ํ‘œ๋ฉด | chipRecipe | ์—ด๊ธฐ/์‚ญ์ œ ๋’ค ํ•˜๋‚˜์˜ pill | small36, medium44, full ๋ชจ์„œ๋ฆฌ, idle ๋ฐฐ๊ฒฝ/ํ…Œ๋‘๋ฆฌ |
44
+ | ์—ด๊ธฐ | button/Pressable | ์ด๋ฆ„ ์•ž leading ์žฅ์‹ ๊ฐ€๋Šฅ | ์ตœ์†Œ44 ํ„ฐ์น˜ ์˜์—ญ, small ์ขŒ์šฐ sm12/์•„์ด์ฝ˜ ๊ฐ„ xxs4, medium md16/xs8 |
45
+ | ์‚ญ์ œ | button/Pressable | ์—ด๊ธฐ์™€ ๋‚˜๋ž€ํ•œ ๋ ์ชฝ | ํญ44, ์ตœ์†Œ ๋†’์ด44, ๊ธฐ๋ณธ glyph.xs14์˜ ร— |
46
+
47
+ 36 ํ‘œ๋ฉด๋„ ๊ฐ ๋ฒ„ํŠผ์ด ์ตœ์†Œ44 ํ„ฐ์น˜ ์˜์—ญ์„ ๊ฐ€์ง€๋ฉฐ ์˜์—ญ์„ ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค.
48
+ ๋ชจ๋“  ํ•ญ๋ชฉ์ด ๋งˆ์šดํŠธ๋œ ๊ฐ€๋กœ ํ•œ ์ค„์ด๋ฉฐ ์ž๋™ ํšŒ์ „ยท์„ ํƒยท๊ฐ€์ƒํ™”๋Š” ์—†๋‹ค.
49
+ Native๋Š” ๋ฌผ๋ฆฌ LTR scroll ์ขŒํ‘œ์™€ RTL ํ–‰ ๋ฐฐ์น˜๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.
50
+
51
+ ## ํ๋ฆ„๊ณผ ์ƒํƒœ
52
+
53
+ 1. ํ•ญ๋ชฉ ์—ด๊ธฐ๋Š” onAction(item)์œผ๋กœ ์ œํ’ˆ์— ์ „๋‹ฌํ•œ๋‹ค.
54
+ 2. ์‚ญ์ œ๋Š” onRemove(item)๋งŒ ์ „๋‹ฌํ•˜๊ณ  ์ œํ’ˆ์ด ์‹ค์ œ ์ƒˆ items๋ฅผ ๊ณต๊ธ‰ํ•œ๋‹ค.
55
+ 3. Web์˜ ์ดˆ์  ์žˆ๋Š” ์‚ญ์ œ๊ฐ€ ์‹ค์ œ๋กœ ์ œ๊ฑฐ๋˜๋ฉด ๋‹ค์Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ•ญ๋ชฉ, ์—†์œผ๋ฉด ์ด์ „ ํ•ญ๋ชฉ์œผ๋กœ ์ดˆ์ ์„ ์˜ฎ๊ธด๋‹ค. ๊ฐ™์€ ID๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋‚จ๊ณ  ํ•ด์ œ ๋ฒ„ํŠผ๋งŒ ์‚ฌ๋ผ์ง€๋ฉด ๊ทธ ํ•ญ๋ชฉ์˜ ๋ณธ๋ฌธ์œผ๋กœ ์˜ฎ๊ธด๋‹ค. ๋‚จ์€ ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ์•ž์ชฝ leading์˜ ์ฒซ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ–‰๋™, ๊ทธ๊ฒƒ๋„ ์—†์œผ๋ฉด ์ด๋ฆ„ ์žˆ๋Š” ๋ชฉ๋ก์œผ๋กœ ์˜ฎ๊ธด๋‹ค. ์ œํ’ˆ์ด ํ•ด์ œ๋ฅผ ๊ฑฐ๋ถ€ํ•ด ๊ฐ™์€ ๋ฒ„ํŠผ์ด ๋‚จ์œผ๋ฉด ๊ธฐ์กด ์ดˆ์ ์„ ์œ ์ง€ํ•œ๋‹ค.
56
+
57
+ | ์ƒํƒœ | ๋ชจ์Šต | ํฌ์ปค์Šคยท์•Œ๋ฆผ |
58
+ | --- | --- | --- |
59
+ | ๊ธฐ๋ณธ | ์ด๋ฆ„๊ณผ ์„ ํƒ์  ์‚ญ์ œ, ์„ ํƒ ํ‘œ์‹œ ์—†์Œ | ๊ฐ ํ–‰๋™์ด ์ด๋ฆ„ ์žˆ๋Š” ๋ฒ„ํŠผ |
60
+ | ์ง„ํ–‰ ์ค‘ | ์ œํ’ˆ์ด disabled๋กœ ์—ด๊ธฐ/์‚ญ์ œ๋ฅผ ํ•จ๊ป˜ ์ž ๊ธˆ | ๋ณ„๋„ pending ์„ ์–ธ์€ ์ œํ’ˆ ํ™”๋ฉด ์ƒํƒœ์—์„œ ์ „๋‹ฌ |
61
+ | ์‹คํŒจ | ์ œํ’ˆ์ด ๊ธฐ์กด items์™€ ๊ณตํ†ต Notice/์žฌ์‹œ๋„ ์œ ์ง€ | ๊ตฌ์„ฑ์€ ์‹คํŒจ๋ฅผ ๋นˆ ๊ฒฐ๊ณผ๋กœ ๋ฐ”๊พธ์ง€ ์•Š์Œ |
62
+
63
+ | prop | ๊ธฐ๋ณธ๊ฐ’ | ์˜๋ฏธ |
64
+ | --- | --- | --- |
65
+ | label | ํ•„์ˆ˜ | ๋ชฉ๋ก์˜ ์ ‘๊ทผ์„ฑ ์ด๋ฆ„. ์‹œ๊ฐ ์ œ๋ชฉ์ด ํ•„์š”ํ•˜๋ฉด HJM Section์œผ๋กœ ๊ฐ์‹ผ๋‹ค |
66
+ | items | ํ•„์ˆ˜ | `{id,label,disabled?}` ๋ฐฐ์—ด. ์ถ”๊ฐ€ ์ œํ’ˆ payload ํƒ€์ž…์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ๋‹ค |
67
+ | onAction(item) | ํ•„์ˆ˜ | ํ•ญ๋ชฉ ์—ด๊ธฐ. ์ œ๊ฑฐ๋Š” ์ด ์ฝœ๋ฐฑ์„ ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค |
68
+ | onRemove(item) ยท removeLabel(item) | ์—†์Œ | ํ•จ๊ป˜ ์ œ๊ณตํ•œ๋‹ค. ์ œํ’ˆ์ด ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๊ฐ™์€ ID์˜ ์กฐ๊ฑด์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ ค ์ƒˆ items๋ฅผ ์ „๋‹ฌํ•œ๋‹ค |
69
+ | isRemovable(item) | ๋ชจ๋‘ | onRemove์™€ ํ•จ๊ป˜ ์“ฐ๋Š” ์ˆœ์ˆ˜ ํŒ์ •. false์ธ ํ•ญ๋ชฉ์—๋Š” ํ•ด์ œ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. disabled๋Š” ๋ณ„๋„๋กœ ๋ณธ๋ฌธ/ํ•ด์ œ๋ฅผ ํ•จ๊ป˜ ์ž ๊ทผ๋‹ค |
70
+ | leading | ์—†์Œ | ์ฒซ ํ•ญ๋ชฉ ์•ž์˜ ํ–‰๋™/๋ฒ”์œ„ ์„ ํƒ ์Šฌ๋กฏ. ๊ฐ™์€ ์Šคํฌ๋กค/์ค„๋ฐ”๊ฟˆ ํ๋ฆ„์— ๋†“์ด๋ฉฐ items๊ฐ€ ๋น„์–ด๋„ ๋‚จ๋Š”๋‹ค |
71
+ | layout | scroll | ๋ฏธ๊ฒŒ์‹œ. `scroll`์€ ๊ธฐ์กด ํ•œ ์ค„, `wrap`์€ ๋ณธ๋ฌธ ํญ์—์„œ ์ค„๋ฐ”๊ฟˆํ•˜๋ฉฐ ๋ณ„๋„ ์Šคํฌ๋กค host๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. ๊ธด ๋ผ๋ฒจ๋„ ๋ถ€๋ชจ ํญ ์•ˆ์—์„œ ๊ฐ์‹ผ๋‹ค |
72
+ | items[].description | ์—†์Œ | ๋ฏธ๊ฒŒ์‹œ. Native accessibilityHint / Web aria-description. ์งง์€ ํ–‰๋™ ์„ค๋ช… |
73
+ | size | small | small/medium. ์„ ํƒ ์นฉ์˜ selectedยทselectionMode๋Š” ์—†๋‹ค |
74
+ | renderLeading ยท removeIcon | ์—†์Œ/ร— | ์žฅ์‹ ์Šฌ๋กฏ. ์ฝ์„ ์˜๋ฏธ๋Š” label/removeLabel์— ์“ด๋‹ค |
75
+ | layoutStyle | ์—†์Œ | ๊ตฌ์„ฑ ๋ฐ”๊นฅ ๋ฐฐ์น˜ ์ „์šฉ |
76
+ | Native testID | ์—†์Œ | ๋ฃจํŠธ. ํ•ญ๋ชฉ์€ `${testID}-${id}`, ์ œ๊ฑฐ๋Š” `${testID}-remove-${id}` |
77
+
78
+ disabled ํ•ญ๋ชฉ์€ ์—ด๊ธฐ์™€ ์ œ๊ฑฐ ๋ชจ๋‘ ๋ง‰ํžŒ๋‹ค. ์กฐํšŒ ์ค‘ยท์‹คํŒจยท์„ฑ๊ณตํ•œ ๋นˆ ๊ฒฐ๊ณผ๋Š” ๊ตฌ์„ฑ ๋ฐ”๊นฅ์˜
79
+ SearchScreen/CompositionLayout์—์„œ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์ด ๋ชฉ๋ก์ด ์‹คํŒจ๋ฅผ ๋นˆ ๊ฒฐ๊ณผ๋กœ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.
80
+ ํ•ญ๋ชฉ๊ณผ leading์ด ๋ชจ๋‘ ์—†์œผ๋ฉด Native๋Š” ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ฉฐ Web์€ ์ดˆ์  ๋ณต๊ตฌ์šฉ ๋นˆ ๋ชฉ๋ก host๋ฅผ ๊ณต๊ฐ„ ์—†์ด ์œ ์ง€ํ•œ๋‹ค. leading์ด ์žˆ์œผ๋ฉด ๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘ ๊ณ„์† ํ‘œ์‹œํ•œ๋‹ค.
81
+ Web์—์„œ ์‚ญ์ œ ํ›„ ์ดˆ์  ๋ณต๊ตฌ๋ฅผ ์“ฐ๋ ค๋ฉด ์ œํ’ˆ์ด ๋งˆ์ง€๋ง‰ ์‚ญ์ œ์™€ ๋™์‹œ์— ๊ตฌ์„ฑ ์ž์ฒด๋ฅผ unmountํ•˜์ง€ ์•Š๋Š”๋‹ค.
82
+
83
+ ## ์ฝ”๋“œ ๊ณจ๊ฒฉ
84
+
85
+ <!-- usage-example: Web ../../../../../showcase/web/src/patterns/ShortcutRail.stories.tsx -->
86
+ <!-- usage-example: Native ../../../../../showcase/native/src/ShortcutRail.stories.tsx -->
87
+
88
+ ์‹คํ–‰ ์˜ˆ์ œ: [Web](../../../../../showcase/web/src/patterns/ShortcutRail.stories.tsx),
89
+ [Native](../../../../../showcase/native/src/ShortcutRail.stories.tsx).
90
+
91
+ 2026-10-19 ๋‹ค์—๋ฆฌ ์„ค์ • ๋ฐ”๋กœ๊ฐ€๊ธฐ์˜ ์ง์ ‘ Pressableยท์ค„๋ฐ”๊ฟˆยท๋ˆ„๋ฆ„ ์Šคํƒ€์ผ์„ ์ด๊ด€ํ•˜๋ฉฐ wrap์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ์œ ํ•œํ•œ ์„ค์ • ํ–‰๋™์„ ๊ฐ™์€ ํ™”๋ฉด์˜ ์„ธ๋กœ ์Šคํฌ๋กค ์•ˆ์— ๋†“์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. Web์˜ ๋ฌธ์„œ ๋‚ด ๋งํฌ๋Š” Anchor๋กœ ์—ฐ๊ฒฐํ•˜๊ณ , Native host์˜ ์„น์…˜ ์ธก์ •/์Šคํฌ๋กค์€ onAction์— ์—ฐ๊ฒฐํ•œ๋‹ค. ๊ธฐ๋ณธ scroll๊ณผ ์—ด๊ธฐ/์‚ญ์ œ์˜ ๋…๋ฆฝ targetยทํฌ์ปค์Šค ๋ณต๊ตฌ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ๋‹ค.
92
+
93
+
94
+ 2026-10-19 ์˜ค๋Š˜์•ผ๊ตฌ ์กฐ๊ฑด ์š”์•ฝ์˜ ์ง์ ‘ ScrollView/Chip/ร— ๋ฐฐ์น˜๋ฅผ ์ด๊ด€ํ•˜๋ฉฐ leading๊ณผ isRemovable์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.
95
+ ์ด ๊ตฌ์„ฑ์€ ์กฐ๊ฑด์˜ ์„ ํƒ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ์ž…๋ ฅ์ด ์•„๋‹ˆ๋ผ ํ˜„์žฌ ์กฐ๊ฑด์˜ ํŽธ์ง‘ ์ฐฝ ์—ด๊ธฐยท๊ฐœ๋ณ„ ํ•ด์ œ ํ–‰๋™์ด๋‹ค.
96
+ ํ•„ํ„ฐ ์—ด๊ธฐ์™€ ๋…๋ฆฝ ์ผœ๊ธฐ/๋„๊ธฐ๋Š” leading์— ๋‘๊ณ , ์กฐ๊ฑด ๋ณธ๋ฌธ์€ onAction์œผ๋กœ ํŽธ์ง‘ ์ฐฝ์„ ์—ฐ๋‹ค.
97
+ ๊ธฐ๋ณธ ์‹œ์ฆŒ์ฒ˜๋Ÿผ ํ•ด์ œํ•  ์ˆ˜ ์—†๋Š” ์กฐ๊ฑด๋„ ๊ฐ™์€ ๋ชฉ๋ก์— ๋‚จ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฉฐ onRemove๋ฅผ ์ œ๊ณตํ–ˆ๋‹ค๋Š” ์ด์œ ๋กœ
98
+ ๋ชจ๋“  ํ•ญ๋ชฉ์— ร—๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค. Default/๊ธฐ์กด ์—ด๊ธฐยท์‚ญ์ œยทwrap์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ๋‹ค.
99
+ ์–‘์ชฝ ์‹คํ–‰ ์˜ˆ์ œ์˜ FilterSummary๋Š” ๊ฐ™์€ ID์˜2025 ์กฐ๊ฑด์„2026 ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ํ๋ฆ„์„ ๋ณด์—ฌ์ค€๋‹ค.
@@ -10,6 +10,11 @@
10
10
 
11
11
  ๊ณตํ†ต ๊ตฌ์กฐยท๋ฐฐ์น˜ยท์ƒํƒœยท๋ฐฐ์ง€์˜ ์†Œ์œ ๊ถŒ์€ [ํ™”๋ฉด๊ณผ ๊ตฌ์„ฑ ์„ ํƒ](../SELECTION.md#์†Œ์œ ๊ถŒ)์„ ๋”ฐ๋ฅธ๋‹ค. ์•ฑ์€ ๋ฐ์ดํ„ฐยท๋ฌธ๊ตฌยท๋ธŒ๋žœ๋“œยท์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ณต๊ฐœ ์Šฌ๋กฏ๊ณผ ์ฝœ๋ฐฑ์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ ๊ณจ๊ฒฉ์„ ์•ฑ๋ณ„ ๊ธฐ๋ณธ ๊ตฌ์กฐ ๋ณต์ œ์˜ ๊ทผ๊ฑฐ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ „์šฉ ๊ตฌ์„ฑ API๊ฐ€ ์—†๋Š” ์ฝ˜ํ…์ธ  ๋ฌถ์Œ์€ [CompositionLayout](../components/composition-layout.md)์˜ ์ œ๋ชฉยท๋ฐฐ์ง€ยทํ–‰๋™ยท๋ณธ๋ฌธยท์ƒํƒœยทfooter ์Šฌ๋กฏ์„ ์‚ฌ์šฉํ•œ๋‹ค.
12
12
 
13
+ > 2026-10-19: ์ƒˆ ์‹œ๊ฐ„ ์„ ํƒ์—๋Š” [TimePicker](../components/time-picker.md)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
14
+ > ์•„๋ž˜ ๋‘ Select ์กฐํ•ฉ์€ ๊ธฐ์กด ์†Œ๋น„ ์˜ˆ์ œ์˜ ๊ธฐ๋ก์ด๋‹ค. ํ†ตํ•ฉ ์—ดยท์ดˆ์•ˆยท์ทจ์†Œยทํ™•์ •์€ TimePicker๊ฐ€ ์†Œ์œ ํ•˜๋ฉฐ
15
+ > ์•ฑ์—์„œ ๊ฐ™์€ ํ‹€์„ ๋‹ค์‹œ ์กฐ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค.
16
+
17
+
13
18
  ## ์–ธ์ œ ์“ฐ๋‚˜
14
19
 
15
20
  ์•Œ๋ฆผ ์‹œ๊ฐยท๋งˆ๊ฐ ์‹œ๊ฐ์ฒ˜๋Ÿผ ํ•˜๋ฃจ ์•ˆ์˜ ์‹œ๊ฐ ํ•˜๋‚˜๋ฅผ ์‹œยท๋ถ„ ๋‘ Select๋กœ ๋‚˜๋ˆ  ๊ณ ๋ฅด๊ฒŒ ํ•  ๋•Œ ์“ด๋‹ค. ๋‘˜ ๋‹ค ๊ณ ๋ฅธ ๋’ค์—๋งŒ
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hjmds/design-contracts",
3
- "version": "1.34.0",
3
+ "version": "1.35.1",
4
4
  "description": "Renderer-neutral design contracts, tokens, recipes, and behaviors shared by HJM products.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -804,6 +804,18 @@
804
804
  "react-native": "./dist/conversation-row.js",
805
805
  "import": "./dist/conversation-row.js",
806
806
  "default": "./dist/conversation-row.js"
807
+ },
808
+ "./shortcut-rail": {
809
+ "types": "./dist/shortcut-rail.d.ts",
810
+ "react-native": "./dist/shortcut-rail.js",
811
+ "import": "./dist/shortcut-rail.js",
812
+ "default": "./dist/shortcut-rail.js"
813
+ },
814
+ "./components/time-picker": {
815
+ "types": "./dist/time-picker.d.ts",
816
+ "react-native": "./dist/time-picker.js",
817
+ "import": "./dist/time-picker.js",
818
+ "default": "./dist/time-picker.js"
807
819
  }
808
820
  },
809
821
  "files": [
@@ -817,11 +829,12 @@
817
829
  "node": ">=20"
818
830
  },
819
831
  "devDependencies": {
820
- "@types/node": "^24.13.3",
832
+ "@types/node": "^24.19.2",
821
833
  "jsqr": "1.4.0",
822
834
  "typescript": "^5.9.3",
823
- "vitest": "^4.1.11",
824
- "qrcode-generator": "2.0.4"
835
+ "vitest": "^5.0.5",
836
+ "qrcode-generator": "2.0.4",
837
+ "vite": "8.3.4"
825
838
  },
826
839
  "scripts": {
827
840
  "build": "tsc -p tsconfig.build.json",