@crisp-ui-kit/crisp 0.32.1 → 0.33.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/README.md +33 -1
- package/dist/appshell.css +1 -4
- package/dist/appshell.layered.css +1 -4
- package/dist/authshell.css +4 -19
- package/dist/authshell.layered.css +4 -19
- package/dist/avatar.css +2 -1
- package/dist/avatar.layered.css +2 -1
- package/dist/board.css +1 -4
- package/dist/board.layered.css +1 -4
- package/dist/breadcrumb.css +0 -1
- package/dist/breadcrumb.layered.css +0 -1
- package/dist/button.css +14 -6
- package/dist/button.layered.css +14 -6
- package/dist/card.css +2 -1
- package/dist/card.layered.css +2 -1
- package/dist/checkbox.css +6 -9
- package/dist/checkbox.layered.css +6 -9
- package/dist/cjs/components/avatar/avatar.recipe.js +38 -19
- package/dist/cjs/components/badge/badge.recipe.js +83 -24
- package/dist/cjs/components/button/button.recipe.js +109 -18
- package/dist/cjs/components/divider/divider.recipe.js +20 -8
- package/dist/cjs/components/progress/progress.recipe.js +50 -10
- package/dist/cjs/components/spinner/spinner.recipe.js +15 -7
- package/dist/cjs/components/switch/switch.recipe.js +48 -18
- package/dist/cjs/core/index.js +4 -1
- package/dist/cjs/core/spec.js +71 -0
- package/dist/columncalc.css +2 -6
- package/dist/columncalc.layered.css +2 -6
- package/dist/command.css +9 -11
- package/dist/command.layered.css +9 -11
- package/dist/datatable.css +9 -19
- package/dist/datatable.layered.css +9 -19
- package/dist/datepicker.css +15 -80
- package/dist/datepicker.layered.css +15 -80
- package/dist/datepickerfield.css +3 -18
- package/dist/datepickerfield.layered.css +3 -18
- package/dist/donutchart.css +1 -2
- package/dist/donutchart.layered.css +1 -2
- package/dist/entitycard.css +1 -7
- package/dist/entitycard.layered.css +1 -7
- package/dist/esm/components/avatar/avatar.recipe.js +38 -19
- package/dist/esm/components/badge/badge.recipe.js +83 -24
- package/dist/esm/components/button/button.recipe.js +109 -18
- package/dist/esm/components/divider/divider.recipe.js +20 -8
- package/dist/esm/components/progress/progress.recipe.js +50 -10
- package/dist/esm/components/spinner/spinner.recipe.js +15 -7
- package/dist/esm/components/switch/switch.recipe.js +48 -18
- package/dist/esm/core/index.js +1 -0
- package/dist/esm/core/spec.js +66 -0
- package/dist/fileupload.css +10 -60
- package/dist/fileupload.layered.css +10 -60
- package/dist/inbox.css +1 -7
- package/dist/inbox.layered.css +1 -7
- package/dist/input.css +9 -20
- package/dist/input.layered.css +9 -20
- package/dist/listpage.css +2 -12
- package/dist/listpage.layered.css +2 -12
- package/dist/menu.css +3 -19
- package/dist/menu.layered.css +3 -19
- package/dist/multiselect.css +4 -25
- package/dist/multiselect.layered.css +4 -25
- package/dist/navitem.css +5 -13
- package/dist/navitem.layered.css +5 -13
- package/dist/onboarding.css +1 -8
- package/dist/onboarding.layered.css +1 -8
- package/dist/quantitypicker.css +15 -50
- package/dist/quantitypicker.layered.css +15 -50
- package/dist/radiogroup.css +1 -6
- package/dist/radiogroup.layered.css +1 -6
- package/dist/recordpage.css +2 -10
- package/dist/recordpage.layered.css +2 -10
- package/dist/recordpanel.css +1 -13
- package/dist/recordpanel.layered.css +1 -13
- package/dist/recordstable.css +2 -11
- package/dist/recordstable.layered.css +2 -11
- package/dist/resizablepanel.css +4 -15
- package/dist/resizablepanel.layered.css +4 -15
- package/dist/richtext.css +1 -5
- package/dist/richtext.layered.css +1 -5
- package/dist/select.css +7 -30
- package/dist/select.layered.css +7 -30
- package/dist/settingsshell.css +2 -7
- package/dist/settingsshell.layered.css +2 -7
- package/dist/sidebar.css +23 -28
- package/dist/sidebar.layered.css +23 -28
- package/dist/slider.css +1 -8
- package/dist/slider.layered.css +1 -8
- package/dist/statcard.css +1 -2
- package/dist/statcard.layered.css +1 -2
- package/dist/styles.css +194 -652
- package/dist/styles.layered.css +194 -652
- package/dist/switch.css +1 -5
- package/dist/switch.layered.css +1 -5
- package/dist/table.css +2 -1
- package/dist/table.layered.css +2 -1
- package/dist/tabletoolbar.css +1 -3
- package/dist/tabletoolbar.layered.css +1 -3
- package/dist/tabs.css +1 -5
- package/dist/tabs.layered.css +1 -5
- package/dist/tasklist.css +1 -8
- package/dist/tasklist.layered.css +1 -8
- package/dist/textarea.css +2 -13
- package/dist/textarea.layered.css +2 -13
- package/dist/tooltip.css +2 -1
- package/dist/tooltip.layered.css +2 -1
- package/dist/trialbanner.css +2 -11
- package/dist/trialbanner.layered.css +2 -11
- package/dist/types/components/avatar/avatar.d.ts +30 -30
- package/dist/types/components/avatar/avatar.recipe.d.ts +136 -49
- package/dist/types/components/badge/badge.d.ts +26 -26
- package/dist/types/components/badge/badge.recipe.d.ts +169 -45
- package/dist/types/components/button/button.d.ts +30 -30
- package/dist/types/components/button/button.recipe.d.ts +193 -45
- package/dist/types/components/divider/divider.recipe.d.ts +26 -2
- package/dist/types/components/progress/progress.recipe.d.ts +49 -2
- package/dist/types/components/spinner/spinner.recipe.d.ts +17 -2
- package/dist/types/components/switch/switch.recipe.d.ts +57 -3
- package/dist/types/core/index.d.ts +1 -0
- package/dist/types/core/spec.d.ts +83 -0
- package/dist/viewtoggle.css +3 -9
- package/dist/viewtoggle.layered.css +3 -9
- package/dist/wheelpicker.css +14 -59
- package/dist/wheelpicker.layered.css +14 -59
- package/package.json +4 -1
package/dist/command.css
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
.crisp-command {
|
|
2
|
-
display: contents; font-family: var(--crisp-font-sans)
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
combobox names the input through it and points the listbox's
|
|
2
|
+
display: contents; font-family: var(--crisp-font-sans) ;
|
|
3
|
+
& .crisp-command-content, & .crisp-command-card { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
|
|
4
|
+
& .crisp-command-backdrop { position: fixed; inset: 0; z-index: 50; background: transparent; }
|
|
5
|
+
& .crisp-command-positioner { position: fixed; inset: 0; z-index: 51; display: flex; align-items: flex-start; justify-content: center; padding: 15vh var(--crisp-space-4) var(--crisp-space-4); }
|
|
6
|
+
& .crisp-command-content { position: relative; display: flex; flex-direction: column; box-sizing: border-box; width: 90vw; max-width: 748px; max-height: 70vh; padding: var(--crisp-space-1); border-radius: var(--crisp-radius-2xl); background: color-mix(in srgb, var(--crisp-bg-overlay-frost) 60%, transparent); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); box-shadow: 0 8px 28px -6px var(--crisp-shadow-overlay1), 0 18px 88px -4px var(--crisp-shadow-overlay2), 0 0 1px var(--crisp-shadow-overlay3); opacity: 1; transform: scale(1); transition: opacity 0.2s ease, transform 0.2s ease; @starting-style { opacity: 0; transform: scale(0.97); } }
|
|
7
|
+
& .crisp-command-card { display: flex; flex-direction: column; flex: 1; min-height: 0; box-sizing: border-box; border-radius: var(--crisp-radius-xl); background: var(--crisp-bg-surface); box-shadow: 0 0 0 1px color-mix(in srgb, var(--crisp-fg-primary) 8%, transparent); overflow: hidden; }
|
|
8
|
+
& .crisp-command-control { display: flex; align-items: center; gap: var(--crisp-space-2-5); height: 52px; flex-shrink: 0; padding: 0 var(--crisp-space-4); border-bottom: 1px solid var(--crisp-border-subtle); color: var(--crisp-fg-muted); }
|
|
9
|
+
& .crisp-command-control svg { flex-shrink: 0; }
|
|
10
|
+
/* The palette's label element. It exists for the assistive tree only: zag's combobox names the input through it and points the listbox's
|
|
12
11
|
aria-labelledby at it, and without it both were unnamed and the reference
|
|
13
12
|
resolved to nothing (#225). Clipped rather than display:none, which would
|
|
14
13
|
take it out of the tree it exists for. */
|
|
@@ -30,7 +29,6 @@
|
|
|
30
29
|
& .crisp-command-footer-action:disabled { opacity: 0.5; cursor: default; }
|
|
31
30
|
& .crisp-command-footer-action-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
32
31
|
& .crisp-command-footer-key { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-sm); background: rgba(255,255,255,0.22); font-size: var(--crisp-text-xs); }
|
|
33
|
-
|
|
34
32
|
}
|
|
35
33
|
|
|
36
34
|
@media (prefers-reduced-motion: reduce) {
|
package/dist/command.layered.css
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
@layer crisp-components {
|
|
2
2
|
.crisp-command {
|
|
3
|
-
display: contents; font-family: var(--crisp-font-sans)
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
combobox names the input through it and points the listbox's
|
|
3
|
+
display: contents; font-family: var(--crisp-font-sans) ;
|
|
4
|
+
& .crisp-command-content, & .crisp-command-card { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
|
|
5
|
+
& .crisp-command-backdrop { position: fixed; inset: 0; z-index: 50; background: transparent; }
|
|
6
|
+
& .crisp-command-positioner { position: fixed; inset: 0; z-index: 51; display: flex; align-items: flex-start; justify-content: center; padding: 15vh var(--crisp-space-4) var(--crisp-space-4); }
|
|
7
|
+
& .crisp-command-content { position: relative; display: flex; flex-direction: column; box-sizing: border-box; width: 90vw; max-width: 748px; max-height: 70vh; padding: var(--crisp-space-1); border-radius: var(--crisp-radius-2xl); background: color-mix(in srgb, var(--crisp-bg-overlay-frost) 60%, transparent); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); box-shadow: 0 8px 28px -6px var(--crisp-shadow-overlay1), 0 18px 88px -4px var(--crisp-shadow-overlay2), 0 0 1px var(--crisp-shadow-overlay3); opacity: 1; transform: scale(1); transition: opacity 0.2s ease, transform 0.2s ease; @starting-style { opacity: 0; transform: scale(0.97); } }
|
|
8
|
+
& .crisp-command-card { display: flex; flex-direction: column; flex: 1; min-height: 0; box-sizing: border-box; border-radius: var(--crisp-radius-xl); background: var(--crisp-bg-surface); box-shadow: 0 0 0 1px color-mix(in srgb, var(--crisp-fg-primary) 8%, transparent); overflow: hidden; }
|
|
9
|
+
& .crisp-command-control { display: flex; align-items: center; gap: var(--crisp-space-2-5); height: 52px; flex-shrink: 0; padding: 0 var(--crisp-space-4); border-bottom: 1px solid var(--crisp-border-subtle); color: var(--crisp-fg-muted); }
|
|
10
|
+
& .crisp-command-control svg { flex-shrink: 0; }
|
|
11
|
+
/* The palette's label element. It exists for the assistive tree only: zag's combobox names the input through it and points the listbox's
|
|
13
12
|
aria-labelledby at it, and without it both were unnamed and the reference
|
|
14
13
|
resolved to nothing (#225). Clipped rather than display:none, which would
|
|
15
14
|
take it out of the tree it exists for. */
|
|
@@ -31,7 +30,6 @@
|
|
|
31
30
|
& .crisp-command-footer-action:disabled { opacity: 0.5; cursor: default; }
|
|
32
31
|
& .crisp-command-footer-action-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
33
32
|
& .crisp-command-footer-key { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-sm); background: rgba(255,255,255,0.22); font-size: var(--crisp-text-xs); }
|
|
34
|
-
|
|
35
33
|
}
|
|
36
34
|
|
|
37
35
|
@media (prefers-reduced-motion: reduce) {
|
package/dist/datatable.css
CHANGED
|
@@ -7,30 +7,24 @@
|
|
|
7
7
|
& .crisp-datatable-search input::placeholder { color: var(--crisp-fg-muted); }
|
|
8
8
|
& .crisp-datatable-search input:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
|
|
9
9
|
& .crisp-datatable-count { margin-inline-start: auto; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
|
|
10
|
-
/* The header cell has no padding of its own -- the button owns the
|
|
11
|
-
full cell so the whole header is clickable (its own inset is 12px).
|
|
12
|
-
Mirrors the summary-row fix. */
|
|
10
|
+
/* The header cell has no padding of its own -- the button owns the full cell so the whole header is clickable (its own inset is 12px). Mirrors the summary-row fix. */
|
|
13
11
|
& th { padding: 0; }
|
|
14
|
-
/* Same wrapper trap as AUTHORING.md Lesson 40 (ColumnCalc's summary trigger):
|
|
12
|
+
/* Same wrapper trap as AUTHORING.md Lesson 40 (ColumnCalc's summary trigger):
|
|
15
13
|
Menu wraps its trigger in a flex div that sizes to its content, so a
|
|
16
14
|
long header grew past the column instead of filling it -- with nothing
|
|
17
|
-
left to squeeze, the label's own ellipsis CSS (below) had no properly
|
|
18
|
-
|
|
19
|
-
it with no "...". Fill the wrapper, scoped to th so Menu's default
|
|
20
|
-
(correct everywhere else) is untouched. */
|
|
15
|
+
left to squeeze, the label's own ellipsis CSS (below) had no properly -sized box to truncate against, and the th's own overflow hard-clipped
|
|
16
|
+
it with no "...". Fill the wrapper, scoped to th so Menu's default (correct everywhere else) is untouched. */
|
|
21
17
|
& th .crisp-menu { width: 100%; height: 100%; }
|
|
22
18
|
& .crisp-datatable-th-inner { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); width: 100%; min-width: 0; height: 100%; }
|
|
23
19
|
& .crisp-datatable-th-inner > svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
|
|
24
|
-
/* The summary cell has NO padding of its own -- the calculation trigger
|
|
25
|
-
owns the whole 246x37 area so a click anywhere in the cell opens the
|
|
26
|
-
menu. Zero the cell's inset and let ColumnCalc supply the 12px. */
|
|
20
|
+
/* The summary cell has NO padding of its own -- the calculation trigger owns the whole 246x37 area so a click anywhere in the cell opens the menu. Zero the cell's inset and let ColumnCalc supply the 12px. */
|
|
27
21
|
& tfoot td { padding: 0; }
|
|
28
22
|
/* Group heading row -- a view is grouped under a subtle label with the
|
|
29
23
|
bucket's count beside it. */
|
|
30
|
-
& .crisp-datatable-viewsettings { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: transparent; color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
|
|
24
|
+
& .crisp-datatable-viewsettings { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: transparent; color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
|
|
31
25
|
& .crisp-datatable-viewsettings:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, transparent); color: var(--crisp-fg-primary); }
|
|
32
26
|
& .crisp-datatable-group-label { padding: var(--crisp-space-1-5) var(--crisp-space-2) var(--crisp-space-1); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
|
|
33
|
-
|
|
27
|
+
& .crisp-datatable-group { height: var(--crisp-size-menuRow); padding: 0 var(--crisp-space-3); background: var(--crisp-bg-subtle); border-bottom: 1px solid var(--crisp-border-subtle); font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
|
|
34
28
|
& .crisp-datatable-group-count { margin-inline-start: var(--crisp-space-1-5); color: var(--crisp-fg-muted); font-variant-numeric: tabular-nums; }
|
|
35
29
|
& .crisp-datatable-th-rename { width: 100%; min-width: 0; height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-1); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); outline: none; }
|
|
36
30
|
& .crisp-datatable-th-rename:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
|
|
@@ -84,13 +78,9 @@
|
|
|
84
78
|
& .crisp-datatable-num { font-variant-numeric: tabular-nums; }
|
|
85
79
|
& .crisp-datatable-muted { color: var(--crisp-fg-muted); }
|
|
86
80
|
/* row drag-to-reorder -- a Settings > Objects > Attributes screen measures
|
|
87
|
-
a leading 20px grip column, a 16px grip icon, and the row's own
|
|
88
|
-
hairline doubling as the drop indicator (it tints toward the brand
|
|
89
|
-
colour as the active drop target). The affordance + geometry are
|
|
90
|
-
measured; the drag MECHANISM is crisp's existing house idiom -- HTML5
|
|
81
|
+
a leading 20px grip column, a 16px grip icon, and the row's own hairline doubling as the drop indicator (it tints toward the brand colour as the active drop target). The affordance + geometry are measured; the drag MECHANISM is crisp's existing house idiom -- HTML5
|
|
91
82
|
draggable + dataTransfer, the same one column reorder already uses
|
|
92
|
-
(RecordsTable's reorderColumn) -- not a proprietary
|
|
93
|
-
pointer-events implementation. */
|
|
83
|
+
(RecordsTable's reorderColumn) -- not a proprietary pointer-events implementation. */
|
|
94
84
|
& .crisp-datatable-col-grip { width: 20px; padding: 0; text-align: center; }
|
|
95
85
|
& .crisp-datatable-grip { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%; margin: 0; border: none; border-radius: 0; background: none; font-family: inherit; color: var(--crisp-fg-muted); cursor: grab; }
|
|
96
86
|
& .crisp-datatable-grip:active { cursor: grabbing; }
|
|
@@ -8,30 +8,24 @@
|
|
|
8
8
|
& .crisp-datatable-search input::placeholder { color: var(--crisp-fg-muted); }
|
|
9
9
|
& .crisp-datatable-search input:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
|
|
10
10
|
& .crisp-datatable-count { margin-inline-start: auto; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
|
|
11
|
-
/* The header cell has no padding of its own -- the button owns the
|
|
12
|
-
full cell so the whole header is clickable (its own inset is 12px).
|
|
13
|
-
Mirrors the summary-row fix. */
|
|
11
|
+
/* The header cell has no padding of its own -- the button owns the full cell so the whole header is clickable (its own inset is 12px). Mirrors the summary-row fix. */
|
|
14
12
|
& th { padding: 0; }
|
|
15
|
-
/* Same wrapper trap as AUTHORING.md Lesson 40 (ColumnCalc's summary trigger):
|
|
13
|
+
/* Same wrapper trap as AUTHORING.md Lesson 40 (ColumnCalc's summary trigger):
|
|
16
14
|
Menu wraps its trigger in a flex div that sizes to its content, so a
|
|
17
15
|
long header grew past the column instead of filling it -- with nothing
|
|
18
|
-
left to squeeze, the label's own ellipsis CSS (below) had no properly
|
|
19
|
-
|
|
20
|
-
it with no "...". Fill the wrapper, scoped to th so Menu's default
|
|
21
|
-
(correct everywhere else) is untouched. */
|
|
16
|
+
left to squeeze, the label's own ellipsis CSS (below) had no properly -sized box to truncate against, and the th's own overflow hard-clipped
|
|
17
|
+
it with no "...". Fill the wrapper, scoped to th so Menu's default (correct everywhere else) is untouched. */
|
|
22
18
|
& th .crisp-menu { width: 100%; height: 100%; }
|
|
23
19
|
& .crisp-datatable-th-inner { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); width: 100%; min-width: 0; height: 100%; }
|
|
24
20
|
& .crisp-datatable-th-inner > svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
|
|
25
|
-
/* The summary cell has NO padding of its own -- the calculation trigger
|
|
26
|
-
owns the whole 246x37 area so a click anywhere in the cell opens the
|
|
27
|
-
menu. Zero the cell's inset and let ColumnCalc supply the 12px. */
|
|
21
|
+
/* The summary cell has NO padding of its own -- the calculation trigger owns the whole 246x37 area so a click anywhere in the cell opens the menu. Zero the cell's inset and let ColumnCalc supply the 12px. */
|
|
28
22
|
& tfoot td { padding: 0; }
|
|
29
23
|
/* Group heading row -- a view is grouped under a subtle label with the
|
|
30
24
|
bucket's count beside it. */
|
|
31
|
-
& .crisp-datatable-viewsettings { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: transparent; color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
|
|
25
|
+
& .crisp-datatable-viewsettings { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: transparent; color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
|
|
32
26
|
& .crisp-datatable-viewsettings:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, transparent); color: var(--crisp-fg-primary); }
|
|
33
27
|
& .crisp-datatable-group-label { padding: var(--crisp-space-1-5) var(--crisp-space-2) var(--crisp-space-1); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
|
|
34
|
-
|
|
28
|
+
& .crisp-datatable-group { height: var(--crisp-size-menuRow); padding: 0 var(--crisp-space-3); background: var(--crisp-bg-subtle); border-bottom: 1px solid var(--crisp-border-subtle); font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
|
|
35
29
|
& .crisp-datatable-group-count { margin-inline-start: var(--crisp-space-1-5); color: var(--crisp-fg-muted); font-variant-numeric: tabular-nums; }
|
|
36
30
|
& .crisp-datatable-th-rename { width: 100%; min-width: 0; height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-1); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); outline: none; }
|
|
37
31
|
& .crisp-datatable-th-rename:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
|
|
@@ -85,13 +79,9 @@
|
|
|
85
79
|
& .crisp-datatable-num { font-variant-numeric: tabular-nums; }
|
|
86
80
|
& .crisp-datatable-muted { color: var(--crisp-fg-muted); }
|
|
87
81
|
/* row drag-to-reorder -- a Settings > Objects > Attributes screen measures
|
|
88
|
-
a leading 20px grip column, a 16px grip icon, and the row's own
|
|
89
|
-
hairline doubling as the drop indicator (it tints toward the brand
|
|
90
|
-
colour as the active drop target). The affordance + geometry are
|
|
91
|
-
measured; the drag MECHANISM is crisp's existing house idiom -- HTML5
|
|
82
|
+
a leading 20px grip column, a 16px grip icon, and the row's own hairline doubling as the drop indicator (it tints toward the brand colour as the active drop target). The affordance + geometry are measured; the drag MECHANISM is crisp's existing house idiom -- HTML5
|
|
92
83
|
draggable + dataTransfer, the same one column reorder already uses
|
|
93
|
-
(RecordsTable's reorderColumn) -- not a proprietary
|
|
94
|
-
pointer-events implementation. */
|
|
84
|
+
(RecordsTable's reorderColumn) -- not a proprietary pointer-events implementation. */
|
|
95
85
|
& .crisp-datatable-col-grip { width: 20px; padding: 0; text-align: center; }
|
|
96
86
|
& .crisp-datatable-grip { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%; margin: 0; border: none; border-radius: 0; background: none; font-family: inherit; color: var(--crisp-fg-muted); cursor: grab; }
|
|
97
87
|
& .crisp-datatable-grip:active { cursor: grabbing; }
|
package/dist/datepicker.css
CHANGED
|
@@ -1,73 +1,26 @@
|
|
|
1
1
|
.crisp-datepicker {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
& .crisp-datepicker-header {
|
|
7
|
-
display: flex; align-items: center; justify-content: space-between;
|
|
8
|
-
height: var(--crisp-size-menuRow);
|
|
9
|
-
}
|
|
10
|
-
& .crisp-datepicker-header-label {
|
|
11
|
-
display: inline-flex; align-items: center; gap: var(--crisp-space-1);
|
|
12
|
-
height: 100%; min-width: 0; border: 0; padding: 0 var(--crisp-space-1);
|
|
13
|
-
border-radius: var(--crisp-radius-md); background: transparent; cursor: pointer;
|
|
14
|
-
color: var(--crisp-fg-primary); font-family: inherit;
|
|
15
|
-
font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium);
|
|
16
|
-
white-space: nowrap;
|
|
17
|
-
outline: 2px solid transparent; outline-offset: -2px;
|
|
18
|
-
transition: outline-color .2s ease;
|
|
19
|
-
}
|
|
2
|
+
position: relative; box-sizing: border-box; width: 100%; min-width: 0; font-family: var(--crisp-font-sans); color: var(--crisp-fg-primary); background: var(--crisp-bg-surface);
|
|
3
|
+
& .crisp-datepicker-header { display: flex; align-items: center; justify-content: space-between; height: var(--crisp-size-menuRow); }
|
|
4
|
+
& .crisp-datepicker-header-label { display: inline-flex; align-items: center; gap: var(--crisp-space-1); height: 100%; min-width: 0; border: 0; padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-md); background: transparent; cursor: pointer; color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); white-space: nowrap; outline: 2px solid transparent; outline-offset: -2px; transition: outline-color .2s ease; }
|
|
20
5
|
& .crisp-datepicker-header-label:focus-visible { outline-color: var(--crisp-stroke-focus-ring); }
|
|
21
6
|
& .crisp-datepicker-header-chevron { display: inline-flex; transition: transform .2s ease; }
|
|
22
7
|
& .crisp-datepicker-header-chevron[data-open] { transform: rotate(180deg); }
|
|
23
|
-
|
|
24
8
|
& .crisp-datepicker-nav { display: flex; align-items: center; }
|
|
25
|
-
& .crisp-datepicker-nav-button {
|
|
26
|
-
display: inline-flex; align-items: center; justify-content: center;
|
|
27
|
-
width: var(--crisp-size-menuRow); height: var(--crisp-size-menuRow); padding: 0;
|
|
28
|
-
border: none; border-radius: var(--crisp-radius-md); background: none;
|
|
29
|
-
color: var(--crisp-fg-muted); font-family: inherit; cursor: pointer;
|
|
30
|
-
outline: 2px solid transparent; outline-offset: -2px;
|
|
31
|
-
transition: background-color .12s, outline-color .2s ease;
|
|
32
|
-
}
|
|
9
|
+
& .crisp-datepicker-nav-button { display: inline-flex; align-items: center; justify-content: center; width: var(--crisp-size-menuRow); height: var(--crisp-size-menuRow); padding: 0; border: none; border-radius: var(--crisp-radius-md); background: none; color: var(--crisp-fg-muted); font-family: inherit; cursor: pointer; outline: 2px solid transparent; outline-offset: -2px; transition: background-color .12s, outline-color .2s ease; }
|
|
33
10
|
& .crisp-datepicker-nav-button:hover { background: var(--crisp-bg-raised); }
|
|
34
11
|
& .crisp-datepicker-nav-button:focus-visible { outline-color: var(--crisp-stroke-focus-ring); }
|
|
35
12
|
& .crisp-datepicker-nav-button:disabled { opacity: .4; cursor: not-allowed; }
|
|
36
|
-
|
|
37
|
-
& .crisp-datepicker-weekday-
|
|
38
|
-
display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
39
|
-
position: relative; z-index: 2; background: var(--crisp-bg-surface);
|
|
40
|
-
}
|
|
41
|
-
& .crisp-datepicker-weekday {
|
|
42
|
-
display: flex; align-items: center; justify-content: center;
|
|
43
|
-
height: var(--crisp-size-calendarCell); color: var(--crisp-fg-neutral-subtle);
|
|
44
|
-
font-size: var(--crisp-text-sm); line-height: 16px; font-weight: var(--crisp-weight-medium);
|
|
45
|
-
}
|
|
46
|
-
|
|
13
|
+
& .crisp-datepicker-weekday-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); position: relative; z-index: 2; background: var(--crisp-bg-surface); }
|
|
14
|
+
& .crisp-datepicker-weekday { display: flex; align-items: center; justify-content: center; height: var(--crisp-size-calendarCell); color: var(--crisp-fg-neutral-subtle); font-size: var(--crisp-text-sm); line-height: 16px; font-weight: var(--crisp-weight-medium); }
|
|
47
15
|
& .crisp-datepicker-months { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; min-width: 0; }
|
|
48
16
|
& .crisp-datepicker-months[data-wheel-open] { visibility: hidden; }
|
|
49
17
|
& .crisp-datepicker-month { min-width: 0; }
|
|
50
|
-
& .crisp-datepicker-month-label {
|
|
51
|
-
display: flex; align-items: center; height: 24px;
|
|
52
|
-
color: var(--crisp-fg-primary); font-size: var(--crisp-text-lg); line-height: 20px;
|
|
53
|
-
font-weight: var(--crisp-weight-medium);
|
|
54
|
-
}
|
|
55
|
-
|
|
18
|
+
& .crisp-datepicker-month-label { display: flex; align-items: center; height: 24px; color: var(--crisp-fg-primary); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); }
|
|
56
19
|
& .crisp-datepicker-grid { display: grid; min-width: 0; }
|
|
57
20
|
& .crisp-datepicker-week-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
|
|
58
|
-
|
|
59
|
-
& .crisp-datepicker-cell {
|
|
60
|
-
position: relative; min-width: 0; min-height: var(--crisp-size-calendarCell);
|
|
61
|
-
isolation: isolate;
|
|
62
|
-
}
|
|
21
|
+
& .crisp-datepicker-cell { position: relative; min-width: 0; min-height: var(--crisp-size-calendarCell); isolation: isolate; }
|
|
63
22
|
& .crisp-datepicker-empty-cell { min-height: var(--crisp-size-calendarCell); }
|
|
64
|
-
|
|
65
|
-
/* The bridge joining days inside a completed range.
|
|
66
|
-
The endpoints do NOT carry data-in-range -- only the interior days do --
|
|
67
|
-
so these are three independent rules, not a base plus two modifiers. A
|
|
68
|
-
modifier that sets only inset-inline-start never generates a pseudo
|
|
69
|
-
element on an endpoint, which leaves a half-cell of white between the
|
|
70
|
-
endpoint's pill and the run of grey beside it. Each rule declares its
|
|
23
|
+
/* The bridge joining days inside a completed range. The endpoints do NOT carry data-in-range -- only the interior days do -- so these are three independent rules, not a base plus two modifiers. A modifier that sets only inset-inline-start never generates a pseudo element on an endpoint, which leaves a half-cell of white between the endpoint's pill and the run of grey beside it. Each rule declares its
|
|
71
24
|
own content. */
|
|
72
25
|
& .crisp-datepicker-cell[data-range-complete][data-in-range]::before {
|
|
73
26
|
content: ""; position: absolute; z-index: -1; inset-inline: 0;
|
|
@@ -125,41 +78,23 @@
|
|
|
125
78
|
Without this the content column top-aligns the glyph and the pill reads
|
|
126
79
|
as offset — the cell is 48px, the pill 42px inset 3px, and only a
|
|
127
80
|
42px-tall numeral box shares the pill's centre line. */
|
|
128
|
-
& .crisp-datepicker-date-content > [data-date-picker-day] {
|
|
129
|
-
display: flex; min-height: var(--crisp-size-calendarPill); flex-shrink: 0;
|
|
130
|
-
align-items: center; justify-content: center;
|
|
131
|
-
}
|
|
132
|
-
|
|
81
|
+
& .crisp-datepicker-date-content > [data-date-picker-day] { display: flex; min-height: var(--crisp-size-calendarPill); flex-shrink: 0; align-items: center; justify-content: center; }
|
|
133
82
|
/* the year/month wheel, laid over the grid it replaces */
|
|
134
|
-
& .crisp-datepicker-wheel-container {
|
|
135
|
-
position: absolute; z-index: 1; inset-inline: 0;
|
|
136
|
-
top: var(--crisp-size-menuRow); bottom: 0;
|
|
137
|
-
display: flex; align-items: center; overflow: hidden;
|
|
138
|
-
background: var(--crisp-bg-surface);
|
|
139
|
-
}
|
|
83
|
+
& .crisp-datepicker-wheel-container { position: absolute; z-index: 1; inset-inline: 0; top: var(--crisp-size-menuRow); bottom: 0; display: flex; align-items: center; overflow: hidden; background: var(--crisp-bg-surface); }
|
|
140
84
|
& .crisp-datepicker-wheel { width: 100%; }
|
|
141
|
-
|
|
142
|
-
& .crisp-datepicker-continuous-scroll {
|
|
143
|
-
height: 100%; min-height: 0; overflow-y: auto;
|
|
144
|
-
overscroll-behavior: contain; scrollbar-width: none;
|
|
145
|
-
}
|
|
85
|
+
& .crisp-datepicker-continuous-scroll { height: 100%; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none; }
|
|
146
86
|
& .crisp-datepicker-continuous-scroll::-webkit-scrollbar { display: none; }
|
|
147
87
|
& .crisp-datepicker-continuous-content { display: flex; flex-direction: column; }
|
|
148
|
-
|
|
149
88
|
/* announced, never drawn */
|
|
150
|
-
& .crisp-datepicker-live-region {
|
|
151
|
-
position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
|
|
152
|
-
overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
|
|
153
|
-
}
|
|
154
|
-
|
|
89
|
+
& .crisp-datepicker-live-region { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
|
|
155
90
|
}
|
|
156
91
|
.crisp-datepicker--visibleRange_month {
|
|
157
92
|
|
|
158
93
|
}
|
|
159
94
|
.crisp-datepicker--visibleRange_twoMonths {
|
|
160
95
|
& .crisp-datepicker-months { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--crisp-space-6); }
|
|
161
|
-
|
|
162
|
-
|
|
96
|
+
& .crisp-datepicker-two-month-header { display: flex; align-items: center; justify-content: space-between; height: var(--crisp-size-menuRow); }
|
|
97
|
+
& .crisp-datepicker-two-month-label { color: var(--crisp-fg-primary); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); }
|
|
163
98
|
}
|
|
164
99
|
.crisp-datepicker--visibleRange_week {
|
|
165
100
|
|
|
@@ -1,74 +1,27 @@
|
|
|
1
1
|
@layer crisp-components {
|
|
2
2
|
.crisp-datepicker {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
& .crisp-datepicker-header {
|
|
8
|
-
display: flex; align-items: center; justify-content: space-between;
|
|
9
|
-
height: var(--crisp-size-menuRow);
|
|
10
|
-
}
|
|
11
|
-
& .crisp-datepicker-header-label {
|
|
12
|
-
display: inline-flex; align-items: center; gap: var(--crisp-space-1);
|
|
13
|
-
height: 100%; min-width: 0; border: 0; padding: 0 var(--crisp-space-1);
|
|
14
|
-
border-radius: var(--crisp-radius-md); background: transparent; cursor: pointer;
|
|
15
|
-
color: var(--crisp-fg-primary); font-family: inherit;
|
|
16
|
-
font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium);
|
|
17
|
-
white-space: nowrap;
|
|
18
|
-
outline: 2px solid transparent; outline-offset: -2px;
|
|
19
|
-
transition: outline-color .2s ease;
|
|
20
|
-
}
|
|
3
|
+
position: relative; box-sizing: border-box; width: 100%; min-width: 0; font-family: var(--crisp-font-sans); color: var(--crisp-fg-primary); background: var(--crisp-bg-surface);
|
|
4
|
+
& .crisp-datepicker-header { display: flex; align-items: center; justify-content: space-between; height: var(--crisp-size-menuRow); }
|
|
5
|
+
& .crisp-datepicker-header-label { display: inline-flex; align-items: center; gap: var(--crisp-space-1); height: 100%; min-width: 0; border: 0; padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-md); background: transparent; cursor: pointer; color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); white-space: nowrap; outline: 2px solid transparent; outline-offset: -2px; transition: outline-color .2s ease; }
|
|
21
6
|
& .crisp-datepicker-header-label:focus-visible { outline-color: var(--crisp-stroke-focus-ring); }
|
|
22
7
|
& .crisp-datepicker-header-chevron { display: inline-flex; transition: transform .2s ease; }
|
|
23
8
|
& .crisp-datepicker-header-chevron[data-open] { transform: rotate(180deg); }
|
|
24
|
-
|
|
25
9
|
& .crisp-datepicker-nav { display: flex; align-items: center; }
|
|
26
|
-
& .crisp-datepicker-nav-button {
|
|
27
|
-
display: inline-flex; align-items: center; justify-content: center;
|
|
28
|
-
width: var(--crisp-size-menuRow); height: var(--crisp-size-menuRow); padding: 0;
|
|
29
|
-
border: none; border-radius: var(--crisp-radius-md); background: none;
|
|
30
|
-
color: var(--crisp-fg-muted); font-family: inherit; cursor: pointer;
|
|
31
|
-
outline: 2px solid transparent; outline-offset: -2px;
|
|
32
|
-
transition: background-color .12s, outline-color .2s ease;
|
|
33
|
-
}
|
|
10
|
+
& .crisp-datepicker-nav-button { display: inline-flex; align-items: center; justify-content: center; width: var(--crisp-size-menuRow); height: var(--crisp-size-menuRow); padding: 0; border: none; border-radius: var(--crisp-radius-md); background: none; color: var(--crisp-fg-muted); font-family: inherit; cursor: pointer; outline: 2px solid transparent; outline-offset: -2px; transition: background-color .12s, outline-color .2s ease; }
|
|
34
11
|
& .crisp-datepicker-nav-button:hover { background: var(--crisp-bg-raised); }
|
|
35
12
|
& .crisp-datepicker-nav-button:focus-visible { outline-color: var(--crisp-stroke-focus-ring); }
|
|
36
13
|
& .crisp-datepicker-nav-button:disabled { opacity: .4; cursor: not-allowed; }
|
|
37
|
-
|
|
38
|
-
& .crisp-datepicker-weekday-
|
|
39
|
-
display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
40
|
-
position: relative; z-index: 2; background: var(--crisp-bg-surface);
|
|
41
|
-
}
|
|
42
|
-
& .crisp-datepicker-weekday {
|
|
43
|
-
display: flex; align-items: center; justify-content: center;
|
|
44
|
-
height: var(--crisp-size-calendarCell); color: var(--crisp-fg-neutral-subtle);
|
|
45
|
-
font-size: var(--crisp-text-sm); line-height: 16px; font-weight: var(--crisp-weight-medium);
|
|
46
|
-
}
|
|
47
|
-
|
|
14
|
+
& .crisp-datepicker-weekday-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); position: relative; z-index: 2; background: var(--crisp-bg-surface); }
|
|
15
|
+
& .crisp-datepicker-weekday { display: flex; align-items: center; justify-content: center; height: var(--crisp-size-calendarCell); color: var(--crisp-fg-neutral-subtle); font-size: var(--crisp-text-sm); line-height: 16px; font-weight: var(--crisp-weight-medium); }
|
|
48
16
|
& .crisp-datepicker-months { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; min-width: 0; }
|
|
49
17
|
& .crisp-datepicker-months[data-wheel-open] { visibility: hidden; }
|
|
50
18
|
& .crisp-datepicker-month { min-width: 0; }
|
|
51
|
-
& .crisp-datepicker-month-label {
|
|
52
|
-
display: flex; align-items: center; height: 24px;
|
|
53
|
-
color: var(--crisp-fg-primary); font-size: var(--crisp-text-lg); line-height: 20px;
|
|
54
|
-
font-weight: var(--crisp-weight-medium);
|
|
55
|
-
}
|
|
56
|
-
|
|
19
|
+
& .crisp-datepicker-month-label { display: flex; align-items: center; height: 24px; color: var(--crisp-fg-primary); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); }
|
|
57
20
|
& .crisp-datepicker-grid { display: grid; min-width: 0; }
|
|
58
21
|
& .crisp-datepicker-week-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
|
|
59
|
-
|
|
60
|
-
& .crisp-datepicker-cell {
|
|
61
|
-
position: relative; min-width: 0; min-height: var(--crisp-size-calendarCell);
|
|
62
|
-
isolation: isolate;
|
|
63
|
-
}
|
|
22
|
+
& .crisp-datepicker-cell { position: relative; min-width: 0; min-height: var(--crisp-size-calendarCell); isolation: isolate; }
|
|
64
23
|
& .crisp-datepicker-empty-cell { min-height: var(--crisp-size-calendarCell); }
|
|
65
|
-
|
|
66
|
-
/* The bridge joining days inside a completed range.
|
|
67
|
-
The endpoints do NOT carry data-in-range -- only the interior days do --
|
|
68
|
-
so these are three independent rules, not a base plus two modifiers. A
|
|
69
|
-
modifier that sets only inset-inline-start never generates a pseudo
|
|
70
|
-
element on an endpoint, which leaves a half-cell of white between the
|
|
71
|
-
endpoint's pill and the run of grey beside it. Each rule declares its
|
|
24
|
+
/* The bridge joining days inside a completed range. The endpoints do NOT carry data-in-range -- only the interior days do -- so these are three independent rules, not a base plus two modifiers. A modifier that sets only inset-inline-start never generates a pseudo element on an endpoint, which leaves a half-cell of white between the endpoint's pill and the run of grey beside it. Each rule declares its
|
|
72
25
|
own content. */
|
|
73
26
|
& .crisp-datepicker-cell[data-range-complete][data-in-range]::before {
|
|
74
27
|
content: ""; position: absolute; z-index: -1; inset-inline: 0;
|
|
@@ -126,41 +79,23 @@
|
|
|
126
79
|
Without this the content column top-aligns the glyph and the pill reads
|
|
127
80
|
as offset — the cell is 48px, the pill 42px inset 3px, and only a
|
|
128
81
|
42px-tall numeral box shares the pill's centre line. */
|
|
129
|
-
& .crisp-datepicker-date-content > [data-date-picker-day] {
|
|
130
|
-
display: flex; min-height: var(--crisp-size-calendarPill); flex-shrink: 0;
|
|
131
|
-
align-items: center; justify-content: center;
|
|
132
|
-
}
|
|
133
|
-
|
|
82
|
+
& .crisp-datepicker-date-content > [data-date-picker-day] { display: flex; min-height: var(--crisp-size-calendarPill); flex-shrink: 0; align-items: center; justify-content: center; }
|
|
134
83
|
/* the year/month wheel, laid over the grid it replaces */
|
|
135
|
-
& .crisp-datepicker-wheel-container {
|
|
136
|
-
position: absolute; z-index: 1; inset-inline: 0;
|
|
137
|
-
top: var(--crisp-size-menuRow); bottom: 0;
|
|
138
|
-
display: flex; align-items: center; overflow: hidden;
|
|
139
|
-
background: var(--crisp-bg-surface);
|
|
140
|
-
}
|
|
84
|
+
& .crisp-datepicker-wheel-container { position: absolute; z-index: 1; inset-inline: 0; top: var(--crisp-size-menuRow); bottom: 0; display: flex; align-items: center; overflow: hidden; background: var(--crisp-bg-surface); }
|
|
141
85
|
& .crisp-datepicker-wheel { width: 100%; }
|
|
142
|
-
|
|
143
|
-
& .crisp-datepicker-continuous-scroll {
|
|
144
|
-
height: 100%; min-height: 0; overflow-y: auto;
|
|
145
|
-
overscroll-behavior: contain; scrollbar-width: none;
|
|
146
|
-
}
|
|
86
|
+
& .crisp-datepicker-continuous-scroll { height: 100%; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none; }
|
|
147
87
|
& .crisp-datepicker-continuous-scroll::-webkit-scrollbar { display: none; }
|
|
148
88
|
& .crisp-datepicker-continuous-content { display: flex; flex-direction: column; }
|
|
149
|
-
|
|
150
89
|
/* announced, never drawn */
|
|
151
|
-
& .crisp-datepicker-live-region {
|
|
152
|
-
position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
|
|
153
|
-
overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
|
|
154
|
-
}
|
|
155
|
-
|
|
90
|
+
& .crisp-datepicker-live-region { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
|
|
156
91
|
}
|
|
157
92
|
.crisp-datepicker--visibleRange_month {
|
|
158
93
|
|
|
159
94
|
}
|
|
160
95
|
.crisp-datepicker--visibleRange_twoMonths {
|
|
161
96
|
& .crisp-datepicker-months { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--crisp-space-6); }
|
|
162
|
-
|
|
163
|
-
|
|
97
|
+
& .crisp-datepicker-two-month-header { display: flex; align-items: center; justify-content: space-between; height: var(--crisp-size-menuRow); }
|
|
98
|
+
& .crisp-datepicker-two-month-label { color: var(--crisp-fg-primary); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); }
|
|
164
99
|
}
|
|
165
100
|
.crisp-datepicker--visibleRange_week {
|
|
166
101
|
|
package/dist/datepickerfield.css
CHANGED
|
@@ -1,27 +1,12 @@
|
|
|
1
1
|
.crisp-datepickerfield {
|
|
2
|
-
|
|
3
|
-
display: inline-flex; font-family: var(--crisp-
|
|
4
|
-
|
|
5
|
-
& .crisp-datepickerfield-trigger {
|
|
6
|
-
display: inline-flex; align-items: center; gap: var(--crisp-space-2);
|
|
7
|
-
box-sizing: border-box; height: 32px; padding: 0 var(--crisp-space-2-5); margin: 0;
|
|
8
|
-
border: none; border-radius: var(--crisp-radius-md); background: transparent;
|
|
9
|
-
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-fg-primary) 7%, transparent);
|
|
10
|
-
color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-lg);
|
|
11
|
-
white-space: nowrap; cursor: pointer;
|
|
12
|
-
}
|
|
2
|
+
display: inline-flex; font-family: var(--crisp-font-sans);
|
|
3
|
+
& .crisp-datepickerfield-trigger { display: inline-flex; align-items: center; gap: var(--crisp-space-2); box-sizing: border-box; height: 32px; padding: 0 var(--crisp-space-2-5); margin: 0; border: none; border-radius: var(--crisp-radius-md); background: transparent; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-fg-primary) 7%, transparent); color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-lg); white-space: nowrap; cursor: pointer; }
|
|
13
4
|
& .crisp-datepickerfield-trigger[data-ghost] { background: transparent; box-shadow: none; }
|
|
14
5
|
& .crisp-datepickerfield-trigger[data-ghost]:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, transparent); }
|
|
15
6
|
& .crisp-datepickerfield-trigger[data-placeholder] { color: var(--crisp-fg-muted); }
|
|
16
7
|
& .crisp-datepickerfield-trigger svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
|
|
17
|
-
|
|
18
8
|
& .crisp-datepickerfield-panel { padding: var(--crisp-space-2); width: 300px; }
|
|
19
9
|
& .crisp-datepickerfield-presets { display: flex; flex-wrap: wrap; gap: var(--crisp-space-1); margin-top: var(--crisp-space-2); }
|
|
20
|
-
& .crisp-datepickerfield-preset {
|
|
21
|
-
height: var(--crisp-size-chip); padding: 0 var(--crisp-space-2); border: none;
|
|
22
|
-
border-radius: var(--crisp-radius-chip); background: var(--crisp-bg-raised); color: var(--crisp-fg-primary);
|
|
23
|
-
font-family: inherit; font-size: var(--crisp-text-sm); cursor: pointer;
|
|
24
|
-
}
|
|
10
|
+
& .crisp-datepickerfield-preset { height: var(--crisp-size-chip); padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-chip); background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-sm); cursor: pointer; }
|
|
25
11
|
& .crisp-datepickerfield-preset:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 8%, transparent); }
|
|
26
|
-
|
|
27
12
|
}
|
|
@@ -1,29 +1,14 @@
|
|
|
1
1
|
@layer crisp-components {
|
|
2
2
|
.crisp-datepickerfield {
|
|
3
|
-
|
|
4
|
-
display: inline-flex; font-family: var(--crisp-
|
|
5
|
-
|
|
6
|
-
& .crisp-datepickerfield-trigger {
|
|
7
|
-
display: inline-flex; align-items: center; gap: var(--crisp-space-2);
|
|
8
|
-
box-sizing: border-box; height: 32px; padding: 0 var(--crisp-space-2-5); margin: 0;
|
|
9
|
-
border: none; border-radius: var(--crisp-radius-md); background: transparent;
|
|
10
|
-
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-fg-primary) 7%, transparent);
|
|
11
|
-
color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-lg);
|
|
12
|
-
white-space: nowrap; cursor: pointer;
|
|
13
|
-
}
|
|
3
|
+
display: inline-flex; font-family: var(--crisp-font-sans);
|
|
4
|
+
& .crisp-datepickerfield-trigger { display: inline-flex; align-items: center; gap: var(--crisp-space-2); box-sizing: border-box; height: 32px; padding: 0 var(--crisp-space-2-5); margin: 0; border: none; border-radius: var(--crisp-radius-md); background: transparent; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-fg-primary) 7%, transparent); color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-lg); white-space: nowrap; cursor: pointer; }
|
|
14
5
|
& .crisp-datepickerfield-trigger[data-ghost] { background: transparent; box-shadow: none; }
|
|
15
6
|
& .crisp-datepickerfield-trigger[data-ghost]:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, transparent); }
|
|
16
7
|
& .crisp-datepickerfield-trigger[data-placeholder] { color: var(--crisp-fg-muted); }
|
|
17
8
|
& .crisp-datepickerfield-trigger svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
|
|
18
|
-
|
|
19
9
|
& .crisp-datepickerfield-panel { padding: var(--crisp-space-2); width: 300px; }
|
|
20
10
|
& .crisp-datepickerfield-presets { display: flex; flex-wrap: wrap; gap: var(--crisp-space-1); margin-top: var(--crisp-space-2); }
|
|
21
|
-
& .crisp-datepickerfield-preset {
|
|
22
|
-
height: var(--crisp-size-chip); padding: 0 var(--crisp-space-2); border: none;
|
|
23
|
-
border-radius: var(--crisp-radius-chip); background: var(--crisp-bg-raised); color: var(--crisp-fg-primary);
|
|
24
|
-
font-family: inherit; font-size: var(--crisp-text-sm); cursor: pointer;
|
|
25
|
-
}
|
|
11
|
+
& .crisp-datepickerfield-preset { height: var(--crisp-size-chip); padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-chip); background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-sm); cursor: pointer; }
|
|
26
12
|
& .crisp-datepickerfield-preset:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 8%, transparent); }
|
|
27
|
-
|
|
28
13
|
}
|
|
29
14
|
}
|
package/dist/donutchart.css
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
.crisp-donutchart {
|
|
2
|
-
display: inline-flex; align-items: center; gap: var(--crisp-space-4); box-sizing: border-box; font-family: var(--crisp-font-sans);
|
|
3
|
-
-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
2
|
+
display: inline-flex; align-items: center; gap: var(--crisp-space-4); box-sizing: border-box; font-family: var(--crisp-font-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
4
3
|
& .crisp-donutchart-ring { position: relative; flex-shrink: 0; }
|
|
5
4
|
& .crisp-donutchart-svg { display: block; }
|
|
6
5
|
& .crisp-donutchart-seg { fill: none; transition: stroke-dasharray 0.3s ease; }
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
@layer crisp-components {
|
|
2
2
|
.crisp-donutchart {
|
|
3
|
-
display: inline-flex; align-items: center; gap: var(--crisp-space-4); box-sizing: border-box; font-family: var(--crisp-font-sans);
|
|
4
|
-
-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
3
|
+
display: inline-flex; align-items: center; gap: var(--crisp-space-4); box-sizing: border-box; font-family: var(--crisp-font-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
5
4
|
& .crisp-donutchart-ring { position: relative; flex-shrink: 0; }
|
|
6
5
|
& .crisp-donutchart-svg { display: block; }
|
|
7
6
|
& .crisp-donutchart-seg { fill: none; transition: stroke-dasharray 0.3s ease; }
|
package/dist/entitycard.css
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
.crisp-entitycard {
|
|
2
|
-
display: flex; flex-direction: column; box-sizing: border-box; width: 100%; min-width: 0; text-align: start;
|
|
3
|
-
padding: var(--crisp-space-3) var(--crisp-space-4); margin: 0; border: none; border-radius: var(--crisp-radius-xl);
|
|
4
|
-
background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-border-subtle); color: var(--crisp-fg-primary);
|
|
5
|
-
font-family: var(--crisp-font-sans); cursor: pointer; transition: box-shadow .12s ease, background-color .12s ease;
|
|
6
|
-
-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
7
|
-
|
|
2
|
+
display: flex; flex-direction: column; box-sizing: border-box; width: 100%; min-width: 0; text-align: start; padding: var(--crisp-space-3) var(--crisp-space-4); margin: 0; border: none; border-radius: var(--crisp-radius-xl); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-border-subtle); color: var(--crisp-fg-primary); font-family: var(--crisp-font-sans); cursor: pointer; transition: box-shadow .12s ease, background-color .12s ease; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
8
3
|
&:hover { box-shadow: inset 0 0 0 1px var(--crisp-border-default), 0 1px 2px rgba(0,0,0,0.04), 0 6px 16px -6px rgba(28,40,64,0.12); }
|
|
9
4
|
&:focus-visible { outline: 2px solid var(--crisp-bg-brand-solid); outline-offset: 2px; }
|
|
10
|
-
|
|
11
5
|
& .crisp-entitycard-author { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
|
|
12
6
|
& .crisp-entitycard-title { margin-top: var(--crisp-space-2); font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-semibold); letter-spacing: -0.1px; color: var(--crisp-fg-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
13
7
|
& .crisp-entitycard-excerpt { margin-top: var(--crisp-space-1); font-size: var(--crisp-text-md); line-height: 18px; color: var(--crisp-fg-muted); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
@layer crisp-components {
|
|
2
2
|
.crisp-entitycard {
|
|
3
|
-
display: flex; flex-direction: column; box-sizing: border-box; width: 100%; min-width: 0; text-align: start;
|
|
4
|
-
padding: var(--crisp-space-3) var(--crisp-space-4); margin: 0; border: none; border-radius: var(--crisp-radius-xl);
|
|
5
|
-
background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-border-subtle); color: var(--crisp-fg-primary);
|
|
6
|
-
font-family: var(--crisp-font-sans); cursor: pointer; transition: box-shadow .12s ease, background-color .12s ease;
|
|
7
|
-
-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
8
|
-
|
|
3
|
+
display: flex; flex-direction: column; box-sizing: border-box; width: 100%; min-width: 0; text-align: start; padding: var(--crisp-space-3) var(--crisp-space-4); margin: 0; border: none; border-radius: var(--crisp-radius-xl); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-border-subtle); color: var(--crisp-fg-primary); font-family: var(--crisp-font-sans); cursor: pointer; transition: box-shadow .12s ease, background-color .12s ease; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
|
|
9
4
|
&:hover { box-shadow: inset 0 0 0 1px var(--crisp-border-default), 0 1px 2px rgba(0,0,0,0.04), 0 6px 16px -6px rgba(28,40,64,0.12); }
|
|
10
5
|
&:focus-visible { outline: 2px solid var(--crisp-bg-brand-solid); outline-offset: 2px; }
|
|
11
|
-
|
|
12
6
|
& .crisp-entitycard-author { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
|
|
13
7
|
& .crisp-entitycard-title { margin-top: var(--crisp-space-2); font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-semibold); letter-spacing: -0.1px; color: var(--crisp-fg-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
14
8
|
& .crisp-entitycard-excerpt { margin-top: var(--crisp-space-1); font-size: var(--crisp-text-md); line-height: 18px; color: var(--crisp-fg-muted); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
|