@gunkin/uiify 0.0.14-alpha → 0.0.16-alpha
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 +46 -1
- package/agents/components.md +80 -0
- package/agents/index.md +179 -0
- package/agents/reference/components/accordion.md +35 -0
- package/agents/reference/components/alert-modal.md +63 -0
- package/agents/reference/components/breadcrumb.md +72 -0
- package/agents/reference/components/button.md +40 -0
- package/agents/reference/components/candle-chart.md +107 -0
- package/agents/reference/components/carousel.md +274 -0
- package/agents/reference/components/checkbox.md +32 -0
- package/agents/reference/components/collapsible.md +26 -0
- package/agents/reference/components/color-picker.md +33 -0
- package/agents/reference/components/combobox.md +193 -0
- package/agents/reference/components/context-menu.md +129 -0
- package/agents/reference/components/drawer.md +215 -0
- package/agents/reference/components/dropdown-menu.md +178 -0
- package/agents/reference/components/field.md +76 -0
- package/agents/reference/components/file-upload.md +131 -0
- package/agents/reference/components/form.md +28 -0
- package/agents/reference/components/header.md +44 -0
- package/agents/reference/components/hover-card.md +54 -0
- package/agents/reference/components/input.md +29 -0
- package/agents/reference/components/line-chart.md +104 -0
- package/agents/reference/components/modal.md +106 -0
- package/agents/reference/components/number-field.md +60 -0
- package/agents/reference/components/otp-input.md +68 -0
- package/agents/reference/components/pagination.md +112 -0
- package/agents/reference/components/popup.md +111 -0
- package/agents/reference/components/radio-group.md +37 -0
- package/agents/reference/components/rating.md +43 -0
- package/agents/reference/components/segmented-control.md +51 -0
- package/agents/reference/components/select.md +60 -0
- package/agents/reference/components/skeleton.md +29 -0
- package/agents/reference/components/slider.md +71 -0
- package/agents/reference/components/spinner.md +34 -0
- package/agents/reference/components/switch.md +27 -0
- package/agents/reference/components/table-of-contents.md +185 -0
- package/agents/reference/components/table.md +189 -0
- package/agents/reference/components/tabs.md +42 -0
- package/agents/reference/components/tags-input.md +123 -0
- package/agents/reference/components/textarea.md +31 -0
- package/agents/reference/components/toast.md +151 -0
- package/agents/reference/components/toggle-group.md +50 -0
- package/agents/reference/components/toggle.md +26 -0
- package/agents/reference/components/toolbar.md +69 -0
- package/agents/reference/components/tooltip.md +76 -0
- package/agents/reference/components/virtual-scroll.md +97 -0
- package/agents/reference/elements/choice.md +55 -0
- package/agents/reference/elements/details.md +45 -0
- package/agents/reference/elements/dialog.md +43 -0
- package/agents/reference/elements/invoker.md +28 -0
- package/agents/reference/elements/popover.md +53 -0
- package/dist/components/alert-modal/AlertModalParts.js +1 -1
- package/dist/components/alert-modal/AlertModalParts.js.map +1 -1
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.js +5 -3
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/index.d.ts +1 -1
- package/dist/components/button/index.d.ts.map +1 -1
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button/types.d.ts +5 -4
- package/dist/components/button/types.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.js +8 -0
- package/dist/components/carousel/CarouselMarkup.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +0 -2
- package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/dist/components/dropdown-menu/types.d.ts +0 -1
- package/dist/components/dropdown-menu/types.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/internal/choice-family/ChoiceGroup.d.ts.map +1 -1
- package/dist/components/internal/choice-family/ChoiceGroup.js +2 -3
- package/dist/components/internal/choice-family/ChoiceGroup.js.map +1 -1
- package/dist/components/internal/choice-family/types.d.ts +2 -2
- package/dist/components/internal/choice-family/types.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +11 -0
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/PaginationShell.d.ts.map +1 -1
- package/dist/components/pagination/PaginationShell.js +26 -1
- package/dist/components/pagination/PaginationShell.js.map +1 -1
- package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -1
- package/dist/components/segmented-control/SegmentedControl.js +1 -0
- package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.d.ts.map +1 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.js +1 -0
- package/dist/components/segmented-control/client/SegmentedControlClient.js.map +1 -1
- package/dist/components/table-of-contents/TableOfContents.d.ts +22 -0
- package/dist/components/table-of-contents/TableOfContents.d.ts.map +1 -0
- package/dist/components/table-of-contents/TableOfContents.js +142 -0
- package/dist/components/table-of-contents/TableOfContents.js.map +1 -0
- package/dist/components/table-of-contents/client/TableOfContentsClient.d.ts +18 -0
- package/dist/components/table-of-contents/client/TableOfContentsClient.d.ts.map +1 -0
- package/dist/components/table-of-contents/client/TableOfContentsClient.js +140 -0
- package/dist/components/table-of-contents/client/TableOfContentsClient.js.map +1 -0
- package/dist/components/table-of-contents/client/TableOfContentsClientParts.d.ts +7 -0
- package/dist/components/table-of-contents/client/TableOfContentsClientParts.d.ts.map +1 -0
- package/dist/components/table-of-contents/client/TableOfContentsClientParts.js +48 -0
- package/dist/components/table-of-contents/client/TableOfContentsClientParts.js.map +1 -0
- package/dist/components/table-of-contents/client/index.d.ts +5 -0
- package/dist/components/table-of-contents/client/index.d.ts.map +1 -0
- package/dist/components/table-of-contents/client/index.js +23 -0
- package/dist/components/table-of-contents/client/index.js.map +1 -0
- package/dist/components/table-of-contents/client/table-of-contents-context.d.ts +3 -0
- package/dist/components/table-of-contents/client/table-of-contents-context.d.ts.map +1 -0
- package/dist/components/table-of-contents/client/table-of-contents-context.js +7 -0
- package/dist/components/table-of-contents/client/table-of-contents-context.js.map +1 -0
- package/dist/components/table-of-contents/client/table-of-contents-interactions.d.ts +3 -0
- package/dist/components/table-of-contents/client/table-of-contents-interactions.d.ts.map +1 -0
- package/dist/components/table-of-contents/client/table-of-contents-interactions.js +144 -0
- package/dist/components/table-of-contents/client/table-of-contents-interactions.js.map +1 -0
- package/dist/components/table-of-contents/client/table-of-contents-pointer.d.ts +3 -0
- package/dist/components/table-of-contents/client/table-of-contents-pointer.d.ts.map +1 -0
- package/dist/components/table-of-contents/client/table-of-contents-pointer.js +94 -0
- package/dist/components/table-of-contents/client/table-of-contents-pointer.js.map +1 -0
- package/dist/components/table-of-contents/client.d.ts +1 -0
- package/dist/components/table-of-contents/client.js +1 -0
- package/dist/components/table-of-contents/index.d.ts +3 -0
- package/dist/components/table-of-contents/index.d.ts.map +1 -0
- package/dist/components/table-of-contents/index.js +21 -0
- package/dist/components/table-of-contents/index.js.map +1 -0
- package/dist/components/table-of-contents/scrollspy-selection.d.ts +4 -0
- package/dist/components/table-of-contents/scrollspy-selection.d.ts.map +1 -0
- package/dist/components/table-of-contents/scrollspy-selection.js +31 -0
- package/dist/components/table-of-contents/scrollspy-selection.js.map +1 -0
- package/dist/components/table-of-contents/scrollspy.d.ts +4 -0
- package/dist/components/table-of-contents/scrollspy.d.ts.map +1 -0
- package/dist/components/table-of-contents/scrollspy.js +178 -0
- package/dist/components/table-of-contents/scrollspy.js.map +1 -0
- package/dist/components/table-of-contents/types.d.ts +123 -0
- package/dist/components/table-of-contents/types.d.ts.map +1 -0
- package/dist/components/table-of-contents/types.js +1 -0
- package/dist/components/table-of-contents/types.js.map +1 -0
- package/dist/components/table-of-contents.d.ts +1 -0
- package/dist/components/table-of-contents.js +1 -0
- package/dist/components/toggle/Toggle.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.js +12 -1
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup.d.ts +1 -1
- package/dist/components/toggle-group/ToggleGroup.d.ts.map +1 -1
- package/dist/components/toggle-group/ToggleGroup.js +6 -1
- package/dist/components/toggle-group/ToggleGroup.js.map +1 -1
- package/dist/components/toggle-group/client/ToggleGroupClient.d.ts +1 -1
- package/dist/components/toggle-group/client/ToggleGroupClient.d.ts.map +1 -1
- package/dist/components/toggle-group/client/ToggleGroupClient.js +19 -6
- package/dist/components/toggle-group/client/ToggleGroupClient.js.map +1 -1
- package/dist/components/toggle-group/types.d.ts +3 -3
- package/dist/components/toggle-group/types.d.ts.map +1 -1
- package/dist/components/toolbar/ToolbarShell.d.ts.map +1 -1
- package/dist/components/toolbar/ToolbarShell.js +5 -2
- package/dist/components/toolbar/ToolbarShell.js.map +1 -1
- package/dist/components/toolbar/types.d.ts +2 -1
- package/dist/components/toolbar/types.d.ts.map +1 -1
- package/dist/core/render-native-invoker.d.ts +1 -1
- package/dist/core/render-native-invoker.d.ts.map +1 -1
- package/dist/core/render-native-invoker.js.map +1 -1
- package/dist/styles/index.css +1 -1
- package/package.json +4 -2
- package/skills/uiify/SKILL.md +167 -0
- package/skills/uiify/scripts/lint.mjs +56 -0
- package/skills/uiify/scripts/static.mjs +95 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/components/segmented-control/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAwB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EACF,KAAK,EACL,YAAY,EACZ,QAAgB,EAChB,WAA0B,EAC1B,SAAiB,EACjB,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,GAClC,EAAE,qBAAqB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/components/segmented-control/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAwB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EACF,KAAK,EACL,YAAY,EACZ,QAAgB,EAChB,WAA0B,EAC1B,SAAiB,EACjB,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,GAClC,EAAE,qBAAqB,GAAG,YAAY,CAyBtC;yBAnCe,gBAAgB"}
|
|
@@ -24,6 +24,7 @@ function SegmentedControl({
|
|
|
24
24
|
isChecked: (item) => item.value === defaultValue,
|
|
25
25
|
kind: "single",
|
|
26
26
|
namespace: "segmented-control",
|
|
27
|
+
labelAttributes: { "data-uiify-button": "", "data-variant": "ghost", "data-size": "sm" },
|
|
27
28
|
orientation,
|
|
28
29
|
rootAttributes: {
|
|
29
30
|
role: "radiogroup",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/segmented-control/SegmentedControl.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport { ChoiceGroup } from \"../internal/choice-family/ChoiceGroup.js\";\nimport type { SegmentedControlItem, SegmentedControlProps } from \"./types.js\";\n\nexport function SegmentedControl({\n id,\n items,\n defaultValue,\n disabled = false,\n orientation = \"horizontal\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: SegmentedControlProps): ReactElement {\n const resolvedItems = items.map((item) => ({\n ...item,\n disabled: disabled || item.disabled === true,\n }));\n\n return (\n <ChoiceGroup<SegmentedControlItem>\n {...(className !== undefined ? { className } : {})}\n id={id}\n items={resolvedItems}\n isChecked={(item) => item.value === defaultValue}\n kind=\"single\"\n namespace=\"segmented-control\"\n orientation={orientation}\n rootAttributes={{\n role: \"radiogroup\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-full-width\": fullWidth ? \"\" : undefined,\n }}\n />\n );\n}\nSegmentedControl.displayName = \"SegmentedControl\";\n"],"mappings":"AAqBI;AApBJ,SAAS,mBAAmB;AAGrB,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AACrB,GAAwC;AACtC,QAAM,gBAAgB,MAAM,IAAI,CAAC,UAAU;AAAA,IACzC,GAAG;AAAA,IACH,UAAU,YAAY,KAAK,aAAa;AAAA,EAC1C,EAAE;AAEF,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAI,cAAc,SAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MAChD;AAAA,MACA,OAAO;AAAA,MACP,WAAW,CAAC,SAAS,KAAK,UAAU;AAAA,MACpC,MAAK;AAAA,MACL,WAAU;AAAA,MACV;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,cAAc;AAAA,QACd,mBAAmB;AAAA,QACnB,iBAAiB,WAAW,KAAK;AAAA,QACjC,mBAAmB,YAAY,KAAK;AAAA,MACtC;AAAA;AAAA,EACF;AAEJ;AACA,iBAAiB,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/segmented-control/SegmentedControl.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport { ChoiceGroup } from \"../internal/choice-family/ChoiceGroup.js\";\nimport type { SegmentedControlItem, SegmentedControlProps } from \"./types.js\";\n\nexport function SegmentedControl({\n id,\n items,\n defaultValue,\n disabled = false,\n orientation = \"horizontal\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: SegmentedControlProps): ReactElement {\n const resolvedItems = items.map((item) => ({\n ...item,\n disabled: disabled || item.disabled === true,\n }));\n\n return (\n <ChoiceGroup<SegmentedControlItem>\n {...(className !== undefined ? { className } : {})}\n id={id}\n items={resolvedItems}\n isChecked={(item) => item.value === defaultValue}\n kind=\"single\"\n namespace=\"segmented-control\"\n labelAttributes={{ \"data-uiify-button\": \"\", \"data-variant\": \"ghost\", \"data-size\": \"sm\" }}\n orientation={orientation}\n rootAttributes={{\n role: \"radiogroup\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-full-width\": fullWidth ? \"\" : undefined,\n }}\n />\n );\n}\nSegmentedControl.displayName = \"SegmentedControl\";\n"],"mappings":"AAqBI;AApBJ,SAAS,mBAAmB;AAGrB,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AACrB,GAAwC;AACtC,QAAM,gBAAgB,MAAM,IAAI,CAAC,UAAU;AAAA,IACzC,GAAG;AAAA,IACH,UAAU,YAAY,KAAK,aAAa;AAAA,EAC1C,EAAE;AAEF,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAI,cAAc,SAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MAChD;AAAA,MACA,OAAO;AAAA,MACP,WAAW,CAAC,SAAS,KAAK,UAAU;AAAA,MACpC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,iBAAiB,EAAE,qBAAqB,IAAI,gBAAgB,SAAS,aAAa,KAAK;AAAA,MACvF;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,cAAc;AAAA,QACd,mBAAmB;AAAA,QACnB,iBAAiB,WAAW,KAAK;AAAA,QACjC,mBAAmB,YAAY,KAAK;AAAA,MACtC;AAAA;AAAA,EACF;AAEJ;AACA,iBAAiB,cAAc;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControlClient.d.ts","sourceRoot":"","sources":["../../../../src/components/segmented-control/client/SegmentedControlClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,2BAA2B,EAAwB,MAAM,aAAa,CAAC;AAErF,wBAAgB,sBAAsB,CAAC,EACrC,EAAE,EACF,KAAK,EACL,KAAK,EAAE,eAAe,EACtB,YAAY,EACZ,aAAa,EACb,QAAgB,EAChB,WAA0B,EAC1B,SAAiB,EACjB,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,GAClC,EAAE,2BAA2B,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"SegmentedControlClient.d.ts","sourceRoot":"","sources":["../../../../src/components/segmented-control/client/SegmentedControlClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,2BAA2B,EAAwB,MAAM,aAAa,CAAC;AAErF,wBAAgB,sBAAsB,CAAC,EACrC,EAAE,EACF,KAAK,EACL,KAAK,EAAE,eAAe,EACtB,YAAY,EACZ,aAAa,EACb,QAAgB,EAChB,WAA0B,EAC1B,SAAiB,EACjB,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,GAClC,EAAE,2BAA2B,GAAG,YAAY,CAkC5C;yBA9Ce,sBAAsB"}
|
|
@@ -36,6 +36,7 @@ function SegmentedControlClient({
|
|
|
36
36
|
isControlled: controlledValue !== void 0,
|
|
37
37
|
kind: "single",
|
|
38
38
|
namespace: "segmented-control",
|
|
39
|
+
labelAttributes: { "data-uiify-button": "", "data-variant": "ghost", "data-size": "sm" },
|
|
39
40
|
onItemChange: (item) => setSelectedValue(item.value),
|
|
40
41
|
orientation,
|
|
41
42
|
rootAttributes: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/segmented-control/client/SegmentedControlClient.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactElement } from \"react\";\nimport { useControllableState } from \"@gunkin/uiify/hooks\";\nimport { ChoiceGroup } from \"../../internal/choice-family/ChoiceGroup.js\";\nimport type { SegmentedControlClientProps, SegmentedControlItem } from \"../types.js\";\n\nexport function SegmentedControlClient({\n id,\n items,\n value: controlledValue,\n defaultValue,\n onValueChange,\n disabled = false,\n orientation = \"horizontal\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: SegmentedControlClientProps): ReactElement {\n const [selectedValue, setSelectedValue] = useControllableState<string | undefined>({\n defaultValue,\n onChange: (nextValue) => {\n if (nextValue !== undefined) onValueChange?.(nextValue);\n },\n value: controlledValue,\n });\n const resolvedItems = items.map((item) => ({\n ...item,\n disabled: disabled || item.disabled === true,\n }));\n\n return (\n <ChoiceGroup<SegmentedControlItem>\n {...(className !== undefined ? { className } : {})}\n id={id}\n items={resolvedItems}\n isChecked={(item) => item.value === selectedValue}\n isControlled={controlledValue !== undefined}\n kind=\"single\"\n namespace=\"segmented-control\"\n onItemChange={(item) => setSelectedValue(item.value)}\n orientation={orientation}\n rootAttributes={{\n role: \"radiogroup\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-full-width\": fullWidth ? \"\" : undefined,\n }}\n />\n );\n}\n\nSegmentedControlClient.displayName = \"SegmentedControlClient\";\n"],"mappings":";AAiCI;AA9BJ,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAGrB,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AACrB,GAA8C;AAC5C,QAAM,CAAC,eAAe,gBAAgB,IAAI,qBAAyC;AAAA,IACjF;AAAA,IACA,UAAU,CAAC,cAAc;AACvB,UAAI,cAAc,OAAW,iBAAgB,SAAS;AAAA,IACxD;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACD,QAAM,gBAAgB,MAAM,IAAI,CAAC,UAAU;AAAA,IACzC,GAAG;AAAA,IACH,UAAU,YAAY,KAAK,aAAa;AAAA,EAC1C,EAAE;AAEF,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAI,cAAc,SAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MAChD;AAAA,MACA,OAAO;AAAA,MACP,WAAW,CAAC,SAAS,KAAK,UAAU;AAAA,MACpC,cAAc,oBAAoB;AAAA,MAClC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,cAAc,CAAC,SAAS,iBAAiB,KAAK,KAAK;AAAA,MACnD;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,cAAc;AAAA,QACd,mBAAmB;AAAA,QACnB,iBAAiB,WAAW,KAAK;AAAA,QACjC,mBAAmB,YAAY,KAAK;AAAA,MACtC;AAAA;AAAA,EACF;AAEJ;AAEA,uBAAuB,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/segmented-control/client/SegmentedControlClient.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactElement } from \"react\";\nimport { useControllableState } from \"@gunkin/uiify/hooks\";\nimport { ChoiceGroup } from \"../../internal/choice-family/ChoiceGroup.js\";\nimport type { SegmentedControlClientProps, SegmentedControlItem } from \"../types.js\";\n\nexport function SegmentedControlClient({\n id,\n items,\n value: controlledValue,\n defaultValue,\n onValueChange,\n disabled = false,\n orientation = \"horizontal\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: SegmentedControlClientProps): ReactElement {\n const [selectedValue, setSelectedValue] = useControllableState<string | undefined>({\n defaultValue,\n onChange: (nextValue) => {\n if (nextValue !== undefined) onValueChange?.(nextValue);\n },\n value: controlledValue,\n });\n const resolvedItems = items.map((item) => ({\n ...item,\n disabled: disabled || item.disabled === true,\n }));\n\n return (\n <ChoiceGroup<SegmentedControlItem>\n {...(className !== undefined ? { className } : {})}\n id={id}\n items={resolvedItems}\n isChecked={(item) => item.value === selectedValue}\n isControlled={controlledValue !== undefined}\n kind=\"single\"\n namespace=\"segmented-control\"\n labelAttributes={{ \"data-uiify-button\": \"\", \"data-variant\": \"ghost\", \"data-size\": \"sm\" }}\n onItemChange={(item) => setSelectedValue(item.value)}\n orientation={orientation}\n rootAttributes={{\n role: \"radiogroup\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-full-width\": fullWidth ? \"\" : undefined,\n }}\n />\n );\n}\n\nSegmentedControlClient.displayName = \"SegmentedControlClient\";\n"],"mappings":";AAiCI;AA9BJ,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAGrB,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AACrB,GAA8C;AAC5C,QAAM,CAAC,eAAe,gBAAgB,IAAI,qBAAyC;AAAA,IACjF;AAAA,IACA,UAAU,CAAC,cAAc;AACvB,UAAI,cAAc,OAAW,iBAAgB,SAAS;AAAA,IACxD;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACD,QAAM,gBAAgB,MAAM,IAAI,CAAC,UAAU;AAAA,IACzC,GAAG;AAAA,IACH,UAAU,YAAY,KAAK,aAAa;AAAA,EAC1C,EAAE;AAEF,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAI,cAAc,SAAY,EAAE,UAAU,IAAI,CAAC;AAAA,MAChD;AAAA,MACA,OAAO;AAAA,MACP,WAAW,CAAC,SAAS,KAAK,UAAU;AAAA,MACpC,cAAc,oBAAoB;AAAA,MAClC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,iBAAiB,EAAE,qBAAqB,IAAI,gBAAgB,SAAS,aAAa,KAAK;AAAA,MACvF,cAAc,CAAC,SAAS,iBAAiB,KAAK,KAAK;AAAA,MACnD;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,cAAc;AAAA,QACd,mBAAmB;AAAA,QACnB,iBAAiB,WAAW,KAAK;AAAA,QACjC,mBAAmB,YAAY,KAAK;AAAA,MACtC;AAAA;AAAA,EACF;AAEJ;AAEA,uBAAuB,cAAc;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ElementType, ReactElement } from "react";
|
|
2
|
+
import type { TableOfContentsRootProps, TableOfContentsTriggerProps, TableOfContentsRailProps, TableOfContentsIndicatorProps, TableOfContentsContentProps, TableOfContentsListProps, TableOfContentsLinkProps } from "./types.js";
|
|
3
|
+
export declare function TableOfContentsRoot<TAs extends ElementType = "nav">(props: TableOfContentsRootProps<TAs>): ReactElement | null;
|
|
4
|
+
export declare function TableOfContentsTrigger<TAs extends ElementType = "button">(props: TableOfContentsTriggerProps<TAs>): ReactElement;
|
|
5
|
+
export declare namespace TableOfContentsTrigger {
|
|
6
|
+
var displayName: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function TableOfContentsRail<TAs extends ElementType = "span">(props: TableOfContentsRailProps<TAs>): ReactElement | null;
|
|
9
|
+
export declare function TableOfContentsIndicator<TAs extends ElementType = "span">(props: TableOfContentsIndicatorProps<TAs>): ReactElement | null;
|
|
10
|
+
export declare function TableOfContentsContent<TAs extends ElementType = "div">(props: TableOfContentsContentProps<TAs>): ReactElement | null;
|
|
11
|
+
export declare function TableOfContentsList<TAs extends ElementType = "div">(props: TableOfContentsListProps<TAs>): ReactElement | null;
|
|
12
|
+
export declare function TableOfContentsLink<TAs extends ElementType = "a">(props: TableOfContentsLinkProps<TAs>): ReactElement | null;
|
|
13
|
+
export declare const TableOfContents: {
|
|
14
|
+
Root: typeof TableOfContentsRoot;
|
|
15
|
+
Trigger: typeof TableOfContentsTrigger;
|
|
16
|
+
Rail: typeof TableOfContentsRail;
|
|
17
|
+
Indicator: typeof TableOfContentsIndicator;
|
|
18
|
+
Content: typeof TableOfContentsContent;
|
|
19
|
+
List: typeof TableOfContentsList;
|
|
20
|
+
Link: typeof TableOfContentsLink;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=TableOfContents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableOfContents.d.ts","sourceRoot":"","sources":["../../../src/components/table-of-contents/TableOfContents.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMtE,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAMpB,wBAAgB,mBAAmB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACjE,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GACnC,YAAY,GAAG,IAAI,CASrB;AACD,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EACvE,KAAK,EAAE,2BAA2B,CAAC,GAAG,CAAC,GACtC,YAAY,CAUd;yBAZe,sBAAsB;;;AAatC,wBAAgB,mBAAmB,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,EAClE,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GACnC,YAAY,GAAG,IAAI,CASrB;AACD,wBAAgB,wBAAwB,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,EACvE,KAAK,EAAE,6BAA6B,CAAC,GAAG,CAAC,GACxC,YAAY,GAAG,IAAI,CAuBrB;AACD,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACpE,KAAK,EAAE,2BAA2B,CAAC,GAAG,CAAC,GACtC,YAAY,GAAG,IAAI,CAsBrB;AACD,wBAAgB,mBAAmB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACjE,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GACnC,YAAY,GAAG,IAAI,CASrB;AACD,wBAAgB,mBAAmB,CAAC,GAAG,SAAS,WAAW,GAAG,GAAG,EAC/D,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GACnC,YAAY,GAAG,IAAI,CAuBrB;AAED,eAAO,MAAM,eAAe;;;;;;;;CAQ3B,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
import { useRenderElement } from "../../core/render.js";
|
|
3
|
+
import {
|
|
4
|
+
createAnchorPositionerProps,
|
|
5
|
+
createAnchorTriggerProps
|
|
6
|
+
} from "../../core/anchor-position/props.js";
|
|
7
|
+
function anchorFor(target) {
|
|
8
|
+
return `--uiify-toc-${Array.from(target, (c) => c.codePointAt(0)?.toString(16)).join("-")}`;
|
|
9
|
+
}
|
|
10
|
+
function TableOfContentsRoot(props) {
|
|
11
|
+
const { as, render, ...rest } = props;
|
|
12
|
+
return useRenderElement({
|
|
13
|
+
as,
|
|
14
|
+
render,
|
|
15
|
+
defaultTag: "nav",
|
|
16
|
+
props: { ...rest, "data-uiify-table-of-contents": "" },
|
|
17
|
+
state: {}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function TableOfContentsTrigger(props) {
|
|
21
|
+
const { as, target, ...rest } = props;
|
|
22
|
+
return createElement(as ?? "button", {
|
|
23
|
+
...rest,
|
|
24
|
+
...createAnchorTriggerProps(anchorFor(target)),
|
|
25
|
+
"data-part": "trigger",
|
|
26
|
+
type: "button",
|
|
27
|
+
popoverTarget: target,
|
|
28
|
+
popoverTargetAction: "toggle"
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function TableOfContentsRail(props) {
|
|
32
|
+
const { as, render, ...rest } = props;
|
|
33
|
+
return useRenderElement({
|
|
34
|
+
as,
|
|
35
|
+
render,
|
|
36
|
+
defaultTag: "span",
|
|
37
|
+
props: { ...rest, "aria-hidden": true, "data-part": "rail" },
|
|
38
|
+
state: {}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function TableOfContentsIndicator(props) {
|
|
42
|
+
const {
|
|
43
|
+
as,
|
|
44
|
+
render,
|
|
45
|
+
value: _value,
|
|
46
|
+
level = 2,
|
|
47
|
+
selected = false,
|
|
48
|
+
style,
|
|
49
|
+
...rest
|
|
50
|
+
} = props;
|
|
51
|
+
return useRenderElement({
|
|
52
|
+
as,
|
|
53
|
+
render,
|
|
54
|
+
defaultTag: "span",
|
|
55
|
+
props: {
|
|
56
|
+
...rest,
|
|
57
|
+
style: { ...style, "--uiify-toc-level": level },
|
|
58
|
+
"aria-hidden": true,
|
|
59
|
+
"data-part": "indicator",
|
|
60
|
+
"data-selected": selected ? "" : void 0
|
|
61
|
+
},
|
|
62
|
+
state: { selected }
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function TableOfContentsContent(props) {
|
|
66
|
+
const {
|
|
67
|
+
as,
|
|
68
|
+
render,
|
|
69
|
+
side = "left",
|
|
70
|
+
align = "start",
|
|
71
|
+
id,
|
|
72
|
+
...rest
|
|
73
|
+
} = props;
|
|
74
|
+
return useRenderElement({
|
|
75
|
+
as,
|
|
76
|
+
render,
|
|
77
|
+
defaultTag: "div",
|
|
78
|
+
props: {
|
|
79
|
+
...rest,
|
|
80
|
+
...createAnchorPositionerProps({ anchorName: anchorFor(id), side, align }),
|
|
81
|
+
id,
|
|
82
|
+
popover: "auto",
|
|
83
|
+
"data-part": "content"
|
|
84
|
+
},
|
|
85
|
+
state: {}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function TableOfContentsList(props) {
|
|
89
|
+
const { as, render, ...rest } = props;
|
|
90
|
+
return useRenderElement({
|
|
91
|
+
as,
|
|
92
|
+
render,
|
|
93
|
+
defaultTag: "div",
|
|
94
|
+
props: { ...rest, "data-part": "list" },
|
|
95
|
+
state: {}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function TableOfContentsLink(props) {
|
|
99
|
+
const {
|
|
100
|
+
as,
|
|
101
|
+
render,
|
|
102
|
+
level = 2,
|
|
103
|
+
selected,
|
|
104
|
+
style,
|
|
105
|
+
...rest
|
|
106
|
+
} = props;
|
|
107
|
+
const current = selected ?? rest["aria-current"] === "location";
|
|
108
|
+
return useRenderElement({
|
|
109
|
+
as,
|
|
110
|
+
render,
|
|
111
|
+
defaultTag: "a",
|
|
112
|
+
props: {
|
|
113
|
+
...rest,
|
|
114
|
+
style: { ...style, "--uiify-toc-level": level },
|
|
115
|
+
"data-part": "link",
|
|
116
|
+
"data-selected": current ? "" : void 0,
|
|
117
|
+
...selected === void 0 ? {} : { "aria-current": selected ? "location" : void 0 }
|
|
118
|
+
},
|
|
119
|
+
state: { selected: current }
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const TableOfContents = {
|
|
123
|
+
Root: TableOfContentsRoot,
|
|
124
|
+
Trigger: TableOfContentsTrigger,
|
|
125
|
+
Rail: TableOfContentsRail,
|
|
126
|
+
Indicator: TableOfContentsIndicator,
|
|
127
|
+
Content: TableOfContentsContent,
|
|
128
|
+
List: TableOfContentsList,
|
|
129
|
+
Link: TableOfContentsLink
|
|
130
|
+
};
|
|
131
|
+
TableOfContentsTrigger.displayName = "TableOfContentsTrigger";
|
|
132
|
+
export {
|
|
133
|
+
TableOfContents,
|
|
134
|
+
TableOfContentsContent,
|
|
135
|
+
TableOfContentsIndicator,
|
|
136
|
+
TableOfContentsLink,
|
|
137
|
+
TableOfContentsList,
|
|
138
|
+
TableOfContentsRail,
|
|
139
|
+
TableOfContentsRoot,
|
|
140
|
+
TableOfContentsTrigger
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=TableOfContents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/table-of-contents/TableOfContents.tsx"],"sourcesContent":["// Informed by studying Mantine TableOfContents, Fumadocs TOC and Tocbot.\n// Independently written; see NOTICE and the clean-room research notes.\nimport { createElement } from \"react\";\nimport type { CSSProperties, ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"../../core/render.js\";\nimport {\n createAnchorPositionerProps,\n createAnchorTriggerProps,\n} from \"../../core/anchor-position/props.js\";\nimport type {\n TableOfContentsRootProps,\n TableOfContentsTriggerProps,\n TableOfContentsRailProps,\n TableOfContentsIndicatorProps,\n TableOfContentsContentProps,\n TableOfContentsListProps,\n TableOfContentsLinkProps,\n} from \"./types.js\";\n\nfunction anchorFor(target: string): string {\n return `--uiify-toc-${Array.from(target, (c) => c.codePointAt(0)?.toString(16)).join(\"-\")}`;\n}\n\nexport function TableOfContentsRoot<TAs extends ElementType = \"nav\">(\n props: TableOfContentsRootProps<TAs>,\n): ReactElement | null {\n const { as, render, ...rest } = props as TableOfContentsRootProps<\"nav\">;\n return useRenderElement({\n as,\n render,\n defaultTag: \"nav\",\n props: { ...rest, \"data-uiify-table-of-contents\": \"\" },\n state: {},\n });\n}\nexport function TableOfContentsTrigger<TAs extends ElementType = \"button\">(\n props: TableOfContentsTriggerProps<TAs>,\n): ReactElement {\n const { as, target, ...rest } = props as TableOfContentsTriggerProps<\"button\">;\n return createElement(as ?? \"button\", {\n ...rest,\n ...createAnchorTriggerProps(anchorFor(target)),\n \"data-part\": \"trigger\",\n type: \"button\",\n popoverTarget: target,\n popoverTargetAction: \"toggle\",\n });\n}\nexport function TableOfContentsRail<TAs extends ElementType = \"span\">(\n props: TableOfContentsRailProps<TAs>,\n): ReactElement | null {\n const { as, render, ...rest } = props as TableOfContentsRailProps<\"span\">;\n return useRenderElement({\n as,\n render,\n defaultTag: \"span\",\n props: { ...rest, \"aria-hidden\": true, \"data-part\": \"rail\" },\n state: {},\n });\n}\nexport function TableOfContentsIndicator<TAs extends ElementType = \"span\">(\n props: TableOfContentsIndicatorProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n value: _value,\n level = 2,\n selected = false,\n style,\n ...rest\n } = props as TableOfContentsIndicatorProps<\"span\">;\n return useRenderElement({\n as,\n render,\n defaultTag: \"span\",\n props: {\n ...rest,\n style: { ...style, \"--uiify-toc-level\": level } as CSSProperties,\n \"aria-hidden\": true,\n \"data-part\": \"indicator\",\n \"data-selected\": selected ? \"\" : undefined,\n },\n state: { selected },\n });\n}\nexport function TableOfContentsContent<TAs extends ElementType = \"div\">(\n props: TableOfContentsContentProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n side = \"left\",\n align = \"start\",\n id,\n ...rest\n } = props as TableOfContentsContentProps<\"div\">;\n return useRenderElement({\n as,\n render,\n defaultTag: \"div\",\n props: {\n ...rest,\n ...createAnchorPositionerProps({ anchorName: anchorFor(id), side, align }),\n id,\n popover: \"auto\",\n \"data-part\": \"content\",\n },\n state: {},\n });\n}\nexport function TableOfContentsList<TAs extends ElementType = \"div\">(\n props: TableOfContentsListProps<TAs>,\n): ReactElement | null {\n const { as, render, ...rest } = props as TableOfContentsListProps<\"div\">;\n return useRenderElement({\n as,\n render,\n defaultTag: \"div\",\n props: { ...rest, \"data-part\": \"list\" },\n state: {},\n });\n}\nexport function TableOfContentsLink<TAs extends ElementType = \"a\">(\n props: TableOfContentsLinkProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n level = 2,\n selected,\n style,\n ...rest\n } = props as TableOfContentsLinkProps<\"a\">;\n const current = selected ?? rest[\"aria-current\"] === \"location\";\n return useRenderElement({\n as,\n render,\n defaultTag: \"a\",\n props: {\n ...rest,\n style: { ...style, \"--uiify-toc-level\": level } as CSSProperties,\n \"data-part\": \"link\",\n \"data-selected\": current ? \"\" : undefined,\n ...(selected === undefined ? {} : { \"aria-current\": selected ? \"location\" : undefined }),\n },\n state: { selected: current },\n });\n}\n\nexport const TableOfContents = {\n Root: TableOfContentsRoot,\n Trigger: TableOfContentsTrigger,\n Rail: TableOfContentsRail,\n Indicator: TableOfContentsIndicator,\n Content: TableOfContentsContent,\n List: TableOfContentsList,\n Link: TableOfContentsLink,\n};\n\nTableOfContentsTrigger.displayName = \"TableOfContentsTrigger\";\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ElementType, ReactElement } from "react";
|
|
2
|
+
import { TableOfContentsRail as NativeRail, TableOfContentsList as NativeList } from "../TableOfContents.js";
|
|
3
|
+
import { TableOfContentsClientTrigger, TableOfContentsClientContent, TableOfContentsClientLink, TableOfContentsClientIndicator } from "./TableOfContentsClientParts.js";
|
|
4
|
+
import type { TableOfContentsClientRootProps } from "../types.js";
|
|
5
|
+
export declare function TableOfContentsClientRoot<TAs extends ElementType = "nav">(props: TableOfContentsClientRootProps<TAs>): ReactElement;
|
|
6
|
+
export declare namespace TableOfContentsClientRoot {
|
|
7
|
+
var displayName: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const TableOfContents: {
|
|
10
|
+
Root: typeof TableOfContentsClientRoot;
|
|
11
|
+
Trigger: typeof TableOfContentsClientTrigger;
|
|
12
|
+
Rail: typeof NativeRail;
|
|
13
|
+
Content: typeof TableOfContentsClientContent;
|
|
14
|
+
List: typeof NativeList;
|
|
15
|
+
Link: typeof TableOfContentsClientLink;
|
|
16
|
+
Indicator: typeof TableOfContentsClientIndicator;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=TableOfContentsClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableOfContentsClient.d.ts","sourceRoot":"","sources":["../../../../src/components/table-of-contents/client/TableOfContentsClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAiC,MAAM,OAAO,CAAC;AAMtF,OAAO,EACL,mBAAmB,IAAI,UAAU,EACjC,mBAAmB,IAAI,UAAU,EAClC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,EAAE,8BAA8B,EAA+B,MAAM,aAAa,CAAC;AAE/F,wBAAgB,yBAAyB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACvE,KAAK,EAAE,8BAA8B,CAAC,GAAG,CAAC,GACzC,YAAY,CA4Gd;yBA9Ge,yBAAyB;;;AA+GzC,eAAO,MAAM,eAAe;;;;;;;;CAQ3B,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { useControllableState } from "../../../hooks/use-controllable-state.js";
|
|
5
|
+
import { useEventCallback } from "../../../hooks/use-event-callback.js";
|
|
6
|
+
import { useMergedRefs } from "../../../hooks/use-merged-refs.js";
|
|
7
|
+
import { useIsomorphicLayoutEffect } from "../../../hooks/use-isomorphic-layout-effect.js";
|
|
8
|
+
import { useRenderElement } from "../../../core/render.js";
|
|
9
|
+
import {
|
|
10
|
+
TableOfContentsRail as NativeRail,
|
|
11
|
+
TableOfContentsList as NativeList
|
|
12
|
+
} from "../TableOfContents.js";
|
|
13
|
+
import { observeTableOfContents } from "../scrollspy.js";
|
|
14
|
+
import {
|
|
15
|
+
TableOfContentsClientTrigger,
|
|
16
|
+
TableOfContentsClientContent,
|
|
17
|
+
TableOfContentsClientLink,
|
|
18
|
+
TableOfContentsClientIndicator
|
|
19
|
+
} from "./TableOfContentsClientParts.js";
|
|
20
|
+
import { TableOfContentsContext } from "./table-of-contents-context.js";
|
|
21
|
+
import { attachTableOfContentsInteractions } from "./table-of-contents-interactions.js";
|
|
22
|
+
import { attachTableOfContentsPointer } from "./table-of-contents-pointer.js";
|
|
23
|
+
function TableOfContentsClientRoot(props) {
|
|
24
|
+
const {
|
|
25
|
+
as,
|
|
26
|
+
render,
|
|
27
|
+
ref,
|
|
28
|
+
children,
|
|
29
|
+
onClick,
|
|
30
|
+
scrollSpy = true,
|
|
31
|
+
scrollTarget,
|
|
32
|
+
contentTarget,
|
|
33
|
+
offset = 0,
|
|
34
|
+
value: controlledValue,
|
|
35
|
+
defaultValue = null,
|
|
36
|
+
onValueChange,
|
|
37
|
+
open: controlledOpen,
|
|
38
|
+
defaultOpen = false,
|
|
39
|
+
onOpenChange,
|
|
40
|
+
openOnHover = true,
|
|
41
|
+
openDelay = 100,
|
|
42
|
+
closeDelay = 200,
|
|
43
|
+
...rest
|
|
44
|
+
} = props;
|
|
45
|
+
const rootRef = useRef(null), mergedRef = useMergedRefs(rootRef, ref);
|
|
46
|
+
const [value, setValue] = useControllableState({
|
|
47
|
+
value: controlledValue,
|
|
48
|
+
defaultValue,
|
|
49
|
+
onChange: onValueChange
|
|
50
|
+
});
|
|
51
|
+
const [open, setOpen] = useControllableState({
|
|
52
|
+
value: controlledOpen,
|
|
53
|
+
defaultValue: defaultOpen,
|
|
54
|
+
onChange: onOpenChange
|
|
55
|
+
});
|
|
56
|
+
const [documentUrl, setDocumentUrl] = useState();
|
|
57
|
+
const ready = documentUrl !== void 0;
|
|
58
|
+
const interactions = useRef(null);
|
|
59
|
+
const getOpen = useEventCallback(() => open);
|
|
60
|
+
const controlled = controlledOpen !== void 0;
|
|
61
|
+
useIsomorphicLayoutEffect(() => {
|
|
62
|
+
const root = rootRef.current, panel = root?.querySelector('[data-part="content"]');
|
|
63
|
+
if (!root) return;
|
|
64
|
+
setDocumentUrl(root.ownerDocument.URL);
|
|
65
|
+
if (!panel) return;
|
|
66
|
+
const actual = panel.matches(":popover-open");
|
|
67
|
+
if (!ready && controlledOpen === void 0 && actual && !open) {
|
|
68
|
+
setOpen(true);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (actual !== open) {
|
|
72
|
+
if (open) panel.showPopover();
|
|
73
|
+
else panel.hidePopover();
|
|
74
|
+
}
|
|
75
|
+
}, [open, children, controlledOpen, setOpen, ready]);
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
const root = rootRef.current;
|
|
78
|
+
if (!root) return;
|
|
79
|
+
const controller = attachTableOfContentsInteractions({
|
|
80
|
+
root,
|
|
81
|
+
getOpen,
|
|
82
|
+
requestOpen: setOpen,
|
|
83
|
+
controlled,
|
|
84
|
+
openOnHover,
|
|
85
|
+
openDelay,
|
|
86
|
+
closeDelay
|
|
87
|
+
});
|
|
88
|
+
interactions.current = controller;
|
|
89
|
+
const clearPointer = attachTableOfContentsPointer({ root });
|
|
90
|
+
return () => {
|
|
91
|
+
controller.destroy();
|
|
92
|
+
interactions.current = null;
|
|
93
|
+
clearPointer();
|
|
94
|
+
};
|
|
95
|
+
}, [controlled, openOnHover, openDelay, closeDelay, getOpen, setOpen, as]);
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
if (!scrollSpy || !rootRef.current) return;
|
|
98
|
+
const controller = observeTableOfContents({
|
|
99
|
+
root: rootRef.current,
|
|
100
|
+
scrollTarget,
|
|
101
|
+
contentTarget,
|
|
102
|
+
offset: Math.max(0, offset),
|
|
103
|
+
onValueChange: setValue
|
|
104
|
+
});
|
|
105
|
+
return () => controller.destroy();
|
|
106
|
+
}, [scrollSpy, scrollTarget, contentTarget, offset, setValue]);
|
|
107
|
+
const element = useRenderElement({
|
|
108
|
+
as,
|
|
109
|
+
render,
|
|
110
|
+
defaultTag: "nav",
|
|
111
|
+
props: {
|
|
112
|
+
...rest,
|
|
113
|
+
children,
|
|
114
|
+
ref: mergedRef,
|
|
115
|
+
"data-uiify-table-of-contents": "",
|
|
116
|
+
"data-state": ready && open ? "open" : "closed",
|
|
117
|
+
onClick(event) {
|
|
118
|
+
onClick?.(event);
|
|
119
|
+
interactions.current?.click(event.nativeEvent);
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
state: { value, open: ready && open }
|
|
123
|
+
});
|
|
124
|
+
return /* @__PURE__ */ jsx(TableOfContentsContext, { value: { value, open: ready && open, documentUrl }, children: element });
|
|
125
|
+
}
|
|
126
|
+
const TableOfContents = {
|
|
127
|
+
Root: TableOfContentsClientRoot,
|
|
128
|
+
Trigger: TableOfContentsClientTrigger,
|
|
129
|
+
Rail: NativeRail,
|
|
130
|
+
Content: TableOfContentsClientContent,
|
|
131
|
+
List: NativeList,
|
|
132
|
+
Link: TableOfContentsClientLink,
|
|
133
|
+
Indicator: TableOfContentsClientIndicator
|
|
134
|
+
};
|
|
135
|
+
TableOfContentsClientRoot.displayName = "TableOfContentsClientRoot";
|
|
136
|
+
export {
|
|
137
|
+
TableOfContents,
|
|
138
|
+
TableOfContentsClientRoot
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=TableOfContentsClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table-of-contents/client/TableOfContentsClient.tsx"],"sourcesContent":["\"use client\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { ElementType, ReactElement, MouseEvent as ReactMouseEvent } from \"react\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state.js\";\nimport { useEventCallback } from \"../../../hooks/use-event-callback.js\";\nimport { useMergedRefs } from \"../../../hooks/use-merged-refs.js\";\nimport { useIsomorphicLayoutEffect } from \"../../../hooks/use-isomorphic-layout-effect.js\";\nimport { useRenderElement } from \"../../../core/render.js\";\nimport {\n TableOfContentsRail as NativeRail,\n TableOfContentsList as NativeList,\n} from \"../TableOfContents.js\";\nimport { observeTableOfContents } from \"../scrollspy.js\";\nimport {\n TableOfContentsClientTrigger,\n TableOfContentsClientContent,\n TableOfContentsClientLink,\n TableOfContentsClientIndicator,\n} from \"./TableOfContentsClientParts.js\";\nimport { TableOfContentsContext } from \"./table-of-contents-context.js\";\nimport { attachTableOfContentsInteractions } from \"./table-of-contents-interactions.js\";\nimport { attachTableOfContentsPointer } from \"./table-of-contents-pointer.js\";\nimport type { TableOfContentsClientRootProps, TableOfContentsInteractions } from \"../types.js\";\n\nexport function TableOfContentsClientRoot<TAs extends ElementType = \"nav\">(\n props: TableOfContentsClientRootProps<TAs>,\n): ReactElement {\n const {\n as,\n render,\n ref,\n children,\n onClick,\n scrollSpy = true,\n scrollTarget,\n contentTarget,\n offset = 0,\n value: controlledValue,\n defaultValue = null,\n onValueChange,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n openOnHover = true,\n openDelay = 100,\n closeDelay = 200,\n ...rest\n } = props as TableOfContentsClientRootProps<\"nav\">;\n const rootRef = useRef<HTMLElement>(null),\n mergedRef = useMergedRefs(rootRef, ref);\n const [value, setValue] = useControllableState<string | null>({\n value: controlledValue,\n defaultValue,\n onChange: onValueChange,\n });\n const [open, setOpen] = useControllableState({\n value: controlledOpen,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n const [documentUrl, setDocumentUrl] = useState<string>();\n const ready = documentUrl !== undefined;\n const interactions = useRef<TableOfContentsInteractions | null>(null);\n const getOpen = useEventCallback(() => open);\n const controlled = controlledOpen !== undefined;\n useIsomorphicLayoutEffect(() => {\n const root = rootRef.current,\n panel = root?.querySelector<HTMLElement>('[data-part=\"content\"]');\n if (!root) return;\n setDocumentUrl(root.ownerDocument.URL);\n if (!panel) return;\n const actual = panel.matches(\":popover-open\");\n if (!ready && controlledOpen === undefined && actual && !open) {\n setOpen(true);\n return;\n }\n if (actual !== open) {\n if (open) panel.showPopover();\n else panel.hidePopover();\n }\n }, [open, children, controlledOpen, setOpen, ready]);\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n const controller = attachTableOfContentsInteractions({\n root,\n getOpen,\n requestOpen: setOpen,\n controlled,\n openOnHover,\n openDelay,\n closeDelay,\n });\n interactions.current = controller;\n const clearPointer = attachTableOfContentsPointer({ root });\n return () => {\n controller.destroy();\n interactions.current = null;\n clearPointer();\n };\n }, [controlled, openOnHover, openDelay, closeDelay, getOpen, setOpen, as]);\n useEffect(() => {\n if (!scrollSpy || !rootRef.current) return;\n const controller = observeTableOfContents({\n root: rootRef.current,\n scrollTarget,\n contentTarget,\n offset: Math.max(0, offset),\n onValueChange: setValue,\n });\n return () => controller.destroy();\n }, [scrollSpy, scrollTarget, contentTarget, offset, setValue]);\n const element = useRenderElement({\n as,\n render,\n defaultTag: \"nav\",\n props: {\n ...rest,\n children,\n ref: mergedRef,\n \"data-uiify-table-of-contents\": \"\",\n \"data-state\": ready && open ? \"open\" : \"closed\",\n onClick(event: ReactMouseEvent<HTMLElement>) {\n onClick?.(event);\n interactions.current?.click(event.nativeEvent);\n },\n },\n state: { value, open: ready && open },\n });\n return (\n <TableOfContentsContext value={{ value, open: ready && open, documentUrl }}>\n {element}\n </TableOfContentsContext>\n );\n}\nexport const TableOfContents = {\n Root: TableOfContentsClientRoot,\n Trigger: TableOfContentsClientTrigger,\n Rail: NativeRail,\n Content: TableOfContentsClientContent,\n List: NativeList,\n Link: TableOfContentsClientLink,\n Indicator: TableOfContentsClientIndicator,\n};\n\nTableOfContentsClientRoot.displayName = \"TableOfContentsClientRoot\";\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ElementType, ReactElement } from "react";
|
|
2
|
+
import type { TableOfContentsTriggerProps, TableOfContentsContentProps, TableOfContentsIndicatorProps, TableOfContentsLinkProps } from "../types.js";
|
|
3
|
+
export declare function TableOfContentsClientTrigger<TAs extends ElementType = "button">(props: TableOfContentsTriggerProps<TAs>): ReactElement;
|
|
4
|
+
export declare function TableOfContentsClientContent<TAs extends ElementType = "div">(props: TableOfContentsContentProps<TAs>): ReactElement | null;
|
|
5
|
+
export declare function TableOfContentsClientLink<TAs extends ElementType = "a">(props: TableOfContentsLinkProps<TAs>): ReactElement | null;
|
|
6
|
+
export declare function TableOfContentsClientIndicator<TAs extends ElementType = "span">(props: TableOfContentsIndicatorProps<TAs>): ReactElement | null;
|
|
7
|
+
//# sourceMappingURL=TableOfContentsClientParts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableOfContentsClientParts.d.ts","sourceRoot":"","sources":["../../../../src/components/table-of-contents/client/TableOfContentsClientParts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AASvD,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,aAAa,CAAC;AACrB,wBAAgB,4BAA4B,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EAC7E,KAAK,EAAE,2BAA2B,CAAC,GAAG,CAAC,GACtC,YAAY,CAMd;AACD,wBAAgB,4BAA4B,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC1E,KAAK,EAAE,2BAA2B,CAAC,GAAG,CAAC,GACtC,YAAY,GAAG,IAAI,CAMrB;AACD,wBAAgB,yBAAyB,CAAC,GAAG,SAAS,WAAW,GAAG,GAAG,EACrE,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GACnC,YAAY,GAAG,IAAI,CAQrB;AACD,wBAAgB,8BAA8B,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,EAC7E,KAAK,EAAE,6BAA6B,CAAC,GAAG,CAAC,GACxC,YAAY,GAAG,IAAI,CAOrB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useContext } from "react";
|
|
3
|
+
import {
|
|
4
|
+
TableOfContentsTrigger as NativeTrigger,
|
|
5
|
+
TableOfContentsContent as NativeContent,
|
|
6
|
+
TableOfContentsLink as NativeLink,
|
|
7
|
+
TableOfContentsIndicator as NativeIndicator
|
|
8
|
+
} from "../TableOfContents.js";
|
|
9
|
+
import { resolveTableOfContentsId } from "../scrollspy-selection.js";
|
|
10
|
+
import { TableOfContentsContext } from "./table-of-contents-context.js";
|
|
11
|
+
function TableOfContentsClientTrigger(props) {
|
|
12
|
+
const context = useContext(TableOfContentsContext);
|
|
13
|
+
return NativeTrigger({
|
|
14
|
+
...props,
|
|
15
|
+
...context?.documentUrl !== void 0 ? { "aria-expanded": context.open } : {}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function TableOfContentsClientContent(props) {
|
|
19
|
+
const context = useContext(TableOfContentsContext);
|
|
20
|
+
return NativeContent({
|
|
21
|
+
...props,
|
|
22
|
+
...context ? { "data-state": context.open ? "open" : "closed" } : {}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function TableOfContentsClientLink(props) {
|
|
26
|
+
const context = useContext(TableOfContentsContext);
|
|
27
|
+
const id = resolveTableOfContentsId(props.href, context?.documentUrl ?? "https://uiify.invalid/");
|
|
28
|
+
return NativeLink({
|
|
29
|
+
...props,
|
|
30
|
+
"data-uiify-toc-value": id ?? void 0,
|
|
31
|
+
...context ? { selected: id !== null && context.value === id } : {}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function TableOfContentsClientIndicator(props) {
|
|
35
|
+
const context = useContext(TableOfContentsContext);
|
|
36
|
+
return NativeIndicator({
|
|
37
|
+
...props,
|
|
38
|
+
"data-uiify-toc-value": props.value,
|
|
39
|
+
...context ? { selected: context.value === props.value } : {}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
TableOfContentsClientContent,
|
|
44
|
+
TableOfContentsClientIndicator,
|
|
45
|
+
TableOfContentsClientLink,
|
|
46
|
+
TableOfContentsClientTrigger
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=TableOfContentsClientParts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table-of-contents/client/TableOfContentsClientParts.tsx"],"sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport type { ElementType, ReactElement } from \"react\";\nimport {\n TableOfContentsTrigger as NativeTrigger,\n TableOfContentsContent as NativeContent,\n TableOfContentsLink as NativeLink,\n TableOfContentsIndicator as NativeIndicator,\n} from \"../TableOfContents.js\";\nimport { resolveTableOfContentsId } from \"../scrollspy-selection.js\";\nimport { TableOfContentsContext } from \"./table-of-contents-context.js\";\nimport type {\n TableOfContentsTriggerProps,\n TableOfContentsContentProps,\n TableOfContentsIndicatorProps,\n TableOfContentsLinkProps,\n} from \"../types.js\";\nexport function TableOfContentsClientTrigger<TAs extends ElementType = \"button\">(\n props: TableOfContentsTriggerProps<TAs>,\n): ReactElement {\n const context = useContext(TableOfContentsContext);\n return NativeTrigger({\n ...props,\n ...(context?.documentUrl !== undefined ? { \"aria-expanded\": context.open } : {}),\n });\n}\nexport function TableOfContentsClientContent<TAs extends ElementType = \"div\">(\n props: TableOfContentsContentProps<TAs>,\n): ReactElement | null {\n const context = useContext(TableOfContentsContext);\n return NativeContent({\n ...props,\n ...(context ? { \"data-state\": context.open ? \"open\" : \"closed\" } : {}),\n });\n}\nexport function TableOfContentsClientLink<TAs extends ElementType = \"a\">(\n props: TableOfContentsLinkProps<TAs>,\n): ReactElement | null {\n const context = useContext(TableOfContentsContext);\n const id = resolveTableOfContentsId(props.href, context?.documentUrl ?? \"https://uiify.invalid/\");\n return NativeLink({\n ...props,\n \"data-uiify-toc-value\": id ?? undefined,\n ...(context ? { selected: id !== null && context.value === id } : {}),\n } as TableOfContentsLinkProps<TAs>);\n}\nexport function TableOfContentsClientIndicator<TAs extends ElementType = \"span\">(\n props: TableOfContentsIndicatorProps<TAs>,\n): ReactElement | null {\n const context = useContext(TableOfContentsContext);\n return NativeIndicator({\n ...props,\n \"data-uiify-toc-value\": props.value,\n ...(context ? { selected: context.value === props.value } : {}),\n } as TableOfContentsIndicatorProps<\"span\">);\n}\n"],"mappings":";AACA,SAAS,kBAAkB;AAE3B;AAAA,EACE,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,4BAA4B;AAAA,OACvB;AACP,SAAS,gCAAgC;AACzC,SAAS,8BAA8B;AAOhC,SAAS,6BACd,OACc;AACd,QAAM,UAAU,WAAW,sBAAsB;AACjD,SAAO,cAAc;AAAA,IACnB,GAAG;AAAA,IACH,GAAI,SAAS,gBAAgB,SAAY,EAAE,iBAAiB,QAAQ,KAAK,IAAI,CAAC;AAAA,EAChF,CAAC;AACH;AACO,SAAS,6BACd,OACqB;AACrB,QAAM,UAAU,WAAW,sBAAsB;AACjD,SAAO,cAAc;AAAA,IACnB,GAAG;AAAA,IACH,GAAI,UAAU,EAAE,cAAc,QAAQ,OAAO,SAAS,SAAS,IAAI,CAAC;AAAA,EACtE,CAAC;AACH;AACO,SAAS,0BACd,OACqB;AACrB,QAAM,UAAU,WAAW,sBAAsB;AACjD,QAAM,KAAK,yBAAyB,MAAM,MAAM,SAAS,eAAe,wBAAwB;AAChG,SAAO,WAAW;AAAA,IAChB,GAAG;AAAA,IACH,wBAAwB,MAAM;AAAA,IAC9B,GAAI,UAAU,EAAE,UAAU,OAAO,QAAQ,QAAQ,UAAU,GAAG,IAAI,CAAC;AAAA,EACrE,CAAkC;AACpC;AACO,SAAS,+BACd,OACqB;AACrB,QAAM,UAAU,WAAW,sBAAsB;AACjD,SAAO,gBAAgB;AAAA,IACrB,GAAG;AAAA,IACH,wBAAwB,MAAM;AAAA,IAC9B,GAAI,UAAU,EAAE,UAAU,QAAQ,UAAU,MAAM,MAAM,IAAI,CAAC;AAAA,EAC/D,CAA0C;AAC5C;","names":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { TableOfContents, TableOfContentsClientRoot as TableOfContentsRoot, } from "./TableOfContentsClient.js";
|
|
2
|
+
export { TableOfContentsClientTrigger as TableOfContentsTrigger, TableOfContentsClientContent as TableOfContentsContent, TableOfContentsClientLink as TableOfContentsLink, TableOfContentsClientIndicator as TableOfContentsIndicator, } from "./TableOfContentsClientParts.js";
|
|
3
|
+
export { TableOfContentsRail, TableOfContentsList } from "../TableOfContents.js";
|
|
4
|
+
export type { TableOfContentsClientRootOwnProps, TableOfContentsClientRootProps, TableOfContentsLevel, TableOfContentsTriggerProps, TableOfContentsRailProps, TableOfContentsContentProps, TableOfContentsListProps, TableOfContentsLinkProps, TableOfContentsIndicatorProps, } from "../types.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/table-of-contents/client/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,yBAAyB,IAAI,mBAAmB,GACjD,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,4BAA4B,IAAI,sBAAsB,EACtD,4BAA4B,IAAI,sBAAsB,EACtD,yBAAyB,IAAI,mBAAmB,EAChD,8BAA8B,IAAI,wBAAwB,GAC3D,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjF,YAAY,EACV,iCAAiC,EACjC,8BAA8B,EAC9B,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
TableOfContents,
|
|
4
|
+
TableOfContentsClientRoot
|
|
5
|
+
} from "./TableOfContentsClient.js";
|
|
6
|
+
import {
|
|
7
|
+
TableOfContentsClientTrigger,
|
|
8
|
+
TableOfContentsClientContent,
|
|
9
|
+
TableOfContentsClientLink,
|
|
10
|
+
TableOfContentsClientIndicator
|
|
11
|
+
} from "./TableOfContentsClientParts.js";
|
|
12
|
+
import { TableOfContentsRail, TableOfContentsList } from "../TableOfContents.js";
|
|
13
|
+
export {
|
|
14
|
+
TableOfContents,
|
|
15
|
+
TableOfContentsClientContent as TableOfContentsContent,
|
|
16
|
+
TableOfContentsClientIndicator as TableOfContentsIndicator,
|
|
17
|
+
TableOfContentsClientLink as TableOfContentsLink,
|
|
18
|
+
TableOfContentsList,
|
|
19
|
+
TableOfContentsRail,
|
|
20
|
+
TableOfContentsClientRoot as TableOfContentsRoot,
|
|
21
|
+
TableOfContentsClientTrigger as TableOfContentsTrigger
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table-of-contents/client/index.ts"],"sourcesContent":["\"use client\";\nexport {\n TableOfContents,\n TableOfContentsClientRoot as TableOfContentsRoot,\n} from \"./TableOfContentsClient.js\";\nexport {\n TableOfContentsClientTrigger as TableOfContentsTrigger,\n TableOfContentsClientContent as TableOfContentsContent,\n TableOfContentsClientLink as TableOfContentsLink,\n TableOfContentsClientIndicator as TableOfContentsIndicator,\n} from \"./TableOfContentsClientParts.js\";\nexport { TableOfContentsRail, TableOfContentsList } from \"../TableOfContents.js\";\nexport type {\n TableOfContentsClientRootOwnProps,\n TableOfContentsClientRootProps,\n TableOfContentsLevel,\n TableOfContentsTriggerProps,\n TableOfContentsRailProps,\n TableOfContentsContentProps,\n TableOfContentsListProps,\n TableOfContentsLinkProps,\n TableOfContentsIndicatorProps,\n} from \"../types.js\";\n"],"mappings":";AACA;AAAA,EACE;AAAA,EAC6B;AAAA,OACxB;AACP;AAAA,EACkC;AAAA,EACA;AAAA,EACH;AAAA,EACK;AAAA,OAC7B;AACP,SAAS,qBAAqB,2BAA2B;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-of-contents-context.d.ts","sourceRoot":"","sources":["../../../../src/components/table-of-contents/client/table-of-contents-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AACrE,eAAO,MAAM,sBAAsB,mEAAgE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table-of-contents/client/table-of-contents-context.ts"],"sourcesContent":["\"use client\";\nimport { createContext } from \"react\";\nimport type { TableOfContentsClientContextValue } from \"../types.js\";\nexport const TableOfContentsContext = createContext<TableOfContentsClientContextValue | null>(null);\n"],"mappings":";AACA,SAAS,qBAAqB;AAEvB,MAAM,yBAAyB,cAAwD,IAAI;","names":[]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { TableOfContentsInteractionOptions, TableOfContentsInteractions } from "../types.js";
|
|
2
|
+
export declare function attachTableOfContentsInteractions({ root, getOpen, requestOpen, controlled, openOnHover, openDelay, closeDelay, }: TableOfContentsInteractionOptions): TableOfContentsInteractions;
|
|
3
|
+
//# sourceMappingURL=table-of-contents-interactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-of-contents-interactions.d.ts","sourceRoot":"","sources":["../../../../src/components/table-of-contents/client/table-of-contents-interactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iCAAiC,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAElG,wBAAgB,iCAAiC,CAAC,EAChD,IAAI,EACJ,OAAO,EACP,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,UAAU,GACX,EAAE,iCAAiC,GAAG,2BAA2B,CA+JjE"}
|