@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.
- package/CHANGELOG.md +332 -0
- package/NOTICE +29 -0
- package/README.md +596 -5
- package/dist/DiyaProvider.d.ts +79 -0
- package/dist/DiyaProvider.js +77 -0
- package/dist/Icon.d.ts +10 -0
- package/dist/Icon.js +27 -0
- package/dist/accordion/Accordion.d.ts +34 -0
- package/dist/accordion/Accordion.js +15 -0
- package/dist/alert/Alert.d.ts +49 -0
- package/dist/alert/Alert.js +11 -0
- package/dist/alert/messages.d.ts +9 -0
- package/dist/alert/messages.js +2 -0
- package/dist/api.json +7277 -0
- package/dist/api.schema.json +214 -0
- package/dist/application-patterns/Chatbot.d.ts +114 -0
- package/dist/application-patterns/Chatbot.js +110 -0
- package/dist/application-patterns/SideNavigation.d.ts +74 -0
- package/dist/application-patterns/SideNavigation.js +31 -0
- package/dist/application-patterns/chatbot-messages.d.ts +20 -0
- package/dist/application-patterns/chatbot-messages.js +2 -0
- package/dist/application-patterns/side-navigation-messages.d.ts +5 -0
- package/dist/application-patterns/side-navigation-messages.js +2 -0
- package/dist/avatar/Avatar.d.ts +32 -0
- package/dist/avatar/Avatar.js +19 -0
- package/dist/avatar/messages.d.ts +7 -0
- package/dist/avatar/messages.js +2 -0
- package/dist/badge/Badge.d.ts +42 -0
- package/dist/badge/Badge.js +16 -0
- package/dist/badge/badge-utils.d.ts +6 -0
- package/dist/badge/badge-utils.js +24 -0
- package/dist/badge/messages.d.ts +4 -0
- package/dist/badge/messages.js +2 -0
- package/dist/breadcrumbs/Breadcrumbs.d.ts +34 -0
- package/dist/breadcrumbs/Breadcrumbs.js +19 -0
- package/dist/breadcrumbs/messages.d.ts +5 -0
- package/dist/breadcrumbs/messages.js +2 -0
- package/dist/button/Button.d.ts +46 -0
- package/dist/button/Button.js +44 -0
- package/dist/calendar/Calendar.d.ts +55 -0
- package/dist/calendar/Calendar.js +61 -0
- package/dist/calendar/messages.d.ts +8 -0
- package/dist/calendar/messages.js +2 -0
- package/dist/calendar/month.d.ts +61 -0
- package/dist/calendar/month.js +134 -0
- package/dist/card/Card.d.ts +46 -0
- package/dist/card/Card.js +8 -0
- package/dist/choice/Choice.d.ts +72 -0
- package/dist/choice/Choice.js +68 -0
- package/dist/choice/messages.d.ts +4 -0
- package/dist/choice/messages.js +2 -0
- package/dist/code-block/CodeBlock.d.ts +20 -0
- package/dist/code-block/CodeBlock.js +49 -0
- package/dist/code-block/messages.d.ts +8 -0
- package/dist/code-block/messages.js +2 -0
- package/dist/combobox/Combobox.d.ts +60 -0
- package/dist/combobox/Combobox.js +160 -0
- package/dist/combobox/messages.d.ts +9 -0
- package/dist/combobox/messages.js +2 -0
- package/dist/combobox/useAnchoredPopover.d.ts +5 -0
- package/dist/combobox/useAnchoredPopover.js +100 -0
- package/dist/data-viz/DataViz.d.ts +140 -0
- package/dist/data-viz/DataViz.js +469 -0
- package/dist/data-viz/index.d.ts +2 -0
- package/dist/data-viz/index.js +1 -0
- package/dist/data-viz/messages.d.ts +11 -0
- package/dist/data-viz/messages.js +2 -0
- package/dist/date-picker/DatePicker.d.ts +57 -0
- package/dist/date-picker/DatePicker.js +146 -0
- package/dist/date-picker/messages.d.ts +13 -0
- package/dist/date-picker/messages.js +2 -0
- package/dist/dialog/Dialog.d.ts +84 -0
- package/dist/dialog/Dialog.js +107 -0
- package/dist/dialog/messages.d.ts +9 -0
- package/dist/dialog/messages.js +2 -0
- package/dist/fonts/DIYASans-Italic.woff2 +0 -0
- package/dist/fonts/DIYASans.woff2 +0 -0
- package/dist/fonts/OFL.txt +94 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +46 -0
- package/dist/internal/brand.d.ts +33 -0
- package/dist/internal/brand.js +57 -0
- package/dist/internal/cx.d.ts +2 -0
- package/dist/internal/cx.js +4 -0
- package/dist/internal/link.d.ts +14 -0
- package/dist/internal/link.js +7 -0
- package/dist/internal/slot.d.ts +15 -0
- package/dist/internal/slot.js +67 -0
- package/dist/layout/Inline.d.ts +4 -0
- package/dist/layout/Inline.js +7 -0
- package/dist/layout/Stack.d.ts +4 -0
- package/dist/layout/Stack.js +7 -0
- package/dist/layout/layout.d.ts +32 -0
- package/dist/layout/layout.js +12 -0
- package/dist/link/TextLink.d.ts +23 -0
- package/dist/link/TextLink.js +17 -0
- package/dist/list/List.d.ts +48 -0
- package/dist/list/List.js +17 -0
- package/dist/list/messages.d.ts +4 -0
- package/dist/list/messages.js +2 -0
- package/dist/menu/Menu.d.ts +49 -0
- package/dist/menu/Menu.js +54 -0
- package/dist/messages-defaults.d.ts +201 -0
- package/dist/messages-defaults.js +61 -0
- package/dist/messages.d.ts +12 -0
- package/dist/messages.js +1 -0
- package/dist/metric/Metric.d.ts +42 -0
- package/dist/metric/Metric.js +11 -0
- package/dist/metric/messages.d.ts +9 -0
- package/dist/metric/messages.js +2 -0
- package/dist/overlay/FloatingSurface.d.ts +29 -0
- package/dist/overlay/FloatingSurface.js +254 -0
- package/dist/page-header/PageHeader.d.ts +38 -0
- package/dist/page-header/PageHeader.js +10 -0
- package/dist/pagination/Pagination.d.ts +44 -0
- package/dist/pagination/Pagination.js +26 -0
- package/dist/pagination/messages.d.ts +11 -0
- package/dist/pagination/messages.js +2 -0
- package/dist/popover/Popover.d.ts +23 -0
- package/dist/popover/Popover.js +8 -0
- package/dist/progress/Progress.d.ts +33 -0
- package/dist/progress/Progress.js +14 -0
- package/dist/progress/messages.d.ts +4 -0
- package/dist/progress/messages.js +2 -0
- package/dist/prose/Prose.d.ts +14 -0
- package/dist/prose/Prose.js +7 -0
- package/dist/rating/Rating.d.ts +32 -0
- package/dist/rating/Rating.js +27 -0
- package/dist/rating/messages.d.ts +6 -0
- package/dist/rating/messages.js +2 -0
- package/dist/search/Search.d.ts +11 -0
- package/dist/search/Search.js +9 -0
- package/dist/select/Select.d.ts +65 -0
- package/dist/select/Select.js +19 -0
- package/dist/select/messages.d.ts +4 -0
- package/dist/select/messages.js +2 -0
- package/dist/site-header/SiteHeader.d.ts +88 -0
- package/dist/site-header/SiteHeader.js +211 -0
- package/dist/site-header/messages.d.ts +8 -0
- package/dist/site-header/messages.js +2 -0
- package/dist/slider/Slider.d.ts +54 -0
- package/dist/slider/Slider.js +89 -0
- package/dist/slider/messages.d.ts +5 -0
- package/dist/slider/messages.js +2 -0
- package/dist/styles.css +3386 -0
- package/dist/switch/Switch.d.ts +47 -0
- package/dist/switch/Switch.js +18 -0
- package/dist/table/Table.d.ts +99 -0
- package/dist/table/Table.js +158 -0
- package/dist/table/messages.d.ts +23 -0
- package/dist/table/messages.js +2 -0
- package/dist/tabs/Tabs.d.ts +49 -0
- package/dist/tabs/Tabs.js +26 -0
- package/dist/tag/Tag.d.ts +37 -0
- package/dist/tag/Tag.js +20 -0
- package/dist/tag/messages.d.ts +4 -0
- package/dist/tag/messages.js +2 -0
- package/dist/text-area/TextArea.d.ts +47 -0
- package/dist/text-area/TextArea.js +19 -0
- package/dist/text-input/TextInput.d.ts +53 -0
- package/dist/text-input/TextInput.js +35 -0
- package/dist/text-input/messages.d.ts +4 -0
- package/dist/text-input/messages.js +3 -0
- package/dist/text-input/native-field.d.ts +15 -0
- package/dist/text-input/native-field.js +56 -0
- package/dist/toast/Toast.d.ts +24 -0
- package/dist/toast/Toast.js +79 -0
- package/dist/toast/messages.d.ts +4 -0
- package/dist/toast/messages.js +2 -0
- package/dist/tooltip/Tooltip.d.ts +22 -0
- package/dist/tooltip/Tooltip.js +92 -0
- package/dist/workflow/ContentState.d.ts +44 -0
- package/dist/workflow/ContentState.js +11 -0
- package/dist/workflow/Drawer.d.ts +48 -0
- package/dist/workflow/Drawer.js +51 -0
- package/dist/workflow/FileUpload.d.ts +67 -0
- package/dist/workflow/FileUpload.js +47 -0
- package/dist/workflow/Form.d.ts +52 -0
- package/dist/workflow/Form.js +16 -0
- package/dist/workflow/Wizard.d.ts +76 -0
- package/dist/workflow/Wizard.js +31 -0
- package/dist/workflow/drawer-messages.d.ts +4 -0
- package/dist/workflow/drawer-messages.js +2 -0
- package/dist/workflow/file-upload-messages.d.ts +11 -0
- package/dist/workflow/file-upload-messages.js +2 -0
- package/dist/workflow/form-messages.d.ts +5 -0
- package/dist/workflow/form-messages.js +2 -0
- package/dist/workflow/wizard-messages.d.ts +9 -0
- package/dist/workflow/wizard-messages.js +2 -0
- 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>@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.
|