@cahyo-dimas/freeday 1.54.0 → 2.1.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.
- package/CHANGELOG.md +713 -545
- package/COMPONENTS.md +417 -139
- package/README.id.md +46 -45
- package/README.md +46 -43
- package/USAGE.md +34 -34
- package/adapters/blazor/FdyAppShell.razor +2 -2
- package/adapters/blazor/FdyAppShell.razor.cs +6 -6
- package/adapters/blazor/FdyCfl.razor.cs +1 -1
- package/adapters/blazor/FdyChart.razor +1 -1
- package/adapters/blazor/FdyChart.razor.cs +3 -3
- package/adapters/blazor/FdyChartSeries.cs +1 -1
- package/adapters/blazor/FdyCombo.razor.cs +2 -2
- package/adapters/blazor/FdyModal.razor +1 -1
- package/adapters/blazor/FdyTable.razor.cs +7 -7
- package/adapters/blazor/FdyTableFilter.razor +1 -1
- package/adapters/blazor/FdyTableFooter.razor +1 -1
- package/adapters/blazor/FdyTableFooter.razor.cs +4 -4
- package/adapters/blazor/Freeday.Blazor.csproj +1 -1
- package/adapters/blazor/FreedayComponentBase.cs +1 -1
- package/adapters/blazor/TableModel.cs +3 -3
- package/adapters/blazor/TableTypes.cs +3 -3
- package/adapters/blazor/freeday-blazor.js +5 -5
- package/adapters/core/app-shell.d.ts +1 -1
- package/adapters/core/app-shell.js +6 -6
- package/adapters/core/cfl-value.d.ts +11 -0
- package/adapters/core/cfl-value.js +31 -0
- package/adapters/core/table-model.d.ts +2 -2
- package/adapters/core/table-model.js +8 -8
- package/adapters/react/components/FdyAppShell.tsx +5 -5
- package/adapters/react/components/FdyAutocomplete.tsx +1 -1
- package/adapters/react/components/FdyCascade.tsx +1 -1
- package/adapters/react/components/FdyCfl.tsx +11 -11
- package/adapters/react/components/FdyDateRange.tsx +2 -2
- package/adapters/react/components/FdyDatepicker.tsx +5 -5
- package/adapters/react/components/FdyDrawer.tsx +1 -1
- package/adapters/react/components/FdyModal.tsx +2 -2
- package/adapters/react/components/FdyTable.tsx +7 -7
- package/adapters/react/components/FdyTableFilter.tsx +1 -1
- package/adapters/react/components/FdyTableFooter.tsx +5 -5
- package/adapters/react/index.d.ts +4 -1
- package/adapters/react/index.js +1 -0
- package/adapters/react/useFreeday.js +3 -3
- package/adapters/vue/components/FdyAppShell.vue +5 -5
- package/adapters/vue/components/FdyAutocomplete.vue +1 -1
- package/adapters/vue/components/FdyCascade.vue +1 -1
- package/adapters/vue/components/FdyCfl.vue +8 -8
- package/adapters/vue/components/FdyChart.vue +2 -2
- package/adapters/vue/components/FdyCombo.vue +1 -1
- package/adapters/vue/components/FdyDateRange.vue +2 -2
- package/adapters/vue/components/FdyDatepicker.vue +5 -5
- package/adapters/vue/components/FdyDrawer.vue +3 -3
- package/adapters/vue/components/FdyModal.vue +3 -3
- package/adapters/vue/components/FdyTable.vue +7 -7
- package/adapters/vue/components/FdyTableFilter.vue +1 -1
- package/adapters/vue/components/FdyTableFooter.vue +5 -5
- package/adapters/vue/index.d.ts +5 -2
- package/adapters/vue/index.js +1 -0
- package/adapters/vue/useFreeday.js +3 -3
- package/dist/asset.d.ts +3 -3
- package/dist/freeday-app-shell.js +9 -9
- package/dist/freeday-autocomplete.js +2 -2
- package/dist/freeday-breakpoint.js +1 -1
- package/dist/freeday-carousel.js +8 -7
- package/dist/freeday-cascade.js +10 -9
- package/dist/freeday-cfl.js +12 -11
- package/dist/freeday-chart.js +11 -11
- package/dist/freeday-chip.js +3 -3
- package/dist/freeday-datepicker.js +11 -7
- package/dist/freeday-datetime.js +5 -5
- package/dist/freeday-drawer.js +1 -1
- package/dist/freeday-form.js +17 -16
- package/dist/freeday-mask.js +9 -8
- package/dist/freeday-menu.js +1 -1
- package/dist/freeday-number.js +3 -3
- package/dist/freeday-popover.js +3 -3
- package/dist/freeday-rating.js +2 -2
- package/dist/freeday-select.js +5 -5
- package/dist/freeday-slider.js +2 -2
- package/dist/freeday-stepper.js +10 -9
- package/dist/freeday-table.js +18 -17
- package/dist/freeday-tabs.js +1 -1
- package/dist/freeday-timepicker.js +2 -2
- package/dist/freeday-toast.js +11 -10
- package/dist/freeday-tree.js +3 -3
- package/dist/freeday-upload.js +28 -27
- package/dist/freeday.bundle.css +176 -176
- package/dist/freeday.css +170 -170
- package/dist/freeday.d.ts +2 -2
- package/dist/freeday.js +189 -176
- package/dist/freeday.tokens.css +5 -5
- package/docs/agent-onboarding.md +49 -46
- package/docs/getting-started.md +49 -40
- package/docs/integrations.md +18 -18
- package/docs/reference-screen.html +14 -14
- package/package.json +4 -3
- package/src/base.css +6 -6
- package/src/components/accordion.css +4 -4
- package/src/components/alert.css +1 -1
- package/src/components/app-shell.css +10 -10
- package/src/components/appbar.css +3 -3
- package/src/components/autocomplete.css +1 -1
- package/src/components/avatar.css +3 -3
- package/src/components/badge.css +5 -5
- package/src/components/breadcrumb.css +1 -1
- package/src/components/breakpoints.css +4 -4
- package/src/components/button.css +13 -13
- package/src/components/card.css +8 -8
- package/src/components/carousel.css +2 -2
- package/src/components/cascade.css +2 -2
- package/src/components/cfl.css +4 -4
- package/src/components/chart.css +3 -3
- package/src/components/chip.css +2 -2
- package/src/components/combo.css +3 -3
- package/src/components/composition.css +7 -7
- package/src/components/datepicker.css +6 -6
- package/src/components/datetimepicker.css +1 -1
- package/src/components/description-list.css +1 -1
- package/src/components/divider.css +1 -1
- package/src/components/drawer.css +1 -1
- package/src/components/file-upload.css +5 -5
- package/src/components/filterbar.css +7 -7
- package/src/components/form-grid.css +2 -2
- package/src/components/input-group.css +6 -6
- package/src/components/input.css +6 -6
- package/src/components/kbd.css +1 -1
- package/src/components/list.css +6 -6
- package/src/components/menu.css +3 -3
- package/src/components/modal.css +1 -1
- package/src/components/pagination.css +1 -1
- package/src/components/progress.css +1 -1
- package/src/components/rating.css +2 -2
- package/src/components/selection.css +4 -4
- package/src/components/skeleton.css +1 -1
- package/src/components/slider.css +1 -1
- package/src/components/spinner.css +1 -1
- package/src/components/states.css +1 -1
- package/src/components/stepper.css +2 -2
- package/src/components/table.css +15 -15
- package/src/components/tabs.css +3 -3
- package/src/components/timeline.css +1 -1
- package/src/components/timepicker.css +1 -1
- package/src/components/toast.css +3 -3
- package/src/components/tooltip.css +1 -1
- package/src/components/tree.css +2 -2
- package/tokens/breakpoints.d.ts +2 -2
- package/tokens/breakpoints.mjs +3 -3
- package/tokens/tokens.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Freeday
|
|
1
|
+
/* Freeday. States (empty / loading / error placeholders) */
|
|
2
2
|
.fdy-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2);padding:var(--space-10) var(--space-6);}
|
|
3
3
|
.fdy-state__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;color:var(--color-text-subtle);}
|
|
4
4
|
.fdy-state__icon svg{width:100%;height:100%;}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Freeday
|
|
1
|
+
/* Freeday. Stepper / Wizard (progress header + optional panels).
|
|
2
2
|
* Enhanced by freeday-stepper.js for prev/next navigation. */
|
|
3
3
|
.fdy-stepper{display:flex;list-style:none;margin:0;padding:0;}
|
|
4
4
|
.fdy-step{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0;}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
.fdy-step__btn{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:0 var(--space-2);background:none;border:0;font:inherit;color:inherit;cursor:pointer;max-width:100%;}
|
|
9
9
|
.fdy-step__btn:disabled{cursor:default;}
|
|
10
10
|
/* The marker carries the lift itself, NOT `__btn`. The connector above is position:absolute with
|
|
11
|
-
z-index:0, and a positioned box paints after in-flow inline content in the same stacking context
|
|
11
|
+
z-index:0, and a positioned box paints after in-flow inline content in the same stacking context,
|
|
12
12
|
so a marker that is merely inline (an indicator-only stepper with no `__btn`) gets painted THROUGH
|
|
13
13
|
by the connector line. Lifting the part that must always exist makes that assembly impossible;
|
|
14
14
|
`__btn`'s own z-index stays, harmlessly, for the navigable case. */
|
package/src/components/table.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/* Freeday
|
|
2
|
-
/* position:relative on every scroller/clipper
|
|
1
|
+
/* Freeday. Table */
|
|
2
|
+
/* position:relative on every scroller/clipper, it makes the box the containing block for its own
|
|
3
3
|
absolutely positioned content (.fdy-visually-hidden above all), which `overflow` alone does NOT
|
|
4
4
|
clip. Without it a hidden label in a wide table scrolls the whole page. See base.css. */
|
|
5
5
|
.fdy-table-wrap{position:relative;overflow-x:auto;border:var(--bw) solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);background:var(--color-surface);}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
.fdy-table tbody tr:last-child td{border-bottom:0;}
|
|
11
11
|
.fdy-table tbody tr{transition:background-color var(--dur-fast) var(--ease-standard);}
|
|
12
12
|
.fdy-table tbody tr:hover{background:var(--color-surface-2);}
|
|
13
|
-
/* Monospace data
|
|
13
|
+
/* Monospace data, ids, codes, IPs, timestamps. Alignment-neutral so it works in any cell
|
|
14
14
|
or inline (`<span class="fdy-mono">`), not just numeric columns. */
|
|
15
15
|
.fdy-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;}
|
|
16
16
|
/* Numeric cells are mono + right-aligned. Kept self-contained (not composed from .fdy-mono)
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
.fdy-table__selcol{width:1px;white-space:nowrap;}
|
|
38
38
|
.fdy-table tbody tr[aria-selected="true"],.fdy-table tbody tr[aria-selected="true"]:hover{background:var(--color-primary-soft);}
|
|
39
39
|
|
|
40
|
-
/* Frozen header row and/or first column
|
|
40
|
+
/* Frozen header row and/or first column, a rate matrix, a timetable, any grid read
|
|
41
41
|
against two axes at once.
|
|
42
42
|
|
|
43
43
|
This modifier exists because `position:sticky` alone is NOT enough. With
|
|
@@ -51,12 +51,12 @@
|
|
|
51
51
|
/* Freezing the HEADER ROW is its own modifier because it needs a vertical
|
|
52
52
|
scrollport (`.fdy-table-scroll--frozen`). A table that only freezes columns
|
|
53
53
|
scrolls with the PAGE, and `top:0` against the page sticks the header under
|
|
54
|
-
the viewport edge
|
|
54
|
+
the viewport edge, over the app's own top bar, which is worse than not
|
|
55
55
|
freezing it. Ask for the axis you actually have. */
|
|
56
56
|
.fdy-table--sticky-head thead th{position:sticky;top:0;z-index:2;border-bottom:var(--bw) solid var(--color-border);}
|
|
57
57
|
|
|
58
58
|
/* Freezing a COLUMN: put `.fdy-table__freeze` on every cell of it, header
|
|
59
|
-
included, and give each frozen column its own `--fdy-freeze-left
|
|
59
|
+
included, and give each frozen column its own `--fdy-freeze-left`. 0 for the
|
|
60
60
|
first, the summed widths of the frozen columns left of it after that. One
|
|
61
61
|
frozen column needs no variable at all. Mark the last one `--edge` so the
|
|
62
62
|
reader can see where the frozen block ends.
|
|
@@ -65,12 +65,12 @@
|
|
|
65
65
|
widths, which CSS cannot sum, and hard-coding them here would only work for
|
|
66
66
|
tables whose columns are all the same width. */
|
|
67
67
|
.fdy-table--sticky .fdy-table__freeze{position:sticky;left:var(--fdy-freeze-left,0);}
|
|
68
|
-
/* A frozen body cell slides OVER the data, so it must be OPAQUE
|
|
68
|
+
/* A frozen body cell slides OVER the data, so it must be OPAQUE, otherwise the
|
|
69
69
|
cells beneath show through it. A `th` already carries the header tint from the
|
|
70
70
|
base rule, and that tint is usually the whole point: it is what marks a column
|
|
71
71
|
as identity rather than data. So only a `td` is given a surface here. A table
|
|
72
|
-
that wants its frozen `th` to read as a body row instead
|
|
73
|
-
a hovered row should band unbroken across the freeze line
|
|
72
|
+
that wants its frozen `th` to read as a body row instead, a rate matrix, where
|
|
73
|
+
a hovered row should band unbroken across the freeze line, says so itself. */
|
|
74
74
|
.fdy-table--sticky tbody .fdy-table__freeze{z-index:1;}
|
|
75
75
|
.fdy-table--sticky tbody td.fdy-table__freeze{background:var(--color-surface);}
|
|
76
76
|
.fdy-table--sticky tbody tr:hover td.fdy-table__freeze{background:var(--color-surface-2);}
|
|
@@ -93,19 +93,19 @@
|
|
|
93
93
|
.fdy-table-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-3) var(--space-4);border-top:var(--bw) solid var(--color-border);}
|
|
94
94
|
.fdy-table-footer__info{font-size:var(--text-sm);color:var(--color-text-muted);}
|
|
95
95
|
/* Rows per page. `margin-left:auto` eats the free space, so the size control and the pager travel
|
|
96
|
-
together on the right while the range stays left
|
|
96
|
+
together on the right while the range stays left, no wrapper element, which is what keeps the
|
|
97
97
|
footer's DOM byte-identical for the tables that don't offer one (#008). The control is the kit's
|
|
98
98
|
own `.fdy-combo`, never a native <select>: an OS menu is unthemeable, and on macOS it drops a
|
|
99
|
-
dark panel into a light page
|
|
99
|
+
dark panel into a light page, which is the reason FdyCombo exists at all. Sized to its content:
|
|
100
100
|
`.fdy-combo` is display:block at max-width 22rem, which in a footer is a bar-wide box for two
|
|
101
|
-
digits. Its HEIGHT is left alone on purpose
|
|
101
|
+
digits. Its HEIGHT is left alone on purpose, `--control-h`, the same as every other control on
|
|
102
102
|
the page. It briefly carried 2.25rem to match the pager links beside it, which made the one
|
|
103
103
|
combobox in a compact app 4px taller than all the others; a pager link is a nav button, and the
|
|
104
104
|
thing this must agree with is the form controls. */
|
|
105
105
|
.fdy-table-footer__size{display:inline-flex;align-items:center;gap:var(--space-2);margin-left:auto;font-size:var(--text-sm);color:var(--color-text-muted);}
|
|
106
106
|
.fdy-table-footer__size .fdy-combo{width:5.5rem;}
|
|
107
107
|
|
|
108
|
-
/* Column filter
|
|
108
|
+
/* Column filter, funnel button injected (enhancer) or rendered (FdyTable) into a filterable <th> */
|
|
109
109
|
.fdy-table__filterwrap{display:inline-flex;align-items:center;vertical-align:middle;}
|
|
110
110
|
.fdy-table__filterbtn{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:var(--space-1);padding:0;vertical-align:middle;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-subtle);cursor:pointer;}
|
|
111
111
|
.fdy-table__filterbtn:hover{background:var(--color-surface-3);color:var(--color-text);}
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
.fdy-filter__range .fdy-input{width:6rem;}
|
|
123
123
|
.fdy-filter__foot{display:flex;justify-content:space-between;gap:var(--space-2);margin-top:var(--space-3);}
|
|
124
124
|
|
|
125
|
-
/* Bulk-action bar
|
|
125
|
+
/* Bulk-action bar, appears above the table body once rows are selected */
|
|
126
126
|
.fdy-table-bulkbar{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-primary-soft);border-bottom:var(--bw) solid var(--color-border);color:var(--color-primary-strong);font-size:var(--text-sm);}
|
|
127
127
|
.fdy-table-bulkbar[hidden]{display:none;}
|
|
128
128
|
.fdy-table-bulkbar__count{font-weight:var(--weight-semibold);white-space:nowrap;}
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
.fdy-table-bulkbar__actions{display:flex;gap:var(--space-2);}
|
|
131
131
|
|
|
132
132
|
/* Controls inside a data row. `.fdy-input` and friends are width:100%, which in an auto-layout
|
|
133
|
-
table means they contribute NO intrinsic width
|
|
133
|
+
table means they contribute NO intrinsic width, the column shrinks to whatever the header text
|
|
134
134
|
needs and the control collapses with it. A NOTE column ends up a box too narrow to read what you
|
|
135
135
|
typed into it. The floor is per-control rather than on the column, because the table does not
|
|
136
136
|
know which of its columns hold controls. */
|
package/src/components/tabs.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/* Freeday
|
|
2
|
-
/* position:relative
|
|
1
|
+
/* Freeday. Tabs (WAI-ARIA APG) */
|
|
2
|
+
/* position:relative, containing block for out-of-flow content in the tabs (see base.css). */
|
|
3
3
|
.fdy-tabs__list{position:relative;display:flex;gap:var(--space-1);border-bottom:var(--bw) solid var(--color-border);overflow-x:auto;}
|
|
4
4
|
.fdy-tabs__tab{appearance:none;border:0;background:transparent;cursor:pointer;white-space:nowrap;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted);padding:var(--space-3) var(--space-4);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard);}
|
|
5
5
|
.fdy-tabs__tab:hover{color:var(--color-text);}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
.fdy-tabs__tab:disabled:hover,.fdy-tabs__tab[aria-disabled="true"]:hover{color:var(--color-text-muted);}
|
|
8
8
|
/* `aria-current="page"` is honoured alongside `aria-selected="true"` so the tab look can be used for
|
|
9
9
|
ROUTE-driven sub-navigation (/settings/profile · /settings/billing), where the tabs are real links.
|
|
10
|
-
A link cannot be `aria-selected
|
|
10
|
+
A link cannot be `aria-selected`, that is invalid ARIA on an anchor; `aria-current` is the only
|
|
11
11
|
correct marker, and it is what a router sets. Use `.fdy-tabs` + `freeday-tabs.js` (roving tabindex,
|
|
12
12
|
a panel per tab) for in-page tabs; use these classes on plain links for routed ones, and
|
|
13
13
|
`.fdy-nav--horizontal` for an application's PRIMARY navigation. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Freeday
|
|
1
|
+
/* Freeday. Timeline (vertical event feed: dot markers on a connector line). Pure CSS. */
|
|
2
2
|
.fdy-timeline{list-style:none;margin:0;padding:0;}
|
|
3
3
|
.fdy-timeline__item{position:relative;padding:0 0 var(--space-5) var(--space-6);border-left:2px solid var(--color-border);}
|
|
4
4
|
.fdy-timeline__item:last-child{border-left-color:transparent;padding-bottom:0;}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Freeday
|
|
1
|
+
/* Freeday. Time picker (input-styled trigger + scrollable time-list popover).
|
|
2
2
|
* Built by freeday-timepicker.js from an empty [data-fdy-timepicker] wrapper.
|
|
3
3
|
* Trigger visual mirrors the date picker for a consistent control family. */
|
|
4
4
|
.fdy-timepicker{position:relative;display:inline-block;width:100%;max-width:11rem;}
|
package/src/components/toast.css
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/* Freeday
|
|
1
|
+
/* Freeday. Toast (transient notification) */
|
|
2
2
|
/* The region is a POPOVER, not merely a high z-index.
|
|
3
|
-
`.fdy-modal` is a native <dialog> opened with showModal(), which puts it in the TOP LAYER
|
|
3
|
+
`.fdy-modal` is a native <dialog> opened with showModal(), which puts it in the TOP LAYER, a
|
|
4
4
|
layer above the whole z-index universe, so no number here could ever beat it. A toast raised by
|
|
5
5
|
an action taken inside a modal was painted behind that modal's backdrop: dimmed, unreadable, and
|
|
6
6
|
most of it under the dialog itself. `freeday-toast.js` calls showPopover() as each toast is
|
|
7
7
|
added, which puts the region in the top layer too, and last-in wins there.
|
|
8
|
-
Everything after `pointer-events` is undoing the UA's [popover] defaults
|
|
8
|
+
Everything after `pointer-events` is undoing the UA's [popover] defaults, it arrives with
|
|
9
9
|
inset:0, auto margins, a border, padding, a Canvas background and overflow:auto, none of which a
|
|
10
10
|
toast stack wants. Where showPopover() is unavailable the element is still an ordinary fixed
|
|
11
11
|
block at z-index 200, which is exactly what it was before. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Freeday
|
|
1
|
+
/* Freeday. Tooltip (CSS-only, hover/focus) */
|
|
2
2
|
.fdy-tooltip-wrap{position:relative;display:inline-flex;}
|
|
3
3
|
.fdy-tooltip{position:absolute;bottom:calc(100% + var(--space-2));left:50%;z-index:150;max-width:16rem;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:var(--leading-snug);color:var(--color-inverse-text);background:var(--color-inverse-surface);box-shadow:var(--shadow-2);opacity:0;visibility:hidden;pointer-events:none;transform:translateX(-50%) translateY(4px);transition:opacity var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard);}
|
|
4
4
|
.fdy-tooltip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:.3rem solid transparent;border-top-color:var(--color-inverse-surface);}
|
package/src/components/tree.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Freeday
|
|
1
|
+
/* Freeday. Tree view (hierarchy via nested native <details>: keyboard-toggle, zero-JS).
|
|
2
2
|
* Branches expand/collapse; leaves are plain rows. Chevron + optional folder/file icons. */
|
|
3
3
|
.fdy-tree{list-style:none;margin:0;padding:0;font-size:var(--text-sm);}
|
|
4
4
|
.fdy-tree ul{list-style:none;margin:0;padding-left:var(--space-4);}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
/* Disabled row (branch summary or leaf): dimmed, no hover, not interactive. */
|
|
16
16
|
.fdy-tree__leaf[aria-disabled="true"],.fdy-tree__branch[aria-disabled="true"] > summary{opacity:.5;cursor:not-allowed;pointer-events:none;}
|
|
17
17
|
|
|
18
|
-
/* Checkbox variant
|
|
18
|
+
/* Checkbox variant, a selectable tree (cascading parent/child via freeday-tree.js).
|
|
19
19
|
* A native <input class="fdy-checkbox"> sits at the start of every row; a partially
|
|
20
20
|
* selected branch shows the native :indeterminate dash. The checkbox stops click
|
|
21
21
|
* propagation, so toggling selection never expands/collapses the branch. */
|
package/tokens/breakpoints.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// Types for tokens/breakpoints.mjs
|
|
1
|
+
// Types for tokens/breakpoints.mjs: the JS-side breakpoint scale in px
|
|
2
2
|
// (mirrors the sm/md/lg/xl utilities in src/components/breakpoints.css).
|
|
3
3
|
export declare const breakpoints: {
|
|
4
4
|
/** Width at which .fdy-app's sidebar turns from off-canvas drawer into a static column.
|
|
5
|
-
* Not part of the sm/md/lg/xl ramp
|
|
5
|
+
* Not part of the sm/md/lg/xl ramp; it mirrors app-shell.css and nothing else. */
|
|
6
6
|
nav: number;
|
|
7
7
|
sm: number;
|
|
8
8
|
md: number;
|
package/tokens/breakpoints.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// Freeday breakpoint scale in px
|
|
1
|
+
// Freeday breakpoint scale in px, mirrors src/components/breakpoints.css utilities
|
|
2
2
|
// (sm/md/lg/xl). CSS @media can't read custom properties, so this is the JS-side
|
|
3
3
|
// source of the scale for matchMedia / app @media alignment.
|
|
4
4
|
//
|
|
5
5
|
// `nav` is not part of the sm/md/lg/xl ramp: it is the width at which .fdy-app switches the
|
|
6
6
|
// sidebar from an off-canvas drawer (below) to a static column (at and above), hard-wired in
|
|
7
|
-
// src/components/app-shell.css. Anything that has to agree with the shell
|
|
7
|
+
// src/components/app-shell.css. Anything that has to agree with the shell, a matchMedia guard
|
|
8
8
|
// deciding whether the nav toggle sets --nav-open or --nav-collapsed, a utility-framework
|
|
9
|
-
// variant
|
|
9
|
+
// variant, must use THIS number, not md. Aligning such code to md (960) leaves 721–959px
|
|
10
10
|
// broken: the sidebar is already static while the script still thinks it is an overlay.
|
|
11
11
|
export const breakpoints = { nav: 721, sm: 600, md: 960, lg: 1280, xl: 1920 };
|
package/tokens/tokens.json
CHANGED
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"tick": { "$value": "{slate.400}", "$dark": "{slate.600}" }
|
|
119
119
|
},
|
|
120
120
|
|
|
121
|
-
"_comment_tone": "General categorical palette
|
|
121
|
+
"_comment_tone": "General categorical palette: the same 8 validated hues as chart, aliased under a chart-neutral name for avatars, chips, tags, legend swatches (theme-follows via chart's own $dark).",
|
|
122
122
|
"tone": {
|
|
123
123
|
"1": { "$value": "{chart.1}" },
|
|
124
124
|
"2": { "$value": "{chart.2}" },
|