@idyeah/diya 0.0.0 → 1.0.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 (190) hide show
  1. package/CHANGELOG.md +332 -0
  2. package/NOTICE +29 -0
  3. package/README.md +596 -5
  4. package/dist/DiyaProvider.d.ts +79 -0
  5. package/dist/DiyaProvider.js +77 -0
  6. package/dist/Icon.d.ts +10 -0
  7. package/dist/Icon.js +27 -0
  8. package/dist/accordion/Accordion.d.ts +34 -0
  9. package/dist/accordion/Accordion.js +15 -0
  10. package/dist/alert/Alert.d.ts +49 -0
  11. package/dist/alert/Alert.js +11 -0
  12. package/dist/alert/messages.d.ts +9 -0
  13. package/dist/alert/messages.js +2 -0
  14. package/dist/api.json +7277 -0
  15. package/dist/api.schema.json +214 -0
  16. package/dist/application-patterns/Chatbot.d.ts +114 -0
  17. package/dist/application-patterns/Chatbot.js +110 -0
  18. package/dist/application-patterns/SideNavigation.d.ts +74 -0
  19. package/dist/application-patterns/SideNavigation.js +31 -0
  20. package/dist/application-patterns/chatbot-messages.d.ts +20 -0
  21. package/dist/application-patterns/chatbot-messages.js +2 -0
  22. package/dist/application-patterns/side-navigation-messages.d.ts +5 -0
  23. package/dist/application-patterns/side-navigation-messages.js +2 -0
  24. package/dist/avatar/Avatar.d.ts +32 -0
  25. package/dist/avatar/Avatar.js +19 -0
  26. package/dist/avatar/messages.d.ts +7 -0
  27. package/dist/avatar/messages.js +2 -0
  28. package/dist/badge/Badge.d.ts +42 -0
  29. package/dist/badge/Badge.js +16 -0
  30. package/dist/badge/badge-utils.d.ts +6 -0
  31. package/dist/badge/badge-utils.js +24 -0
  32. package/dist/badge/messages.d.ts +4 -0
  33. package/dist/badge/messages.js +2 -0
  34. package/dist/breadcrumbs/Breadcrumbs.d.ts +34 -0
  35. package/dist/breadcrumbs/Breadcrumbs.js +19 -0
  36. package/dist/breadcrumbs/messages.d.ts +5 -0
  37. package/dist/breadcrumbs/messages.js +2 -0
  38. package/dist/button/Button.d.ts +46 -0
  39. package/dist/button/Button.js +44 -0
  40. package/dist/calendar/Calendar.d.ts +55 -0
  41. package/dist/calendar/Calendar.js +61 -0
  42. package/dist/calendar/messages.d.ts +8 -0
  43. package/dist/calendar/messages.js +2 -0
  44. package/dist/calendar/month.d.ts +61 -0
  45. package/dist/calendar/month.js +134 -0
  46. package/dist/card/Card.d.ts +46 -0
  47. package/dist/card/Card.js +8 -0
  48. package/dist/choice/Choice.d.ts +72 -0
  49. package/dist/choice/Choice.js +68 -0
  50. package/dist/choice/messages.d.ts +4 -0
  51. package/dist/choice/messages.js +2 -0
  52. package/dist/code-block/CodeBlock.d.ts +20 -0
  53. package/dist/code-block/CodeBlock.js +49 -0
  54. package/dist/code-block/messages.d.ts +8 -0
  55. package/dist/code-block/messages.js +2 -0
  56. package/dist/combobox/Combobox.d.ts +60 -0
  57. package/dist/combobox/Combobox.js +160 -0
  58. package/dist/combobox/messages.d.ts +9 -0
  59. package/dist/combobox/messages.js +2 -0
  60. package/dist/combobox/useAnchoredPopover.d.ts +5 -0
  61. package/dist/combobox/useAnchoredPopover.js +100 -0
  62. package/dist/data-viz/DataViz.d.ts +140 -0
  63. package/dist/data-viz/DataViz.js +469 -0
  64. package/dist/data-viz/index.d.ts +2 -0
  65. package/dist/data-viz/index.js +1 -0
  66. package/dist/data-viz/messages.d.ts +11 -0
  67. package/dist/data-viz/messages.js +2 -0
  68. package/dist/date-picker/DatePicker.d.ts +57 -0
  69. package/dist/date-picker/DatePicker.js +146 -0
  70. package/dist/date-picker/messages.d.ts +13 -0
  71. package/dist/date-picker/messages.js +2 -0
  72. package/dist/dialog/Dialog.d.ts +84 -0
  73. package/dist/dialog/Dialog.js +107 -0
  74. package/dist/dialog/messages.d.ts +9 -0
  75. package/dist/dialog/messages.js +2 -0
  76. package/dist/fonts/DIYASans-Italic.woff2 +0 -0
  77. package/dist/fonts/DIYASans.woff2 +0 -0
  78. package/dist/fonts/OFL.txt +94 -0
  79. package/dist/index.d.ts +50 -0
  80. package/dist/index.js +46 -0
  81. package/dist/internal/brand.d.ts +33 -0
  82. package/dist/internal/brand.js +57 -0
  83. package/dist/internal/cx.d.ts +2 -0
  84. package/dist/internal/cx.js +4 -0
  85. package/dist/internal/link.d.ts +14 -0
  86. package/dist/internal/link.js +7 -0
  87. package/dist/internal/slot.d.ts +15 -0
  88. package/dist/internal/slot.js +67 -0
  89. package/dist/layout/Inline.d.ts +4 -0
  90. package/dist/layout/Inline.js +7 -0
  91. package/dist/layout/Stack.d.ts +4 -0
  92. package/dist/layout/Stack.js +7 -0
  93. package/dist/layout/layout.d.ts +32 -0
  94. package/dist/layout/layout.js +12 -0
  95. package/dist/link/TextLink.d.ts +23 -0
  96. package/dist/link/TextLink.js +17 -0
  97. package/dist/list/List.d.ts +48 -0
  98. package/dist/list/List.js +17 -0
  99. package/dist/list/messages.d.ts +4 -0
  100. package/dist/list/messages.js +2 -0
  101. package/dist/menu/Menu.d.ts +49 -0
  102. package/dist/menu/Menu.js +54 -0
  103. package/dist/messages-defaults.d.ts +201 -0
  104. package/dist/messages-defaults.js +61 -0
  105. package/dist/messages.d.ts +12 -0
  106. package/dist/messages.js +1 -0
  107. package/dist/metric/Metric.d.ts +42 -0
  108. package/dist/metric/Metric.js +11 -0
  109. package/dist/metric/messages.d.ts +9 -0
  110. package/dist/metric/messages.js +2 -0
  111. package/dist/overlay/FloatingSurface.d.ts +29 -0
  112. package/dist/overlay/FloatingSurface.js +254 -0
  113. package/dist/page-header/PageHeader.d.ts +38 -0
  114. package/dist/page-header/PageHeader.js +10 -0
  115. package/dist/pagination/Pagination.d.ts +44 -0
  116. package/dist/pagination/Pagination.js +26 -0
  117. package/dist/pagination/messages.d.ts +11 -0
  118. package/dist/pagination/messages.js +2 -0
  119. package/dist/popover/Popover.d.ts +23 -0
  120. package/dist/popover/Popover.js +8 -0
  121. package/dist/progress/Progress.d.ts +33 -0
  122. package/dist/progress/Progress.js +14 -0
  123. package/dist/progress/messages.d.ts +4 -0
  124. package/dist/progress/messages.js +2 -0
  125. package/dist/prose/Prose.d.ts +14 -0
  126. package/dist/prose/Prose.js +7 -0
  127. package/dist/rating/Rating.d.ts +32 -0
  128. package/dist/rating/Rating.js +27 -0
  129. package/dist/rating/messages.d.ts +6 -0
  130. package/dist/rating/messages.js +2 -0
  131. package/dist/search/Search.d.ts +11 -0
  132. package/dist/search/Search.js +9 -0
  133. package/dist/select/Select.d.ts +65 -0
  134. package/dist/select/Select.js +19 -0
  135. package/dist/select/messages.d.ts +4 -0
  136. package/dist/select/messages.js +2 -0
  137. package/dist/site-header/SiteHeader.d.ts +88 -0
  138. package/dist/site-header/SiteHeader.js +211 -0
  139. package/dist/site-header/messages.d.ts +8 -0
  140. package/dist/site-header/messages.js +2 -0
  141. package/dist/slider/Slider.d.ts +54 -0
  142. package/dist/slider/Slider.js +89 -0
  143. package/dist/slider/messages.d.ts +5 -0
  144. package/dist/slider/messages.js +2 -0
  145. package/dist/styles.css +3386 -0
  146. package/dist/switch/Switch.d.ts +47 -0
  147. package/dist/switch/Switch.js +18 -0
  148. package/dist/table/Table.d.ts +99 -0
  149. package/dist/table/Table.js +158 -0
  150. package/dist/table/messages.d.ts +23 -0
  151. package/dist/table/messages.js +2 -0
  152. package/dist/tabs/Tabs.d.ts +49 -0
  153. package/dist/tabs/Tabs.js +26 -0
  154. package/dist/tag/Tag.d.ts +37 -0
  155. package/dist/tag/Tag.js +20 -0
  156. package/dist/tag/messages.d.ts +4 -0
  157. package/dist/tag/messages.js +2 -0
  158. package/dist/text-area/TextArea.d.ts +47 -0
  159. package/dist/text-area/TextArea.js +19 -0
  160. package/dist/text-input/TextInput.d.ts +53 -0
  161. package/dist/text-input/TextInput.js +35 -0
  162. package/dist/text-input/messages.d.ts +4 -0
  163. package/dist/text-input/messages.js +3 -0
  164. package/dist/text-input/native-field.d.ts +15 -0
  165. package/dist/text-input/native-field.js +56 -0
  166. package/dist/toast/Toast.d.ts +24 -0
  167. package/dist/toast/Toast.js +79 -0
  168. package/dist/toast/messages.d.ts +4 -0
  169. package/dist/toast/messages.js +2 -0
  170. package/dist/tooltip/Tooltip.d.ts +22 -0
  171. package/dist/tooltip/Tooltip.js +92 -0
  172. package/dist/workflow/ContentState.d.ts +44 -0
  173. package/dist/workflow/ContentState.js +11 -0
  174. package/dist/workflow/Drawer.d.ts +48 -0
  175. package/dist/workflow/Drawer.js +51 -0
  176. package/dist/workflow/FileUpload.d.ts +67 -0
  177. package/dist/workflow/FileUpload.js +47 -0
  178. package/dist/workflow/Form.d.ts +52 -0
  179. package/dist/workflow/Form.js +16 -0
  180. package/dist/workflow/Wizard.d.ts +76 -0
  181. package/dist/workflow/Wizard.js +31 -0
  182. package/dist/workflow/drawer-messages.d.ts +4 -0
  183. package/dist/workflow/drawer-messages.js +2 -0
  184. package/dist/workflow/file-upload-messages.d.ts +11 -0
  185. package/dist/workflow/file-upload-messages.js +2 -0
  186. package/dist/workflow/form-messages.d.ts +5 -0
  187. package/dist/workflow/form-messages.js +2 -0
  188. package/dist/workflow/wizard-messages.d.ts +9 -0
  189. package/dist/workflow/wizard-messages.js +2 -0
  190. package/package.json +82 -7
package/CHANGELOG.md ADDED
@@ -0,0 +1,332 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@idyeah/diya` are documented here. The format is based
4
+ on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
5
+ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [1.0.1] - 2026-11-11
8
+
9
+ ### Fixed
10
+
11
+ - `Progress`: under Reduce Motion, indeterminate progress no longer freezes as
12
+ a 35% bar or a 28% ring, which read as a stuck amount. It shows a full bar or
13
+ ring that fades gently between faint and clear, so it still reads as working.
14
+ Without Reduce Motion nothing changes. The indeterminate bar's width now comes
15
+ from CSS instead of an inline style, and the rule uses no `!important`, so
16
+ your own styles can still restyle it.
17
+ - `Drawer`: the docs no longer say it slides in from the side, which it doesn't
18
+ in 1.0. The description and the `side` prop now say where it sits; `api.json`
19
+ and the type declarations follow.
20
+
21
+ ## [1.0.0] - 2026-11-07
22
+
23
+ First public release, under the MIT License.
24
+
25
+ ### Added
26
+
27
+ - 30 React components and 13 patterns. `Chart` and `DataViz` are exported from
28
+ `@idyeah/diya/charts` and render with the optional `echarts` peer dependency;
29
+ everything else is exported from `@idyeah/diya`.
30
+ - `DiyaProvider` with Light, Dark and Glass appearances, brand color, font,
31
+ locale and built-in text (`messages`, `defaultMessages`).
32
+ - `@idyeah/diya/styles.css`, with public `--diya-*` theme tokens and the DIYA
33
+ Sans font (SIL Open Font License 1.1).
34
+ - `@idyeah/diya/api.json`, a machine-readable map of exports, props and tokens.
35
+ - api.json names the uncontrolled default (`defaultValue`, Switch `defaultChecked`) for every field that has one: Text Input, Text Area, Select, Combobox, Date Picker, Calendar, Choice, Switch, Slider and Search.
36
+ - Support for React 18.3 and React 19, including Next.js App Router: the root
37
+ entry has no `'use client'` directive, so `defaultMessages` and types can be
38
+ imported in Server Components, and each interactive component carries its own
39
+ directive.
40
+ - `Prose` sets your own long-form HTML (articles, docs pages, changelogs and
41
+ legal pages) in DIYA's type and rhythm, at three sizes, and leaves DIYA
42
+ components inside it as they are. `CodeBlock` shows code with a Copy button
43
+ that announces its result, and long lines scroll in a region the keyboard
44
+ can reach.
45
+ - `Stack` and `Inline` layout primitives, with `gap` on a public spacing scale
46
+ (`--diya-space-1` to `--diya-space-8`), `align`, `justify`, `wrap` and `as`.
47
+ - Every component takes `className`, `style` and its root element's other
48
+ attributes, and forwards its ref: fields to their native control, Menu,
49
+ Popover and Tooltip to the trigger, everything else to the root.
50
+ - `DiyaProvider`:
51
+ - `theme="system"`, now the default, follows the OS Light or Dark setting in
52
+ CSS, with no flash and nothing to run on the server;
53
+ - it paints its own background and text color; `surface={false}` opts out;
54
+ - `brandColor` is one brand color, or `{ light, dark }`, that sets the
55
+ accent tokens: the main Button, selected pill Tabs, an on Switch, Slider
56
+ and Progress; a colored brand also leads chart series 1, and a neutral one
57
+ leaves the charts to DIYA's Vivid palette. Text on it is white whenever that reaches
58
+ 4.5:1, otherwise near-black;
59
+ - `linkComponent` renders every `href` through your router's link, such as
60
+ Next.js `Link`;
61
+ - `useDiyaAppearance()` reports the theme in effect, Glass, the font and the
62
+ brand's accent colors.
63
+ - Links: Button takes `href` and `asChild`, TextLink takes `asChild`, and Side
64
+ Navigation, Breadcrumbs, Site Header and Menu items with an `href` are real
65
+ links (`aria-current="page"` on the current one).
66
+ - Button `variant="destructive"`, and Dialog `confirmVariant="destructive"`.
67
+ - A loading Button keeps focus: it is `aria-disabled="true"` and `aria-busy`
68
+ rather than natively disabled, and ignores clicks, Enter and Space, so a
69
+ focused Save or Send stays focused while it works and still can't submit
70
+ twice. Form's Submit, Dialog's confirm and Wizard's Continue follow.
71
+ `disabled` is still the native attribute.
72
+ - Menu and Popover take your own `trigger` element and a controlled `open`
73
+ with `onOpenChange`; Popover content can be a plain node. Dialog takes a
74
+ `trigger`. Tooltip wraps your own trigger, such as an icon-only Button.
75
+ - Forms: fields forward refs to their native controls, work uncontrolled
76
+ (`defaultValue`, `defaultChecked`) and reset with their form, and pass native
77
+ `name`, `onChange` and `onBlur` through, so react-hook-form's `register()`
78
+ works without a `Controller`. Combobox and DatePicker take `name`.
79
+ - A Choice option's `label` takes a node, not only a string: a consent box
80
+ with real Terms and Privacy Policy links (a link opens without toggling the
81
+ box), or a color swatch beside a color's name.
82
+ - Slider takes `formatValue`, such as `(value) => '$' + value`: it formats the
83
+ values and marks it shows and sets each handle's `aria-valuetext`, both
84
+ handles in range mode.
85
+ - Slider takes `min`, `max` and `step`. DatePicker takes `min` and `max`, keeps
86
+ one Tab stop in its calendar (arrows, Home/End and PageUp/PageDown move), and
87
+ starts weeks on the locale's first day.
88
+ - `Calendar`, the month grid DatePicker opens, kept on the page: for screens
89
+ like booking a time or a day's agenda. It shares DatePicker's code, keyboard,
90
+ `value` and `range` shapes, `min` and `max`, and adds a controlled `month`
91
+ (`YYYY-MM`) with `onMonthChange`. Calendar and DatePicker take
92
+ `isDateUnavailable` to mark days that can't be chosen, such as days with no
93
+ open slots. Both follow the ARIA date grid pattern: a grid named by its
94
+ month, weekday column headers, gridcells with `aria-selected` on chosen days
95
+ and `aria-current="date"` on today. Each day's name includes its weekday
96
+ ("Thursday, November 12, 2026"), and an unavailable day says so in words,
97
+ through the `unavailableDay` message.
98
+ - `headingLevel` on every pattern that renders a heading; Form's `title` is
99
+ optional.
100
+ - Pagination fits at 320 to 390px.
101
+ - DIYA's appearance: Dark sits on a near-black ground (`#111113`) with surfaces
102
+ lifted only slightly; Light is white all the way down, with hairlines,
103
+ spacing and type carrying the hierarchy. Status colors come from the Vivid
104
+ family, each label at 4.5:1 or more on its tint. In-page surfaces lift with
105
+ a soft shadow and a faint edge, and their titles are a quiet 15px.
106
+ - Glass is see-through frosted glass on every surface. Cards, chart cards,
107
+ tables (clear rows on the card's glass) and inline alerts are the clearest
108
+ pane, so the backdrop's light and shade pass visibly behind them; side
109
+ navigation, headers, controls, menus, popovers, dialogs, drawers and toasts
110
+ are denser, so text on them always reads. The material is neutral: its blur
111
+ lifts saturation by 1.15 at most, so a backdrop arrives as soft light, never
112
+ as a color wash. Each pane has a top-lit inner rim, a faint sheen across its
113
+ top and a soft shadow, deeper for floating layers. To hold 4.5:1 over what
114
+ the glass lets through, Light Glass's muted text is a step deeper, status
115
+ tags and Metric changes keep a solid base under their tint, and pagination
116
+ labels that sit on the backdrop get a soft frosted lift. Dialogs and drawers
117
+ sit over a dimming layer. `prefers-reduced-transparency` and
118
+ `prefers-contrast: more` get solid surfaces. A pill Tabs track is a capsule
119
+ like its thumb.
120
+ - `--diya-color-scrim` is set in Light and Dark (`#00000088`), not only under
121
+ Glass, so an overlay or shadow built on it works everywhere. Dialog and
122
+ Drawer share it, so a Drawer dims the page as much as a Dialog.
123
+ - Button is a pill by default; `shape="rounded"` keeps the control corner.
124
+ Pattern actions, Menu and Popover triggers and Table filters follow.
125
+ - `--diya-radius-surface`, the one corner Card, chart cards, Page Header, Form
126
+ and Table share.
127
+ - `PageHeader` takes `surface={false}` to sit straight on the page.
128
+ - Figures are tabular: Metric, Table numbers, chart data and Progress line up
129
+ digit for digit, in DIYA Sans's own 0 and 1. A positive or negative
130
+ `Metric` change shows as a tinted chip.
131
+ - `Rating`, read-only stars for products, places and reviews. The stars fill
132
+ to the nearest half of `value` (out of `max`, 5 by default); `count` adds
133
+ the number of reviews and `showValue` the rating as a number. Screen readers
134
+ hear one phrase, such as "Rated 4.3 out of 5, 128 reviews".
135
+ - `DataViz`'s `formatValue` labels the value axis too, and grid lines run
136
+ along the value axis only.
137
+ - A `List` inside a `Card` or `Drawer` lines up with its title.
138
+ - `Form`, `Card`, `Drawer`, `Dialog`, `Wizard`, `Accordion`, `Table` and
139
+ `Chatbot` style their own parts and your plain elements, never a DIYA
140
+ component placed inside them: an `Alert` in a sign-in `Form` keeps its title
141
+ color and spacing, a `Card` or `Form` in a `Drawer` or `Dialog` keeps its own
142
+ header and footer, and a `Switch` in a `Table` cell stays a switch.
143
+ - `List` items take `current`, for the open item (`aria-current="true"` and a
144
+ selected background), and `unread`: a heavier label, a dot at the row's end,
145
+ and "unread" after the label for screen readers (`messages.list.unread`).
146
+ - Side Navigation items take `count`, a quiet number after the label. Above 99
147
+ it shows `99+`; collapsed, a dot on the icon stands in for it. The item's
148
+ accessible name keeps the real count, "Inbox, 12"
149
+ (`messages.sideNavigation.count`).
150
+ - Side Navigation takes `footer`, for an account or workspace Menu pinned to
151
+ the bottom of a full-height navigation, and `collapsedFooter` for the rail
152
+ (it defaults to `footer`), following `brand` and `collapsedBrand`. A Menu,
153
+ Avatar or Button in either slot keeps its own look.
154
+ - A `layout="full-page"` Chatbot fills its container's height: the header and
155
+ composer stay put and the thread scrolls between them, following the latest
156
+ message. A height set on any Chatbot is filled the same way; without one,
157
+ the thread keeps its 280px (380px full-page).
158
+ - Chatbot `showHeader={false}` hides its header for a screen that has its own
159
+ heading; `title` still names the chat region and its message log.
160
+ - A streaming Chatbot reply replaces "Preparing a response…": the line shows
161
+ only until the reply's first words arrive. The reply gets its Copy button
162
+ once it is complete or stopped.
163
+ - A person's Chatbot message is as wide as its text, up to 90% of the thread,
164
+ in every layout.
165
+ - A tall Chatbot `welcome` stays at its top on a short screen; the thread
166
+ follows the conversation from the first message. `diya-chat-welcome-title`
167
+ styles the welcome's heading at any level, as a plain `h3` is styled.
168
+ - `npm create diya@latest` (the `create-diya` package, released with this one
169
+ on the same version) starts a Next.js or Vite app with the provider, styles
170
+ and agent notes in place, from Minimal or from Oriel, a four-screen
171
+ invoicing app.
172
+ - [Oriel](https://oriel.diya13.ai), a demo app made only from DIYA, in
173
+ `examples/oriel`.
174
+ - `bench/`: the bundle-size measurement, rerunnable with
175
+ `node bench/measure.mjs`. One Button with `DiyaProvider` adds 2.3 KB of
176
+ gzipped JavaScript to a Vite build.
177
+ - Charts use DIYA's Vivid palette (bright blue, orange, pink, green, violet,
178
+ teal, indigo, red) with a fine gradient: bars soften toward their base,
179
+ donut segments catch a highlight, and one or two lines glow into the plot.
180
+ Legend dots stay solid, and every chart keeps its data table.
181
+
182
+ ### Renamed since the preview
183
+
184
+ The 0.1.0 preview builds shipped as <code>&#64;diya/ui</code>. The
185
+ package is now `@idyeah/diya`, and the names below changed before 1.0. There
186
+ are no aliases for the old names; TypeScript reports each one.
187
+
188
+ **Values and callbacks**
189
+
190
+ - One change pattern, `value` with `onValueChange`:
191
+ - `DatePicker`: `onChange` → `onValueChange`.
192
+ - `Combobox`: `onChange` → `onValueChange`.
193
+ - `SiteHeader`: `onNavigate` → `onValueChange`, paired with its `value`.
194
+ - `Select` gains `onValueChange(value)`; the native `onChange(event)` still
195
+ works.
196
+ - `Choice`: `mode: 'single' | 'multiple'` → `multiple`. Single gives
197
+ `value: string`; `multiple` gives `value: string[]`. `selectAll` is
198
+ available only with `multiple`.
199
+ - `Combobox`: single gives `value: string` (`''` for none); `multiple` gives
200
+ `value: string[]`.
201
+ - `Slider`: single gives `value: number`; `range` gives
202
+ `value: [number, number]`.
203
+ - `DatePicker`: single gives an ISO date string (`''` for none); `range` gives
204
+ `value: DateRange` (`{ start, end }`). `label` is now required.
205
+
206
+ **Props**
207
+
208
+ | Component | Before | 1.0 |
209
+ | --- | --- | --- |
210
+ | TextInput, TextArea, Select, Search | `fieldSize` | `size` |
211
+ | Form, Wizard | `pending` | `loading` |
212
+ | Chatbot | `busy` | `loading` |
213
+ | Chatbot | `type` | `layout` (`'embedded' \| 'floating' \| 'full-page'`) |
214
+ | Chatbot | `timestamps` | `showTimestamps` |
215
+ | Toast | `onClose` | `onDismiss` |
216
+ | Toast | `dismissible` | `showClose` |
217
+ | Card, Dialog | `divider` | `divided` |
218
+ | Card | `menu` | `actions` |
219
+ | Card | `tag` | `tags` |
220
+ | Button | `shape: 'rectangle'` | `shape: 'rounded'`; the default is now `'pill'` |
221
+ | ContentState | `role: 'status' \| 'alert'` | `urgent` (`true` announces it as an alert) |
222
+ | Badge | `type` | `variant` (`'count' \| 'dot'`) |
223
+ | Badge | `maximum` | `max` |
224
+ | Badge, Tag | `color` | `tone` |
225
+ | Slider | `labels` | `showValues` |
226
+ | Slider | `marks` | `showMarks` |
227
+ | Progress | `percentage` | `showValue` |
228
+ | Progress | `type` | `variant` (`'linear' \| 'circular'`) |
229
+ | Wizard | `summary` | `showStepCount` |
230
+ | Breadcrumbs | `homeIcon` | `showHomeIcon` |
231
+ | Tabs | `variant: 'pills'` | `variant: 'pill'` |
232
+ | Switch | `description` | `helperText` (Switch also gains `error`) |
233
+ | SideNavigationItem | `id` | `value` (`SideNavigationGroup` keeps `id`) |
234
+ | Table | `selection` | `selectable` |
235
+ | Table | `filter` (`{ label, values, value }`) | `filterOptions` (`TableFilter`: `{ key, label, options, getValue }`) |
236
+
237
+ Option values are lowercase: Wizard `orientation` (`'horizontal' | 'vertical'`),
238
+ Drawer `side` (`'left' | 'right'`), and Chart and DataViz `type` and
239
+ `variant`.
240
+
241
+ **Types**
242
+
243
+ | Before | 1.0 |
244
+ | --- | --- |
245
+ | `ComboOption` | `ComboboxOption` |
246
+ | `SiteNavigationItem` | `SiteHeaderItem` |
247
+ | `DateValue` | `DateRange` |
248
+ | `BadgeColor` | `Tone`, shared by Badge, Tag, Alert and Toast (`AlertTone` is `Tone` without `'neutral'`) |
249
+
250
+ **Removed**
251
+
252
+ - Dialog: `label` (the built-in trigger) and `inline`. Pass your own
253
+ `trigger`, or control `open`.
254
+ - `brandColor` on Tag, Badge, Alert and Switch. Set it once on `DiyaProvider`.
255
+ - Table: `renderExpanded`, `onArchive`, `archiveLabel`, `onInspect` and
256
+ `inspectLabel`. Use `bulkActions` for actions on selected rows (each also
257
+ appears in a row's own menu) and `onRowOpen` (with `openLabel`) to open a
258
+ row's details.
259
+ - Table: the `filters` and `actions` switches. The filter menus show when
260
+ `filterOptions` has entries, and the row menu shows when `rowActions`,
261
+ `bulkActions` or `onRowOpen` is given.
262
+ - Choice: `descriptions`. An option's `description` shows whenever it has one.
263
+
264
+ **Defaults**
265
+
266
+ - `DiyaProvider`: `theme` is `'system'` and the provider paints its surface.
267
+ DIYA's own accent is a neutral ink: `#262626` with `#FAFAFA` text in Light,
268
+ `#E8E8E8` with `#1C1C1C` text in Dark. The grays keep a slight cool cast in
269
+ both themes.
270
+ - Switch is a native checkbox with `role="switch"`; its ref is the input.
271
+ - Search is `rounded` by default, like the other fields.
272
+ - `--diya-text-caption` is 14px (was 13px), so small print reads more easily.
273
+ - Table: row checkboxes are opt-in. They show when you pass `bulkActions`,
274
+ `onSelectionChange` or `selectedIds`, or set `selectable`. The search field
275
+ shows when `searchText` is given. Tables show 10 rows a page
276
+ (`defaultPageSize`, `pageSizeOptions`).
277
+ - Progress with no `value` is indeterminate.
278
+ - FileUpload: `multiple` defaults to `false`.
279
+ - Slider shows its label; `hideLabel` hides it visually.
280
+ - TextInput, TextArea, Select and Search put `className` and `style` on the
281
+ outer field wrapper; every other attribute goes on the control.
282
+ - A nested `DiyaProvider` inherits `locale` and `messages` from the provider
283
+ around it and overrides only what it sets.
284
+
285
+ **Tokens**
286
+
287
+ The `--library-*` custom properties are gone. The public ones were renamed:
288
+
289
+ | Before | 1.0 |
290
+ | --- | --- |
291
+ | `--library-text`, `--library-muted` | `--diya-color-text`, `--diya-color-muted` |
292
+ | `--library-surface`, `--library-recessed`, `--library-raised` | `--diya-color-surface`, `--diya-color-recessed`, `--diya-color-raised` |
293
+ | `--library-line` | `--diya-color-line` |
294
+ | `--library-active`, `--library-active-text` | `--diya-color-accent`, `--diya-color-accent-text` |
295
+ | `--library-hover`, `--library-selected` | `--diya-color-hover`, `--diya-color-selected` |
296
+ | `--library-destructive`, `--library-error` | `--diya-color-destructive`, `--diya-color-error` |
297
+ | `--library-glass` | `--diya-color-glass` |
298
+ | `--library-depth` | `--diya-shadow-raised` |
299
+ | `--diya-scrim` | `--diya-color-scrim` |
300
+ | `--library-tag-{status}-tone`, `--library-tag-{status}-surface` | `--diya-color-{status}`, `--diya-color-{status}-surface` |
301
+ | `--library-badge-{status}-fill`, `--library-badge-{status}-ink` | `--diya-color-{status}-fill`, `--diya-color-{status}-on-fill` |
302
+
303
+ New public tokens: `--diya-color-accent-soft` and `--diya-color-accent-ink`
304
+ (set by `brandColor`), `--diya-radius-control`, the corner every control
305
+ shares, and the spacing scale `--diya-space-1` to `--diya-space-8`.
306
+ `--diya-brand` is gone; use `brandColor`.
307
+
308
+ `{status}` is `success`, `warning`, `error` or `info`; the neutral badge pair
309
+ is `--diya-color-neutral-fill` and `--diya-color-neutral-on-fill`. Every other
310
+ `--library-*` property is now `--diya-internal-*`, which is private and may
311
+ change in any release. The README lists the public tokens.
312
+
313
+ **Styles**
314
+
315
+ - `styles.css` is wrapped in the `diya` cascade layer, so your own CSS and
316
+ Tailwind's utilities win over DIYA's rules. DIYA's base styles reach only
317
+ its own elements, never your markup elsewhere in the provider.
318
+ - Every class DIYA renders starts with `diya-`; for example,
319
+ `.app-pattern-surface` is `.diya-app-pattern-surface`, `.text-input-sr-only`
320
+ is `.diya-sr-only` and `.atom-description` is `.diya-switch-description`.
321
+ Class names aren't covered by semver.
322
+
323
+ **api.json**
324
+
325
+ - Item ids are their first export's name in kebab-case: `link` is
326
+ `text-link`, and `empty-state` is `content-state`. `stack` and `inline` are
327
+ new, with `kind: "layout"`.
328
+ - Chatbot and Data Viz (`DataViz`, `Chart`) are `experimental`: outside semver
329
+ until their API settles.
330
+
331
+ [1.0.1]: https://github.com/idyeah-studio/diya/releases/tag/v1.0.1
332
+ [1.0.0]: https://github.com/idyeah-studio/diya/releases/tag/v1.0.0
package/NOTICE ADDED
@@ -0,0 +1,29 @@
1
+ DIYA
2
+ Copyright 2026 IDYeah Studio LLC
3
+
4
+ The DIYA source code is licensed under the MIT License (see LICENSE).
5
+
6
+ Fonts
7
+ -----
8
+ DIYA Sans (src/fonts in the repository, dist/fonts in the npm package) is a
9
+ modified version of Mona Sans, licensed under the SIL Open Font License,
10
+ Version 1.1. The full licence text ships beside the font files as OFL.txt.
11
+ The MIT License does not apply to the font files.
12
+
13
+ Designer: Deni Anggara (Mona Sans); modifications IDYeah Studio
14
+ Original: Copyright 2022 The Mona Sans Project Authors
15
+ (https://github.com/github/mona-sans), with Reserved Font Name "Mona"
16
+
17
+ As the Open Font License requires, the modified font does not use the Reserved
18
+ Font Name "Mona". It is distributed as DIYA Sans and must not be sold on its own.
19
+
20
+ Third-party software
21
+ --------------------
22
+ React and React DOM are MIT-licensed peer dependencies and are not bundled.
23
+
24
+ Apache ECharts is an optional peer dependency, licensed under the Apache
25
+ License 2.0. It is used only by the @idyeah/diya/charts entry point and is not
26
+ bundled: no ECharts code is included in this repository or the npm package.
27
+
28
+ Development tools (TypeScript, Vite, Vitest, Next.js and testing helpers) keep
29
+ their own licences and are not distributed with the package.