@ezpg/app-ui 0.1.0 → 0.2.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 (346) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/lib/module/blocks/brand-profile-card/brand-profile-card.js +0 -2
  3. package/lib/module/blocks/brand-profile-card/brand-profile-card.js.map +1 -1
  4. package/lib/module/blocks/bulk-ship-list/bulk-ship-list.js +190 -0
  5. package/lib/module/blocks/bulk-ship-list/bulk-ship-list.js.map +1 -0
  6. package/lib/module/blocks/bulk-ship-list/index.js +4 -0
  7. package/lib/module/blocks/bulk-ship-list/index.js.map +1 -0
  8. package/lib/module/blocks/claim-row/claim-row.js +34 -35
  9. package/lib/module/blocks/claim-row/claim-row.js.map +1 -1
  10. package/lib/module/blocks/claim-row/index.js +1 -1
  11. package/lib/module/blocks/claim-row/index.js.map +1 -1
  12. package/lib/module/blocks/color-swatch-picker/color-swatch-picker.js +0 -2
  13. package/lib/module/blocks/color-swatch-picker/color-swatch-picker.js.map +1 -1
  14. package/lib/module/blocks/copy-variant-picker/copy-variant-picker.js +0 -2
  15. package/lib/module/blocks/copy-variant-picker/copy-variant-picker.js.map +1 -1
  16. package/lib/module/blocks/credit-wallet/credit-wallet.js +3 -5
  17. package/lib/module/blocks/credit-wallet/credit-wallet.js.map +1 -1
  18. package/lib/module/blocks/generation-progress/generation-progress.js +157 -0
  19. package/lib/module/blocks/generation-progress/generation-progress.js.map +1 -0
  20. package/lib/module/blocks/generation-progress/index.js +4 -0
  21. package/lib/module/blocks/generation-progress/index.js.map +1 -0
  22. package/lib/module/blocks/image-grid/image-grid.js +19 -15
  23. package/lib/module/blocks/image-grid/image-grid.js.map +1 -1
  24. package/lib/module/blocks/index.js +3 -0
  25. package/lib/module/blocks/index.js.map +1 -1
  26. package/lib/module/blocks/internal/card.js +49 -10
  27. package/lib/module/blocks/internal/card.js.map +1 -1
  28. package/lib/module/blocks/internal/format.js +0 -6
  29. package/lib/module/blocks/internal/format.js.map +1 -1
  30. package/lib/module/blocks/invoice-row/invoice-row.js +0 -2
  31. package/lib/module/blocks/invoice-row/invoice-row.js.map +1 -1
  32. package/lib/module/blocks/logo-candidate-grid/logo-candidate-grid.js +0 -2
  33. package/lib/module/blocks/logo-candidate-grid/logo-candidate-grid.js.map +1 -1
  34. package/lib/module/blocks/oauth-buttons/oauth-buttons.js +0 -3
  35. package/lib/module/blocks/oauth-buttons/oauth-buttons.js.map +1 -1
  36. package/lib/module/blocks/option-editor/option-editor.js +22 -12
  37. package/lib/module/blocks/option-editor/option-editor.js.map +1 -1
  38. package/lib/module/blocks/order-card/order-card.js +10 -15
  39. package/lib/module/blocks/order-card/order-card.js.map +1 -1
  40. package/lib/module/blocks/plan-card/plan-card.js +9 -5
  41. package/lib/module/blocks/plan-card/plan-card.js.map +1 -1
  42. package/lib/module/blocks/product-list-empty/product-list-empty.js +0 -2
  43. package/lib/module/blocks/product-list-empty/product-list-empty.js.map +1 -1
  44. package/lib/module/blocks/review-row/review-row.js +0 -8
  45. package/lib/module/blocks/review-row/review-row.js.map +1 -1
  46. package/lib/module/blocks/sales-chart/sales-chart.js +0 -2
  47. package/lib/module/blocks/sales-chart/sales-chart.js.map +1 -1
  48. package/lib/module/blocks/selection-bar/index.js +4 -0
  49. package/lib/module/blocks/selection-bar/index.js.map +1 -0
  50. package/lib/module/blocks/selection-bar/selection-bar.js +69 -0
  51. package/lib/module/blocks/selection-bar/selection-bar.js.map +1 -0
  52. package/lib/module/blocks/service-state-banner/service-state-banner.js +11 -5
  53. package/lib/module/blocks/service-state-banner/service-state-banner.js.map +1 -1
  54. package/lib/module/blocks/shipping-tracking-row/shipping-tracking-row.js +0 -2
  55. package/lib/module/blocks/shipping-tracking-row/shipping-tracking-row.js.map +1 -1
  56. package/lib/module/blocks/site-preview-frame/site-preview-frame.js +12 -2
  57. package/lib/module/blocks/site-preview-frame/site-preview-frame.js.map +1 -1
  58. package/lib/module/blocks/stat-card/stat-card.js +0 -2
  59. package/lib/module/blocks/stat-card/stat-card.js.map +1 -1
  60. package/lib/module/blocks/step-screen/step-screen.js +0 -2
  61. package/lib/module/blocks/step-screen/step-screen.js.map +1 -1
  62. package/lib/module/blocks/supply-item-card/supply-item-card.js +0 -6
  63. package/lib/module/blocks/supply-item-card/supply-item-card.js.map +1 -1
  64. package/lib/module/charts/line-chart.js +10 -1
  65. package/lib/module/charts/line-chart.js.map +1 -1
  66. package/lib/module/charts/scale.js +0 -6
  67. package/lib/module/charts/scale.js.map +1 -1
  68. package/lib/module/charts/sparkline.js +0 -1
  69. package/lib/module/charts/sparkline.js.map +1 -1
  70. package/lib/module/charts/summary.js +0 -1
  71. package/lib/module/charts/summary.js.map +1 -1
  72. package/lib/module/components/button/button.js.map +1 -1
  73. package/lib/module/components/chip/chip.js +14 -0
  74. package/lib/module/components/chip/chip.js.map +1 -1
  75. package/lib/module/components/chip-group/chip-group.js +1 -0
  76. package/lib/module/components/chip-group/chip-group.js.map +1 -1
  77. package/lib/module/components/dialog/dialog.js +0 -2
  78. package/lib/module/components/dialog/dialog.js.map +1 -1
  79. package/lib/module/components/divider/divider.js +0 -1
  80. package/lib/module/components/divider/divider.js.map +1 -1
  81. package/lib/module/components/empty-state/empty-state.js +0 -10
  82. package/lib/module/components/empty-state/empty-state.js.map +1 -1
  83. package/lib/module/components/field/field.js +52 -3
  84. package/lib/module/components/field/field.js.map +1 -1
  85. package/lib/module/components/list-row/list-row.js.map +1 -1
  86. package/lib/module/components/photo/photo.js +0 -3
  87. package/lib/module/components/photo/photo.js.map +1 -1
  88. package/lib/module/components/price/price.js +0 -2
  89. package/lib/module/components/price/price.js.map +1 -1
  90. package/lib/module/components/progress-bar/index.js +4 -0
  91. package/lib/module/components/progress-bar/index.js.map +1 -0
  92. package/lib/module/components/progress-bar/progress-bar.js +92 -0
  93. package/lib/module/components/progress-bar/progress-bar.js.map +1 -0
  94. package/lib/module/components/search-field/search-field.js.map +1 -1
  95. package/lib/module/components/segmented-tabs/segmented-tabs.js.map +1 -1
  96. package/lib/module/components/sheet/sheet.js.map +1 -1
  97. package/lib/module/components/skeleton/skeleton.js +0 -1
  98. package/lib/module/components/skeleton/skeleton.js.map +1 -1
  99. package/lib/module/components/status-badge/status-badge.js.map +1 -1
  100. package/lib/module/components/switch/switch.js +4 -3
  101. package/lib/module/components/switch/switch.js.map +1 -1
  102. package/lib/module/components/text/text.js.map +1 -1
  103. package/lib/module/components/toast/toast.js +0 -8
  104. package/lib/module/components/toast/toast.js.map +1 -1
  105. package/lib/module/components/wizard-steps/wizard-steps.js +0 -2
  106. package/lib/module/components/wizard-steps/wizard-steps.js.map +1 -1
  107. package/lib/module/index.js +1 -0
  108. package/lib/module/index.js.map +1 -1
  109. package/lib/module/internal/glyphs.js +0 -4
  110. package/lib/module/internal/glyphs.js.map +1 -1
  111. package/lib/module/internal/icon.js +0 -2
  112. package/lib/module/internal/icon.js.map +1 -1
  113. package/lib/module/internal/overlay.js +0 -5
  114. package/lib/module/internal/overlay.js.map +1 -1
  115. package/lib/module/internal/pressable-base.js +0 -1
  116. package/lib/module/internal/pressable-base.js.map +1 -1
  117. package/lib/module/internal/use-reduced-motion.js +0 -4
  118. package/lib/module/internal/use-reduced-motion.js.map +1 -1
  119. package/lib/module/sortable/move.js +0 -1
  120. package/lib/module/sortable/move.js.map +1 -1
  121. package/lib/module/sortable/sortable-grid.js +0 -6
  122. package/lib/module/sortable/sortable-grid.js.map +1 -1
  123. package/lib/module/sortable/sortable-list.js +0 -1
  124. package/lib/module/sortable/sortable-list.js.map +1 -1
  125. package/lib/module/theme/create-theme.js +0 -6
  126. package/lib/module/theme/create-theme.js.map +1 -1
  127. package/lib/module/theme/theme-provider.js +0 -2
  128. package/lib/module/theme/theme-provider.js.map +1 -1
  129. package/lib/module/theme/tokens.js +0 -1
  130. package/lib/module/theme/tokens.js.map +1 -1
  131. package/lib/module/utils/color.js +0 -5
  132. package/lib/module/utils/color.js.map +1 -1
  133. package/lib/module/utils/styles.js +0 -5
  134. package/lib/module/utils/styles.js.map +1 -1
  135. package/lib/typescript/src/blocks/brand-profile-card/brand-profile-card.d.ts +0 -2
  136. package/lib/typescript/src/blocks/brand-profile-card/brand-profile-card.d.ts.map +1 -1
  137. package/lib/typescript/src/blocks/bulk-ship-list/bulk-ship-list.d.ts +24 -0
  138. package/lib/typescript/src/blocks/bulk-ship-list/bulk-ship-list.d.ts.map +1 -0
  139. package/lib/typescript/src/blocks/bulk-ship-list/index.d.ts +2 -0
  140. package/lib/typescript/src/blocks/bulk-ship-list/index.d.ts.map +1 -0
  141. package/lib/typescript/src/blocks/claim-row/claim-row.d.ts +5 -12
  142. package/lib/typescript/src/blocks/claim-row/claim-row.d.ts.map +1 -1
  143. package/lib/typescript/src/blocks/claim-row/index.d.ts +1 -1
  144. package/lib/typescript/src/blocks/claim-row/index.d.ts.map +1 -1
  145. package/lib/typescript/src/blocks/color-swatch-picker/color-swatch-picker.d.ts +0 -2
  146. package/lib/typescript/src/blocks/color-swatch-picker/color-swatch-picker.d.ts.map +1 -1
  147. package/lib/typescript/src/blocks/copy-variant-picker/copy-variant-picker.d.ts +0 -4
  148. package/lib/typescript/src/blocks/copy-variant-picker/copy-variant-picker.d.ts.map +1 -1
  149. package/lib/typescript/src/blocks/credit-wallet/credit-wallet.d.ts +1 -3
  150. package/lib/typescript/src/blocks/credit-wallet/credit-wallet.d.ts.map +1 -1
  151. package/lib/typescript/src/blocks/generation-progress/generation-progress.d.ts +17 -0
  152. package/lib/typescript/src/blocks/generation-progress/generation-progress.d.ts.map +1 -0
  153. package/lib/typescript/src/blocks/generation-progress/index.d.ts +2 -0
  154. package/lib/typescript/src/blocks/generation-progress/index.d.ts.map +1 -0
  155. package/lib/typescript/src/blocks/image-grid/image-grid.d.ts +0 -6
  156. package/lib/typescript/src/blocks/image-grid/image-grid.d.ts.map +1 -1
  157. package/lib/typescript/src/blocks/index.d.ts +3 -0
  158. package/lib/typescript/src/blocks/index.d.ts.map +1 -1
  159. package/lib/typescript/src/blocks/internal/card.d.ts +3 -2
  160. package/lib/typescript/src/blocks/internal/card.d.ts.map +1 -1
  161. package/lib/typescript/src/blocks/internal/format.d.ts +0 -3
  162. package/lib/typescript/src/blocks/internal/format.d.ts.map +1 -1
  163. package/lib/typescript/src/blocks/invoice-row/invoice-row.d.ts +0 -7
  164. package/lib/typescript/src/blocks/invoice-row/invoice-row.d.ts.map +1 -1
  165. package/lib/typescript/src/blocks/logo-candidate-grid/logo-candidate-grid.d.ts +0 -2
  166. package/lib/typescript/src/blocks/logo-candidate-grid/logo-candidate-grid.d.ts.map +1 -1
  167. package/lib/typescript/src/blocks/oauth-buttons/oauth-buttons.d.ts +0 -7
  168. package/lib/typescript/src/blocks/oauth-buttons/oauth-buttons.d.ts.map +1 -1
  169. package/lib/typescript/src/blocks/option-editor/option-editor.d.ts +3 -5
  170. package/lib/typescript/src/blocks/option-editor/option-editor.d.ts.map +1 -1
  171. package/lib/typescript/src/blocks/order-card/order-card.d.ts +4 -12
  172. package/lib/typescript/src/blocks/order-card/order-card.d.ts.map +1 -1
  173. package/lib/typescript/src/blocks/plan-card/plan-card.d.ts +2 -13
  174. package/lib/typescript/src/blocks/plan-card/plan-card.d.ts.map +1 -1
  175. package/lib/typescript/src/blocks/product-list-empty/product-list-empty.d.ts +0 -5
  176. package/lib/typescript/src/blocks/product-list-empty/product-list-empty.d.ts.map +1 -1
  177. package/lib/typescript/src/blocks/review-row/review-row.d.ts +0 -9
  178. package/lib/typescript/src/blocks/review-row/review-row.d.ts.map +1 -1
  179. package/lib/typescript/src/blocks/sales-chart/sales-chart.d.ts +0 -5
  180. package/lib/typescript/src/blocks/sales-chart/sales-chart.d.ts.map +1 -1
  181. package/lib/typescript/src/blocks/selection-bar/index.d.ts +2 -0
  182. package/lib/typescript/src/blocks/selection-bar/index.d.ts.map +1 -0
  183. package/lib/typescript/src/blocks/selection-bar/selection-bar.d.ts +12 -0
  184. package/lib/typescript/src/blocks/selection-bar/selection-bar.d.ts.map +1 -0
  185. package/lib/typescript/src/blocks/service-state-banner/service-state-banner.d.ts +3 -4
  186. package/lib/typescript/src/blocks/service-state-banner/service-state-banner.d.ts.map +1 -1
  187. package/lib/typescript/src/blocks/shipping-tracking-row/shipping-tracking-row.d.ts +0 -1
  188. package/lib/typescript/src/blocks/shipping-tracking-row/shipping-tracking-row.d.ts.map +1 -1
  189. package/lib/typescript/src/blocks/site-preview-frame/site-preview-frame.d.ts +3 -5
  190. package/lib/typescript/src/blocks/site-preview-frame/site-preview-frame.d.ts.map +1 -1
  191. package/lib/typescript/src/blocks/stat-card/stat-card.d.ts +0 -5
  192. package/lib/typescript/src/blocks/stat-card/stat-card.d.ts.map +1 -1
  193. package/lib/typescript/src/blocks/step-screen/step-screen.d.ts +0 -6
  194. package/lib/typescript/src/blocks/step-screen/step-screen.d.ts.map +1 -1
  195. package/lib/typescript/src/blocks/supply-item-card/supply-item-card.d.ts +0 -6
  196. package/lib/typescript/src/blocks/supply-item-card/supply-item-card.d.ts.map +1 -1
  197. package/lib/typescript/src/charts/line-chart.d.ts +1 -5
  198. package/lib/typescript/src/charts/line-chart.d.ts.map +1 -1
  199. package/lib/typescript/src/charts/scale.d.ts +0 -3
  200. package/lib/typescript/src/charts/scale.d.ts.map +1 -1
  201. package/lib/typescript/src/charts/sparkline.d.ts +0 -4
  202. package/lib/typescript/src/charts/sparkline.d.ts.map +1 -1
  203. package/lib/typescript/src/charts/summary.d.ts +0 -1
  204. package/lib/typescript/src/charts/summary.d.ts.map +1 -1
  205. package/lib/typescript/src/components/button/button.d.ts +0 -3
  206. package/lib/typescript/src/components/button/button.d.ts.map +1 -1
  207. package/lib/typescript/src/components/chip/chip.d.ts +2 -1
  208. package/lib/typescript/src/components/chip/chip.d.ts.map +1 -1
  209. package/lib/typescript/src/components/chip-group/chip-group.d.ts +1 -2
  210. package/lib/typescript/src/components/chip-group/chip-group.d.ts.map +1 -1
  211. package/lib/typescript/src/components/dialog/dialog.d.ts +0 -7
  212. package/lib/typescript/src/components/dialog/dialog.d.ts.map +1 -1
  213. package/lib/typescript/src/components/divider/divider.d.ts +0 -2
  214. package/lib/typescript/src/components/divider/divider.d.ts.map +1 -1
  215. package/lib/typescript/src/components/empty-state/empty-state.d.ts +0 -10
  216. package/lib/typescript/src/components/empty-state/empty-state.d.ts.map +1 -1
  217. package/lib/typescript/src/components/field/field.d.ts +3 -3
  218. package/lib/typescript/src/components/field/field.d.ts.map +1 -1
  219. package/lib/typescript/src/components/list-row/list-row.d.ts +0 -3
  220. package/lib/typescript/src/components/list-row/list-row.d.ts.map +1 -1
  221. package/lib/typescript/src/components/photo/photo.d.ts +0 -4
  222. package/lib/typescript/src/components/photo/photo.d.ts.map +1 -1
  223. package/lib/typescript/src/components/price/price.d.ts +0 -3
  224. package/lib/typescript/src/components/price/price.d.ts.map +1 -1
  225. package/lib/typescript/src/components/progress-bar/index.d.ts +2 -0
  226. package/lib/typescript/src/components/progress-bar/index.d.ts.map +1 -0
  227. package/lib/typescript/src/components/progress-bar/progress-bar.d.ts +9 -0
  228. package/lib/typescript/src/components/progress-bar/progress-bar.d.ts.map +1 -0
  229. package/lib/typescript/src/components/search-field/search-field.d.ts +0 -1
  230. package/lib/typescript/src/components/search-field/search-field.d.ts.map +1 -1
  231. package/lib/typescript/src/components/segmented-tabs/segmented-tabs.d.ts +0 -1
  232. package/lib/typescript/src/components/segmented-tabs/segmented-tabs.d.ts.map +1 -1
  233. package/lib/typescript/src/components/sheet/sheet.d.ts +0 -3
  234. package/lib/typescript/src/components/sheet/sheet.d.ts.map +1 -1
  235. package/lib/typescript/src/components/skeleton/skeleton.d.ts +0 -4
  236. package/lib/typescript/src/components/skeleton/skeleton.d.ts.map +1 -1
  237. package/lib/typescript/src/components/status-badge/status-badge.d.ts +0 -1
  238. package/lib/typescript/src/components/status-badge/status-badge.d.ts.map +1 -1
  239. package/lib/typescript/src/components/switch/switch.d.ts.map +1 -1
  240. package/lib/typescript/src/components/text/text.d.ts +0 -3
  241. package/lib/typescript/src/components/text/text.d.ts.map +1 -1
  242. package/lib/typescript/src/components/toast/toast.d.ts +0 -8
  243. package/lib/typescript/src/components/toast/toast.d.ts.map +1 -1
  244. package/lib/typescript/src/components/wizard-steps/wizard-steps.d.ts +0 -3
  245. package/lib/typescript/src/components/wizard-steps/wizard-steps.d.ts.map +1 -1
  246. package/lib/typescript/src/index.d.ts +1 -0
  247. package/lib/typescript/src/index.d.ts.map +1 -1
  248. package/lib/typescript/src/internal/glyphs.d.ts +0 -1
  249. package/lib/typescript/src/internal/glyphs.d.ts.map +1 -1
  250. package/lib/typescript/src/internal/icon.d.ts +0 -1
  251. package/lib/typescript/src/internal/icon.d.ts.map +1 -1
  252. package/lib/typescript/src/internal/overlay.d.ts +0 -4
  253. package/lib/typescript/src/internal/overlay.d.ts.map +1 -1
  254. package/lib/typescript/src/internal/pressable-base.d.ts +0 -3
  255. package/lib/typescript/src/internal/pressable-base.d.ts.map +1 -1
  256. package/lib/typescript/src/internal/use-reduced-motion.d.ts +0 -1
  257. package/lib/typescript/src/internal/use-reduced-motion.d.ts.map +1 -1
  258. package/lib/typescript/src/sortable/move.d.ts +0 -1
  259. package/lib/typescript/src/sortable/move.d.ts.map +1 -1
  260. package/lib/typescript/src/sortable/sortable-grid.d.ts +0 -12
  261. package/lib/typescript/src/sortable/sortable-grid.d.ts.map +1 -1
  262. package/lib/typescript/src/sortable/sortable-list.d.ts +0 -1
  263. package/lib/typescript/src/sortable/sortable-list.d.ts.map +1 -1
  264. package/lib/typescript/src/theme/create-theme.d.ts +0 -4
  265. package/lib/typescript/src/theme/create-theme.d.ts.map +1 -1
  266. package/lib/typescript/src/theme/theme-provider.d.ts +0 -3
  267. package/lib/typescript/src/theme/theme-provider.d.ts.map +1 -1
  268. package/lib/typescript/src/theme/tokens.d.ts.map +1 -1
  269. package/lib/typescript/src/types/index.d.ts +0 -7
  270. package/lib/typescript/src/types/index.d.ts.map +1 -1
  271. package/lib/typescript/src/utils/color.d.ts +0 -2
  272. package/lib/typescript/src/utils/color.d.ts.map +1 -1
  273. package/lib/typescript/src/utils/styles.d.ts +0 -5
  274. package/lib/typescript/src/utils/styles.d.ts.map +1 -1
  275. package/package.json +1 -1
  276. package/src/blocks/brand-profile-card/brand-profile-card.tsx +0 -2
  277. package/src/blocks/bulk-ship-list/bulk-ship-list.tsx +187 -0
  278. package/src/blocks/bulk-ship-list/index.ts +8 -0
  279. package/src/blocks/claim-row/claim-row.tsx +67 -54
  280. package/src/blocks/claim-row/index.ts +1 -0
  281. package/src/blocks/color-swatch-picker/color-swatch-picker.tsx +0 -2
  282. package/src/blocks/copy-variant-picker/copy-variant-picker.tsx +0 -4
  283. package/src/blocks/credit-wallet/credit-wallet.tsx +20 -14
  284. package/src/blocks/generation-progress/generation-progress.tsx +180 -0
  285. package/src/blocks/generation-progress/index.ts +6 -0
  286. package/src/blocks/image-grid/image-grid.tsx +10 -14
  287. package/src/blocks/index.tsx +3 -0
  288. package/src/blocks/internal/card.tsx +47 -3
  289. package/src/blocks/internal/format.ts +0 -3
  290. package/src/blocks/invoice-row/invoice-row.tsx +0 -7
  291. package/src/blocks/logo-candidate-grid/logo-candidate-grid.tsx +0 -2
  292. package/src/blocks/oauth-buttons/oauth-buttons.tsx +0 -8
  293. package/src/blocks/option-editor/option-editor.tsx +24 -10
  294. package/src/blocks/order-card/order-card.tsx +20 -28
  295. package/src/blocks/plan-card/plan-card.tsx +18 -16
  296. package/src/blocks/product-list-empty/product-list-empty.tsx +0 -5
  297. package/src/blocks/review-row/review-row.tsx +0 -10
  298. package/src/blocks/sales-chart/sales-chart.tsx +0 -5
  299. package/src/blocks/selection-bar/index.ts +1 -0
  300. package/src/blocks/selection-bar/selection-bar.tsx +63 -0
  301. package/src/blocks/service-state-banner/service-state-banner.tsx +16 -5
  302. package/src/blocks/shipping-tracking-row/shipping-tracking-row.tsx +0 -1
  303. package/src/blocks/site-preview-frame/site-preview-frame.tsx +20 -5
  304. package/src/blocks/stat-card/stat-card.tsx +0 -5
  305. package/src/blocks/step-screen/step-screen.tsx +0 -6
  306. package/src/blocks/supply-item-card/supply-item-card.tsx +0 -6
  307. package/src/charts/line-chart.tsx +11 -6
  308. package/src/charts/scale.ts +0 -3
  309. package/src/charts/sparkline.tsx +0 -4
  310. package/src/charts/summary.ts +0 -1
  311. package/src/components/button/button.tsx +0 -3
  312. package/src/components/chip/chip.tsx +17 -0
  313. package/src/components/chip-group/chip-group.tsx +2 -2
  314. package/src/components/dialog/dialog.tsx +0 -7
  315. package/src/components/divider/divider.tsx +0 -2
  316. package/src/components/empty-state/empty-state.tsx +0 -11
  317. package/src/components/field/field.tsx +54 -4
  318. package/src/components/list-row/list-row.tsx +0 -3
  319. package/src/components/photo/photo.tsx +0 -5
  320. package/src/components/price/price.tsx +0 -3
  321. package/src/components/progress-bar/index.ts +1 -0
  322. package/src/components/progress-bar/progress-bar.tsx +80 -0
  323. package/src/components/search-field/search-field.tsx +0 -1
  324. package/src/components/segmented-tabs/segmented-tabs.tsx +0 -1
  325. package/src/components/sheet/sheet.tsx +0 -3
  326. package/src/components/skeleton/skeleton.tsx +0 -4
  327. package/src/components/status-badge/status-badge.tsx +0 -1
  328. package/src/components/switch/switch.tsx +5 -3
  329. package/src/components/text/text.tsx +0 -3
  330. package/src/components/toast/toast.tsx +0 -11
  331. package/src/components/wizard-steps/wizard-steps.tsx +0 -3
  332. package/src/index.tsx +1 -0
  333. package/src/internal/glyphs.tsx +0 -3
  334. package/src/internal/icon.tsx +0 -1
  335. package/src/internal/overlay.tsx +0 -4
  336. package/src/internal/pressable-base.tsx +0 -3
  337. package/src/internal/use-reduced-motion.ts +0 -2
  338. package/src/sortable/move.ts +0 -1
  339. package/src/sortable/sortable-grid.tsx +0 -12
  340. package/src/sortable/sortable-list.tsx +0 -1
  341. package/src/theme/create-theme.ts +0 -5
  342. package/src/theme/theme-provider.tsx +0 -3
  343. package/src/theme/tokens.ts +0 -1
  344. package/src/types/index.ts +0 -7
  345. package/src/utils/color.ts +0 -3
  346. package/src/utils/styles.ts +0 -5
@@ -10,27 +10,15 @@ export type SortableGridProps<T> = {
10
10
  item: T;
11
11
  index: number;
12
12
  }) => ReactNode;
13
- /** 순서가 바뀐 새 배열 */
14
13
  onDataChange: (data: T[], change: SortableChange) => void;
15
- /** 기본 3 */
16
14
  columns?: number;
17
- /** 항목 사이 간격. 기본 space[2] */
18
15
  gap?: number;
19
- /** true면 SortableHandle을 눌러야만 끈다 */
20
16
  handle?: boolean;
21
- /** false면 끌 수 없다. 기본 true */
22
17
  enabled?: boolean;
23
- /** 항목의 접근성 라벨. 넘기면 앞으로 · 뒤로 이동 동작을 제공한다 */
24
18
  itemLabel?: (item: T) => string;
25
- /** 접근성 동작 이름. 기본 ['앞으로 이동', '뒤로 이동'] */
26
19
  moveLabels?: [string, string];
27
20
  };
28
- /**
29
- * 길게 눌러 순서를 바꾸는 격자. 앱 최상단이 GestureHandlerRootView로 감싸져 있어야 한다.
30
- * columns={1}이면 세로 목록이다.
31
- */
32
21
  export declare function SortableGrid<T>({ data, keyExtractor, renderItem, onDataChange, columns, gap, handle, enabled, itemLabel, moveLabels, }: SortableGridProps<T>): import("react").JSX.Element;
33
- /** handle을 켠 SortableGrid · SortableList 안에서 끄는 손잡이 */
34
22
  export declare function SortableHandle({ children }: {
35
23
  children: ReactNode;
36
24
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"sortable-grid.d.ts","sourceRoot":"","sources":["../../../../src/sortable/sortable-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAClC,UAAU,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC;IAC5D,kBAAkB;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1D,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAChC,wCAAwC;IACxC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,OAAW,EACX,GAAG,EACH,MAAc,EACd,OAAc,EACd,SAAS,EACT,UAAgC,GACjC,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAgDtB;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAEnE"}
1
+ {"version":3,"file":"sortable-grid.d.ts","sourceRoot":"","sources":["../../../../src/sortable/sortable-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAClC,UAAU,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC;IAC5D,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,OAAW,EACX,GAAG,EACH,MAAc,EACd,OAAc,EACd,SAAS,EACT,UAAgC,GACjC,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAgDtB;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAEnE"}
@@ -1,5 +1,4 @@
1
1
  import { type SortableGridProps } from './sortable-grid.js';
2
2
  export type SortableListProps<T> = Omit<SortableGridProps<T>, 'columns'>;
3
- /** 길게 눌러 순서를 바꾸는 세로 목록. 앱 최상단이 GestureHandlerRootView로 감싸져 있어야 한다 */
4
3
  export declare function SortableList<T>({ moveLabels, ...props }: SortableListProps<T>): import("react").JSX.Element;
5
4
  //# sourceMappingURL=sortable-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sortable-list.d.ts","sourceRoot":"","sources":["../../../../src/sortable/sortable-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,oBAAiB,CAAC;AAEvE,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAEzE,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,UAAgC,EAChC,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAEtB"}
1
+ {"version":3,"file":"sortable-list.d.ts","sourceRoot":"","sources":["../../../../src/sortable/sortable-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,oBAAiB,CAAC;AAEvE,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAEzE,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,UAAgC,EAChC,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAEtB"}
@@ -1,8 +1,4 @@
1
1
  import type { ThemeOverrides, Themes } from '../types/index.js';
2
- /**
3
- * 기본 토큰에 overrides를 덮어 light · dark 테마를 만든다.
4
- * 렌더 밖(모듈 최상단)이나 useMemo 안에서 호출한다.
5
- */
6
2
  export declare function createTheme(overrides?: ThemeOverrides): Themes;
7
3
  export declare const defaultThemes: Themes;
8
4
  //# sourceMappingURL=create-theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/create-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,cAAc,EACd,MAAM,EACP,MAAM,mBAAU,CAAC;AAuClB;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,GAAE,cAAmB,GAAG,MAAM,CAelE;AAED,eAAO,MAAM,aAAa,QAAgB,CAAC"}
1
+ {"version":3,"file":"create-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/create-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,cAAc,EACd,MAAM,EACP,MAAM,mBAAU,CAAC;AAsClB,wBAAgB,WAAW,CAAC,SAAS,GAAE,cAAmB,GAAG,MAAM,CAelE;AAED,eAAO,MAAM,aAAa,QAAgB,CAAC"}
@@ -1,13 +1,10 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { ColorScheme, Theme, Themes } from '../types/index.js';
3
3
  export type ThemeProviderProps = {
4
- /** createTheme() 결과. 기본값은 기본 테마 */
5
4
  themes?: Themes;
6
- /** 기본값 'light'. 'system'은 기기 설정을 따른다 */
7
5
  colorScheme?: ColorScheme | 'system';
8
6
  children: ReactNode;
9
7
  };
10
8
  export declare function ThemeProvider({ themes, colorScheme, children, }: ThemeProviderProps): import("react").JSX.Element;
11
- /** 가장 가까운 ThemeProvider의 테마. Provider가 없으면 기본 light 테마 */
12
9
  export declare function useTheme(): Theme;
13
10
  //# sourceMappingURL=theme-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../../../src/theme/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAU,CAAC;AAK3D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,MAAsB,EACtB,WAAqB,EACrB,QAAQ,GACT,EAAE,kBAAkB,+BAYpB;AAED,0DAA0D;AAC1D,wBAAgB,QAAQ,IAAI,KAAK,CAEhC"}
1
+ {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../../../src/theme/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAU,CAAC;AAK3D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,MAAsB,EACtB,WAAqB,EACrB,QAAQ,GACT,EAAE,kBAAkB,+BAYpB;AAED,wBAAgB,QAAQ,IAAI,KAAK,CAEhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAU,CAAC;AAgBtE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAuCnD,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,WAgCpB,CAAC"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAU,CAAC;AAetE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAuCnD,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,WAgCpB,CAAC"}
@@ -6,7 +6,6 @@ export type ThemeColors = {
6
6
  muted: string;
7
7
  mutedForeground: string;
8
8
  border: string;
9
- /** 입력칸 · outline 버튼 테두리 */
10
9
  input: string;
11
10
  ring: string;
12
11
  primary: string;
@@ -47,11 +46,8 @@ export type ThemeTokens = {
47
46
  full: number;
48
47
  };
49
48
  typography: Record<TypographyVariant, TypographyToken>;
50
- /** undefined이면 시스템 폰트 */
51
49
  fontFamily: string | undefined;
52
- /** 기기 글자 크기 설정이 적용되는 최대 배율 */
53
50
  maxFontScale: number;
54
- /** `boxShadow` 값 (New Architecture) */
55
51
  shadow: {
56
52
  sm: string;
57
53
  md: string;
@@ -67,7 +63,6 @@ export type ThemeTokens = {
67
63
  sm: number;
68
64
  md: number;
69
65
  };
70
- /** 최소 터치 영역 (iOS 44, Android 48) */
71
66
  minTouchSize: number;
72
67
  };
73
68
  export type Theme = ThemeTokens & {
@@ -79,9 +74,7 @@ type DeepPartial<T> = {
79
74
  [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
80
75
  };
81
76
  export type ThemeOverrides = DeepPartial<ThemeTokens> & {
82
- /** light · dark 공통 */
83
77
  colors?: Partial<ThemeColors>;
84
- /** dark에만 적용 (colors보다 우선) */
85
78
  dark?: {
86
79
  colors?: Partial<ThemeColors>;
87
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAC3B,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE;QACL,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACvD,yBAAyB;IACzB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAEhD,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG;IACtD,sBAAsB;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,8BAA8B;IAC9B,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC;CAC1C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- /** WCAG 대비 비율 (1~21) */
2
1
  export declare function contrastRatio(a: string, b: string): number;
3
- /** 배경 위에서 대비가 더 큰 글자색 */
4
2
  export declare function pickForeground(background: string, dark: string, light: string): string;
5
3
  //# sourceMappingURL=color.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/utils/color.ts"],"names":[],"mappings":"AA4BA,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,yBAAyB;AACzB,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,MAAM,CAIR"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/utils/color.ts"],"names":[],"mappings":"AA2BA,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,MAAM,CAIR"}
@@ -3,11 +3,6 @@ import type { Theme } from '../types/index.js';
3
3
  type NamedStyles<T> = {
4
4
  [K in keyof T]: ViewStyle | TextStyle | ImageStyle;
5
5
  };
6
- /**
7
- * 테마로 스타일을 만드는 hook을 반환한다. 같은 테마에는 같은 스타일 객체를 돌려준다.
8
- *
9
- * const useStyles = makeStyles((t) => ({ box: { padding: t.space[4] } }));
10
- */
11
6
  export declare function makeStyles<T extends NamedStyles<T>>(factory: (theme: Theme) => T): () => T;
12
7
  export {};
13
8
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAU,CAAC;AAGtC,KAAK,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU;CAAE,CAAC;AAE7E;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EACjD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,GAC3B,MAAM,CAAC,CAWT"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAU,CAAC;AAGtC,KAAK,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU;CAAE,CAAC;AAE7E,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EACjD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,GAC3B,MAAM,CAAC,CAWT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ezpg/app-ui",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "React Native UI components for EZPG partner apps",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -15,7 +15,6 @@ export type BrandProfileCardProps = {
15
15
  industry: string;
16
16
  tagline?: string;
17
17
  logo?: ImageSourcePropType;
18
- /** 브랜드 색 (hex) */
19
18
  colors?: readonly string[];
20
19
  keywords?: readonly string[];
21
20
  onEdit?: () => void;
@@ -36,7 +35,6 @@ const useStyles = makeStyles((t) => ({
36
35
  },
37
36
  }));
38
37
 
39
- /** AI가 만든 브랜드 요약 */
40
38
  export function BrandProfileCard({
41
39
  name,
42
40
  industry,
@@ -0,0 +1,187 @@
1
+ import { StyleSheet, View, type StyleProp, type ViewStyle } from 'react-native';
2
+ import { ChipGroup } from '../../components/chip-group/chip-group';
3
+ import { Field } from '../../components/field/field';
4
+ import { Text } from '../../components/text/text';
5
+ import type { IconRenderProps } from '../../internal/icon';
6
+ import { PressableBase } from '../../internal/pressable-base';
7
+ import { useTheme } from '../../theme/theme-provider';
8
+ import { makeStyles } from '../../utils/styles';
9
+
10
+ export type ShipCarrier = { code: string; name: string };
11
+
12
+ export type BulkShipRow = {
13
+ id: string;
14
+ title: string;
15
+ subtitle?: string;
16
+ trackingNo: string;
17
+ };
18
+
19
+ export type BulkShipListProps = {
20
+ carriers: readonly ShipCarrier[];
21
+ carrier: string | null;
22
+ onCarrierChange: (code: string) => void;
23
+ rows: readonly BulkShipRow[];
24
+ onTrackingChange: (id: string, value: string) => void;
25
+ onScan?: (id: string) => void;
26
+ style?: StyleProp<ViewStyle>;
27
+ };
28
+
29
+ export type TrackingIssue = 'invalid' | 'duplicate';
30
+
31
+ const TRACKING = /^[0-9-]{8,20}$/;
32
+ const INVALID = '숫자와 -만 8~20자리로 입력해 주세요';
33
+ const DUPLICATE = '같은 송장 번호가 다른 주문에도 있어요';
34
+ const FIELD_HEIGHT = 52;
35
+
36
+ export function trackingIssues(
37
+ rows: readonly BulkShipRow[]
38
+ ): Record<string, TrackingIssue> {
39
+ const key = (v: string) => v.trim().replace(/-/g, '');
40
+ const seen = new Map<string, number>();
41
+ for (const row of rows) {
42
+ const k = key(row.trackingNo);
43
+ if (k && TRACKING.test(row.trackingNo.trim())) {
44
+ seen.set(k, (seen.get(k) ?? 0) + 1);
45
+ }
46
+ }
47
+ const issues: Record<string, TrackingIssue> = {};
48
+ for (const row of rows) {
49
+ const value = row.trackingNo.trim();
50
+ if (!value) continue;
51
+ if (!TRACKING.test(value)) issues[row.id] = 'invalid';
52
+ else if ((seen.get(key(value)) ?? 0) > 1) issues[row.id] = 'duplicate';
53
+ }
54
+ return issues;
55
+ }
56
+
57
+ const useStyles = makeStyles((t) => ({
58
+ root: { gap: t.space[5] },
59
+ carrier: { gap: t.space[2] },
60
+ list: { gap: t.space[4] },
61
+ row: { gap: t.space[2] },
62
+ input: { flexDirection: 'row', alignItems: 'flex-start', gap: t.space[2] },
63
+ field: { flex: 1 },
64
+ scan: {
65
+ width: FIELD_HEIGHT,
66
+ height: FIELD_HEIGHT,
67
+ alignItems: 'center',
68
+ justifyContent: 'center',
69
+ borderRadius: 10,
70
+ borderWidth: 1,
71
+ borderColor: t.colors.input,
72
+ backgroundColor: t.colors.background,
73
+ },
74
+ pressed: { backgroundColor: t.colors.muted },
75
+ }));
76
+
77
+ const g = StyleSheet.create({ absolute: { position: 'absolute' } });
78
+
79
+ function ScanGlyph({ color, size }: IconRenderProps) {
80
+ const stroke = Math.max(1.5, size / 12);
81
+ const arm = size * 0.3;
82
+ const corner = (v: 'top' | 'bottom', h: 'left' | 'right') => ({
83
+ position: 'absolute' as const,
84
+ width: arm,
85
+ height: arm,
86
+ borderColor: color,
87
+ [v]: 0,
88
+ [h]: 0,
89
+ [v === 'top' ? 'borderTopWidth' : 'borderBottomWidth']: stroke,
90
+ [h === 'left' ? 'borderLeftWidth' : 'borderRightWidth']: stroke,
91
+ });
92
+ return (
93
+ <View style={{ width: size, height: size }}>
94
+ <View style={corner('top', 'left')} />
95
+ <View style={corner('top', 'right')} />
96
+ <View style={corner('bottom', 'left')} />
97
+ <View style={corner('bottom', 'right')} />
98
+ <View
99
+ style={[
100
+ g.absolute,
101
+ {
102
+ left: size * 0.12,
103
+ right: size * 0.12,
104
+ top: (size - stroke) / 2,
105
+ height: stroke,
106
+ borderRadius: stroke,
107
+ backgroundColor: color,
108
+ },
109
+ ]}
110
+ />
111
+ </View>
112
+ );
113
+ }
114
+
115
+ export function BulkShipList({
116
+ carriers,
117
+ carrier,
118
+ onCarrierChange,
119
+ rows,
120
+ onTrackingChange,
121
+ onScan,
122
+ style,
123
+ }: BulkShipListProps) {
124
+ const t = useTheme();
125
+ const s = useStyles();
126
+ const issues = trackingIssues(rows);
127
+ return (
128
+ <View style={[s.root, style]}>
129
+ <View style={s.carrier}>
130
+ <Text weight="semibold" accessibilityRole="header">
131
+ 택배사
132
+ </Text>
133
+ <ChipGroup
134
+ items={carriers.map((c) => ({ value: c.code, label: c.name }))}
135
+ value={carrier}
136
+ onValueChange={(code) => {
137
+ if (code !== null) onCarrierChange(code);
138
+ }}
139
+ />
140
+ </View>
141
+ <View style={s.list}>
142
+ {rows.map((row) => {
143
+ const issue = issues[row.id];
144
+ return (
145
+ <View key={row.id} style={s.row}>
146
+ <View>
147
+ <Text weight="semibold" numberOfLines={1}>
148
+ {row.title}
149
+ </Text>
150
+ {row.subtitle ? (
151
+ <Text variant="caption" tone="muted" numberOfLines={1}>
152
+ {row.subtitle}
153
+ </Text>
154
+ ) : null}
155
+ </View>
156
+ <View style={s.input}>
157
+ <Field
158
+ style={s.field}
159
+ value={row.trackingNo}
160
+ onChangeText={(v) => onTrackingChange(row.id, v)}
161
+ placeholder="송장 번호"
162
+ keyboardType="number-pad"
163
+ inputMode="numeric"
164
+ autoCorrect={false}
165
+ maxLength={20}
166
+ accessibilityLabel={`${row.title} 송장 번호`}
167
+ error={issue === 'invalid' ? INVALID : undefined}
168
+ warning={issue === 'duplicate' ? DUPLICATE : undefined}
169
+ />
170
+ {onScan ? (
171
+ <PressableBase
172
+ accessibilityLabel={`${row.title} 송장 스캔`}
173
+ onPress={() => onScan(row.id)}
174
+ pressedStyle={s.pressed}
175
+ style={s.scan}
176
+ >
177
+ <ScanGlyph color={t.colors.foreground} size={22} />
178
+ </PressableBase>
179
+ ) : null}
180
+ </View>
181
+ </View>
182
+ );
183
+ })}
184
+ </View>
185
+ </View>
186
+ );
187
+ }
@@ -0,0 +1,8 @@
1
+ export {
2
+ BulkShipList,
3
+ trackingIssues,
4
+ type BulkShipListProps,
5
+ type BulkShipRow,
6
+ type ShipCarrier,
7
+ type TrackingIssue,
8
+ } from './bulk-ship-list';
@@ -1,27 +1,25 @@
1
1
  import { View, type StyleProp, type ViewStyle } from 'react-native';
2
- import { Button } from '../../components/button/button';
3
2
  import { formatPrice } from '../../components/price/price';
4
3
  import { Text } from '../../components/text/text';
5
4
  import { makeStyles } from '../../utils/styles';
6
5
  import { Card } from '../internal/card';
7
- import { formatDeadline } from '../internal/format';
8
6
 
9
7
  export type ClaimType = 'cancel' | 'return' | 'exchange';
10
- export type ClaimStatus = 'requested' | 'collecting' | 'completed' | 'rejected';
8
+ export type ClaimStatus =
9
+ | 'requested'
10
+ | 'collecting'
11
+ | 'collected'
12
+ | 'held'
13
+ | 'completed'
14
+ | 'rejected'
15
+ | 'withdrawn';
11
16
 
12
17
  export type ClaimRowProps = {
13
18
  type: ClaimType;
14
- /** 기본 'requested' */
15
19
  status?: ClaimStatus;
16
- /** 요청 금액 */
17
20
  amount: number;
18
- /** 예) '상품 파손' */
19
- reason: string;
20
- /** 처리 기한까지 남은 영업일. 임박했을 때만 표시한다 */
21
- dueInDays?: number;
22
- /** 요청 상태일 때 [거부] [승인] 버튼 */
23
- onReject?: () => void;
24
- onApprove?: () => void;
21
+ reason?: string;
22
+ dueAt?: Date | string;
25
23
  onPress?: () => void;
26
24
  style?: StyleProp<ViewStyle>;
27
25
  };
@@ -31,45 +29,73 @@ const TYPE: Record<ClaimType, string> = {
31
29
  return: '반품',
32
30
  exchange: '교환',
33
31
  };
34
- const STATUS: Record<ClaimStatus, string> = {
32
+
33
+ export const claimStatusLabel: Record<ClaimStatus, string> = {
35
34
  requested: '요청',
36
35
  collecting: '회수 중',
36
+ collected: '회수 완료',
37
+ held: '보류',
37
38
  completed: '완료',
38
- rejected: '거부',
39
+ rejected: '거절',
40
+ withdrawn: '철회',
39
41
  };
40
42
 
43
+ const OPEN: readonly ClaimStatus[] = [
44
+ 'requested',
45
+ 'collecting',
46
+ 'collected',
47
+ 'held',
48
+ ];
49
+
50
+ const DAY = 86400000;
51
+
52
+ function toDate(value: Date | string): Date {
53
+ if (typeof value !== 'string') return value;
54
+ const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
55
+ return m
56
+ ? new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]))
57
+ : new Date(value);
58
+ }
59
+
60
+ function daysUntil(value: Date | string, now = new Date()): number | null {
61
+ const due = toDate(value);
62
+ if (Number.isNaN(due.getTime())) return null;
63
+ const a = new Date(now.getFullYear(), now.getMonth(), now.getDate());
64
+ const b = new Date(due.getFullYear(), due.getMonth(), due.getDate());
65
+ return Math.round((b.getTime() - a.getTime()) / DAY);
66
+ }
67
+
68
+ function formatDday(days: number): string {
69
+ if (days < 0) return '기한 지남';
70
+ return days === 0 ? 'D-day' : `D-${days}`;
71
+ }
72
+
41
73
  const useStyles = makeStyles((t) => ({
42
74
  row: { flexDirection: 'row', alignItems: 'center', gap: t.space[2] },
43
75
  grow: { flex: 1 },
44
76
  head: { fontSize: 16, lineHeight: 24, fontVariant: ['tabular-nums'] },
45
- deadline: { fontSize: 14, lineHeight: 20 },
46
- action: { flex: 1 },
77
+ deadline: { fontSize: 14, lineHeight: 20, fontVariant: ['tabular-nums'] },
47
78
  }));
48
79
 
49
- /** 취소 · 반품 · 교환 요청 한 건 */
50
80
  export function ClaimRow({
51
81
  type,
52
82
  status = 'requested',
53
83
  amount,
54
84
  reason,
55
- dueInDays,
56
- onReject,
57
- onApprove,
85
+ dueAt,
58
86
  onPress,
59
87
  style,
60
88
  }: ClaimRowProps) {
61
89
  const s = useStyles();
62
- const title = `${TYPE[type]} ${STATUS[status]}`;
63
- const open = status === 'requested' || status === 'collecting';
64
- const deadline =
65
- open && dueInDays !== undefined ? formatDeadline(dueInDays) : null;
66
- const actionable = status === 'requested' && (onReject || onApprove);
90
+ const title = `${TYPE[type]} ${claimStatusLabel[status]}`;
91
+ const days =
92
+ OPEN.includes(status) && dueAt !== undefined ? daysUntil(dueAt) : null;
93
+ const deadline = days === null ? null : formatDday(days);
94
+ const label = [title, formatPrice(amount), reason, deadline]
95
+ .filter(Boolean)
96
+ .join(', ');
67
97
  return (
68
- <Card
69
- onPress={onPress}
70
- accessibilityLabel={`${title}, ${formatPrice(amount)}, ${reason}${deadline ? `, ${deadline}` : ''}`}
71
- style={style}
72
- >
98
+ <Card onPress={onPress} accessibilityLabel={label} style={style}>
73
99
  <View style={s.row}>
74
100
  <Text weight="bold" style={[s.head, s.grow]} numberOfLines={1}>
75
101
  {title}
@@ -78,32 +104,19 @@ export function ClaimRow({
78
104
  {formatPrice(amount)}
79
105
  </Text>
80
106
  </View>
81
- <View style={s.row}>
82
- <Text style={s.grow} numberOfLines={1}>
83
- {reason}
84
- </Text>
85
- {deadline ? (
86
- <Text weight="bold" tone="destructive" style={s.deadline}>
87
- {deadline}
88
- </Text>
89
- ) : null}
90
- </View>
91
- {actionable ? (
107
+ {reason || deadline ? (
92
108
  <View style={s.row}>
93
- {onReject ? (
94
- <Button
95
- size="sm"
96
- variant="outline"
97
- style={s.action}
98
- onPress={onReject}
109
+ <Text style={s.grow} numberOfLines={1}>
110
+ {reason ?? ''}
111
+ </Text>
112
+ {deadline ? (
113
+ <Text
114
+ weight="bold"
115
+ tone={days !== null && days <= 1 ? 'destructive' : 'muted'}
116
+ style={s.deadline}
99
117
  >
100
- 거부
101
- </Button>
102
- ) : null}
103
- {onApprove ? (
104
- <Button size="sm" style={s.action} onPress={onApprove}>
105
- 승인
106
- </Button>
118
+ {deadline}
119
+ </Text>
107
120
  ) : null}
108
121
  </View>
109
122
  ) : null}
@@ -1,5 +1,6 @@
1
1
  export {
2
2
  ClaimRow,
3
+ claimStatusLabel,
3
4
  type ClaimRowProps,
4
5
  type ClaimStatus,
5
6
  type ClaimType,
@@ -12,7 +12,6 @@ export type ColorSwatchPickerProps = {
12
12
  colors: readonly ColorSwatch[];
13
13
  value: string;
14
14
  onValueChange: (value: string) => void;
15
- /** 'circle'은 색 점, 'card'는 버튼 모양 미리보기. 기본 'circle' */
16
15
  variant?: 'circle' | 'card';
17
16
  style?: StyleProp<ViewStyle>;
18
17
  };
@@ -60,7 +59,6 @@ const useStyles = makeStyles((t) => ({
60
59
  short: { width: '45%' },
61
60
  }));
62
61
 
63
- /** 브랜드 색 고르기 */
64
62
  export function ColorSwatchPicker({
65
63
  colors,
66
64
  value,
@@ -8,14 +8,11 @@ import { makeStyles } from '../../utils/styles';
8
8
  export type CopyVariant = { id: string; text: string; locked?: boolean };
9
9
 
10
10
  export type CopyVariantPickerProps = {
11
- /** 예) '한 줄 소개' */
12
11
  label: string;
13
12
  variants: readonly CopyVariant[];
14
13
  selectedId: string | null;
15
14
  onSelect: (id: string) => void;
16
- /** 잠그면 다시 만들어도 이 문구는 바뀌지 않는다 */
17
15
  onToggleLock?: (id: string) => void;
18
- /** 다른 기기에서 먼저 수정했을 때(409) */
19
16
  conflict?: boolean;
20
17
  onReload?: () => void;
21
18
  style?: StyleProp<ViewStyle>;
@@ -66,7 +63,6 @@ const useStyles = makeStyles((t) => ({
66
63
  },
67
64
  }));
68
65
 
69
- /** AI가 만든 문구 후보 중 하나 고르기 */
70
66
  export function CopyVariantPicker({
71
67
  label,
72
68
  variants,